Frage

Ich weiß, dass zum speichern/wiederherstellen der matrix Zustand, Sie verwenden Sie standard-push/pop-Operationen.Ich habe nicht in der Lage zu finden, eine anständige Konvention zum speichern/wiederherstellen Zustand wie bei der Verwendung von glLineWidth() oder glColor4ub().

Es scheint nicht wirklich notwendig, solange Sie Ihre Linienbreite und-Farbe richtig, Wann immer Sie wollen, etwas zu zeichnen, aber ich kann sehen Sie ein Beispiel, wo Sie in Ihrem eigenen Zeichnung Funktion, eine separate Zeichnung Funktion, ändert die Linienbreite auf Sie, ohne Ihr wissen, und dann, wenn Sie gehen zu zeichnen haben, es kommen nicht wie erwartet.

Um dies zu beheben, können Sie zurücksetzen Ihre Linienbreite, nachdem Sie nennen jede Funktion, die Sie nicht wissen, was es tut, aber das scheint unelegant und ich der Meinung, dass es bereits eine Lösung für dieses, aber ich habe es verpasst, irgendwie.

Für meinen eigenen code, den ich getan habe dies am Anfang jeder Zeichnung Funktion:

GLfloat savedLineWidth = 1.0f;
glGetFloatv(GL_LINE_WIDTH, &savedLineWidth);
glLineWidth(lineWidth);

Und dann der Wiederherstellung des Staates am Ende der Zeichnung die Funktion so auf:

glLineWidth(savedLineWidth);

Nicht, dass mir wirklich helfen, wenn ich davon ausgehen, dass jede Zeichnung Funktion, ich weiß nicht, das innere ist schön und stellt den Staat auf seine eigenen.

Sollte ich von dieser Annahme ausgehen?Oder bin ich etwas fehlt?

War es hilfreich?

Lösung

Wenn dies plain OpenGL (nicht ES-Variante), dann Sie könnte drücken Sie die Attribut wie:

glPushAttrib(GL_LINE_WIDTH);
glLineWidth(2.0f);
... etc ...
glPopAttrib();

Ach, im OpenGL-ES-dieses ist nicht verfügbar.Ihr Ansatz, das abrufen und die Einstellung ist ungefähr so gut wie Sie bekommen.

Versuchen Sie einfach, reduzieren Sie die Anzahl der Zeiten, die Sie tun bekommen, da dies ein sehr zeitaufwendiger Prozess ist.Im Gegensatz zu senden, immer nicht gepuffert.

Vielleicht ist Ihr Ansatz sollte sein, nur keine Sorge.Wenn Sie möchten, legen Sie die Linienbreite dann einfach.Linienstärke sollte nicht auf zu viel.

Tough call.Hängt davon ab, was diese andere Zeichnung Funktionen.Haben Sie den code?Vielleicht könnten Sie Aussehen?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top