2016-03-25 3 views

Antwort

1

Das fühlt sich an wie ein Hack, aber man konnte sich ausdrücklich stride Parameter von glVertexAttribPointer auf die Größe eines einzelnen float eingestellt.

Grundsätzlich wird immer, wenn der GL einen Scheitelpunkt mit dem Index i abruft, die Adresse offset + i * stride verwendet. Die 0, die Sie gerade als stride-Parameter verwenden, ist eine bequeme Abkürzung, die ein dicht gepacktes Array bedeutet, also in Ihrem Fall 2 * sizeof(GLfloat) entspricht, aber es gibt nichts im GL, das Sie davon abhält, einen Schritt unter diesen Wert von strict zu setzen packed array:

glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, sizeof(GLfloat), 0); 
+0

Das beantwortet die Frage, byt Ich habe immer noch ein Problem, was ich will, ist der Zugriff auf die vorherigen Vertex-Werte im Shader, ich brauche nur die letzte. Du hast recht, das hat eine Art Hack, gibt es einen besseren Weg? – user2170324

+0

@derhass, wenn Sie den Schritt in dicht gepackten vec2-Array einstellen müssen, sollte der Schritt sein: 2 * sizeof (GLfloat) nicht sizeof (GLfloat) wie in Ihrem Code. – wangdq

+0

@wangdq: das ist wahr, aber darum ging es nicht bei der Frage - und der Antwort -. Ich habe ausdrücklich gesagt, "aber es gibt nichts im GL, das Sie davon abhält, einen Schritt unter diesen Wert eines dicht gepackten Arrays zu setzen:". – derhass

Verwandte Themen