Ist es sicher, ein Vertex-Array auf dem Stack zu verwenden, wenn Sie glVertexPointer()
(und die anderen verwandten Funktionen) aufrufen? Es ist mir unklar, wenn OpenGL tatsächlich die Daten von der übergebenen Struktur kopiert.
Wenn es nicht sicher ist, woher wissen Sie dann, wann es sicher ist, die Struktur, die Sie an glVertexPointer()
weitergegeben haben, zu zerstören / wiederzuverwenden?
(Keine VBOs verwenden)
Im Fall des Vertex-Arrays wird der Zeiger während der Ausführung von glDrawElements()
und Freunden dereferenziert, vorausgesetzt, GL_VERTEX_ARRAY
wurde glEnableClientState()
ed.
Sobald glDrawElements()
zurückgibt, hat OpenGL alle Daten, die es benötigt, also können Sie free()
frei wählen.
Bei VBOs geben Sie niemals einen echten Zeiger ein, also spielt es keine Rolle:)
Also sollte so etwas funktionieren:
%Vor%glVertexPointer kopiert niemals Daten, sondern setzt nur einen Zeiger, der beim Aufruf von glDrawArrays und glDrawElements gelesen und an die GPU übertragen wird. Nachdem diese Funktionen zurückgegeben wurden, können die Daten freigegeben werden.
Tags und Links opengl