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 回答