Opengl es 顶点、法线和tex坐标索引

Opengl es 顶点、法线和tex坐标索引,opengl-es,opengl-es-2.0,Opengl Es,Opengl Es 2.0,我有一个关于元素和顶点,法线和坐标索引的问题 如果我有几何顶点、顶点法线和纹理顶点,每个都有自己的索引 我可以使用哪些索引 如果我有此代码: glVertexAttribPointer(vertexHandle, 3, GL_FLOAT, GL_FALSE, 0, (const GLvoid*) &teapotVertices[0]); glVertexAttribPointer(normalHandle, 3, GL_FLOAT, GL_FALSE, 0,

我有一个关于元素和顶点,法线和坐标索引的问题

如果我有几何顶点、顶点法线和纹理顶点,每个都有自己的索引

我可以使用哪些索引

如果我有此代码:

glVertexAttribPointer(vertexHandle, 3, GL_FLOAT, GL_FALSE, 0,
        (const GLvoid*) &teapotVertices[0]);
glVertexAttribPointer(normalHandle, 3, GL_FLOAT, GL_FALSE, 0,
        (const GLvoid*) &teapotNormals[0]);
glVertexAttribPointer(textureCoordHandle, 2, GL_FLOAT, GL_FALSE, 0,
        (const GLvoid*) &teapotTexCoords[0]);

glEnableVertexAttribArray(vertexHandle);
glEnableVertexAttribArray(normalHandle);
glEnableVertexAttribArray(textureCoordHandle);

glBindTexture(GL_TEXTURE_2D, thisTexture->mTextureID);
glUniformMatrix4fv(mvpMatrixHandle, 1, GL_FALSE,
        (GLfloat*)&modelViewProjection.data[0] );
glDrawElements(GL_TRIANGLES, NUM_TEAPOT_OBJECT_INDEX, GL_UNSIGNED_SHORT,
        (const GLvoid*) &teapotIndices[0]);
茶壶应该装什么


谢谢。

我不太明白你的问题

TeapotIndex应该是一组索引,指示要渲染顶点的顺序

例如,假设您有一个由三个顶点(三角形)组成的对象:

您可以在索引集合/数组中指定渲染它们的顺序。假设要逆时针渲染三角形,则将索引指定为

0,2,1
GLDraweElements将首先绘制左下角,然后绘制右下角,最后绘制上角

当然,当只涉及一个三角形时,这没有多大意义,但是假设您想要添加另一个向下镜像第一个三角形的三角形。这意味着它们在第一个三角形的底部接触。不需要再次为该顶点指定三个顶点,只需添加与顶点不同的顶点:

0.0, 0.0, 0.0 //index 0, lower left corner for first triangle
0.5, 0.5, 0.0 //index 1, top corner for first triangle
1.0, 0.0, 0.0 //index 2, lower right corner for first triangle
0.5, -0.5, 0.0 //new: index 3, bottom corner of a "mirrored" triangle
你会有这样的指数:

0,2,1, 2,0,3
//     ^^^^^ second triangle vertex indices

看,我们添加了一个只有一个新顶点的第二个三角形,并将其中两个旧顶点重新用于新三角形。

我不确定我是否理解您的问题

TeapotIndex应该是一组索引,指示要渲染顶点的顺序

例如,假设您有一个由三个顶点(三角形)组成的对象:

您可以在索引集合/数组中指定渲染它们的顺序。假设要逆时针渲染三角形,则将索引指定为

0,2,1
GLDraweElements将首先绘制左下角,然后绘制右下角,最后绘制上角

当然,当只涉及一个三角形时,这没有多大意义,但是假设您想要添加另一个向下镜像第一个三角形的三角形。这意味着它们在第一个三角形的底部接触。不需要再次为该顶点指定三个顶点,只需添加与顶点不同的顶点:

0.0, 0.0, 0.0 //index 0, lower left corner for first triangle
0.5, 0.5, 0.0 //index 1, top corner for first triangle
1.0, 0.0, 0.0 //index 2, lower right corner for first triangle
0.5, -0.5, 0.0 //new: index 3, bottom corner of a "mirrored" triangle
你会有这样的指数:

0,2,1, 2,0,3
//     ^^^^^ second triangle vertex indices
看,我们已经添加了一个完整的第二个三角形,只有一个新的顶点,并且为新三角形重新使用了两个旧的顶点