opengl如何知道哪些顶点属于一起并构成一个面?

时间:2014-07-17 14:18:38

标签: opengl 3d

也许这是一个非常基本的问题,但如果没有指定,OpenGL如何知道哪3个顶点构成了一个面?如何从法线上找到它们?

1 个答案:

答案 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/