OpenGL ES 2: Uniformen und Attribute

8

Es ist bekannt, dass Uniform und Attribute Register in GPU sind. Und meine Frage ist, was passiert, wenn verschiedene Programme gebunden sind? Gewährleistet der Standard, dass zuvor gesetzte Uniformen und / oder Attributzeiger neu geladen werden oder ich sie auf jeden Fall manuell neu laden muss? Ich möchte Caching-System erstellen. Es scheint für mich, dass Attribute nicht neu geladen werden (ja?), Wenn Programm Rebound und was ist mit Uniformen? Lädt der GL ES-Treiber ihre Werte für mich neu?

    
demi 24.02.2010, 11:17
quelle

1 Antwort

17

Nein, es ist nicht bekannt, dass Uniformen und Attribute Register in der GPU sind. Tatsächlich ist es zumindest in einer weit verbreiteten OpenGL ES 2.0 GPU falsch.

Eine Uniform ist Null, wenn sie nicht explizit initialisiert wird. Die einheitlichen Werte sind Zustände, die dem Programmobjekt folgen. Mit anderen Worten, wenn Sie für ein bestimmtes Programmobjekt eine Uniformität festlegen, können Sie davon ausgehen, dass der Wert über die Verwendung des gleichen Programmobjekts hinweg erhalten bleibt, aber Sie können nicht auf eine Uniform an einem bestimmten Ort angewiesen sein über mehrere Programmobjekte hinweg erhalten bleiben. In der Tat würde eine OpenGL ES-Implementierung, die dies tut, die Spezifikation verletzen. Dies ist kein undefiniertes Verhalten.

Attributzeiger sind globale Kontextzustände, und Sie können sich darauf verlassen, dass diese zwischen Aufrufen desselben OpenGL ES-Kontextes erhalten bleiben. Das gleiche gilt für die aktuellen Attributwerte (festgelegt über die glVertexAttribute * -Funktionen)

    
kusma 24.02.2010, 11:26
quelle

Tags und Links