也许这是一个非常基本的问题,但如果没有指定,OpenGL如何知道哪3个顶点构成了一个面?如何从法线上找到它们?
答案 0 :(得分:2)
要么用索引缓冲区告诉它,要么按照你希望它们进行三角化的顺序提交顶点(这取决于绘制的原语的类型,例如GL_TRIANGLES和GL_TRIANGLE_FAN)。
假设您有两个创建四边形的三角形的顶点:
V3 - - - - - V2
- - -
- - -
- - -
V0 - - - - - V1
两个三角形的相应顶点和索引数组将是:
GLfloat vertices[4][3] = { v0, v1, v2, v3 };
GLfloat indices[6] = { 0, 1, 2, 0, 2, 3 };
您也可以简单地提交没有索引缓冲区的顶点数组:
GLfloat vertices[6][3] = { v0, v1, v2, v0, v2, v3 };
以下是一个更详细的精彩链接:http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-9-vbo-indexing/