1

C++ でインターリーブされた頂点配列を作成します。

struct vertex
{
    GLfloat position[3];
    GLbyte normal[3];
};
std::vector< vertex > vertices;
// fill in vertices...

配列を gl バッファにコピーします。

GLuint vertsBuffer;
glBindBuffer (GL_ARRAY_BUFFER, vertsBuffer);
glBufferData (GL_ARRAY_BUFFER, vertices.size () * sizeof (vertex), vertices.data (), GL_STATIC_DRAW);

たとえば、このようなインターリーブされたデータで glNormalPointer を使用することは可能ですか?

glBindBuffer (GL_ARRAY_BUFFER, vertsBuffer);
glEnableClientState (GL_NORMAL_ARRAY);
glNormalPointer (GL_BYTE, sizeof (vertex), (GLvoid*) offsetof (vertex, normal));

または、代わりに glVertexAttribPointer を使用する必要がありますか?

4

1 に答える 1

1

gl_Normal 従来のGLSL 組み込み (セクション 7.3、49 ページ)を使用する場合、これは正常に機能するはずです。

glVertexAttribPointer()ただし、より前方互換性があります。

于 2012-06-21T17:27:39.453 に答える