Wann kopiert glVertexPointer () Daten?

8

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)

    
Sean 08.08.2011, 19:09
quelle

2 Antworten

6

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%     
genpfault 08.08.2011, 19:21
quelle
1

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.

    
Matias Valdenegro 08.08.2011 19:22
quelle

Tags und Links