2)我应该如何显示顶点?
诸如此类的问题表明您应该学习一些 OpenGL 教程。这些是基础知识,您需要了解它们。
对于您的问题来说,这是一个好的开始,但是您需要完成整个教程http://opengl.datenwolf.net/gltut/html/Basics/Tut01%20Following%20the%20Data.html http://opengl.datenwolf.net/gltut/html/Basics/Tut01%20Following%20the%20Data.html
1)这些指数到底是什么?
您有一个顶点列表。顶点的索引是它在该列表中的位置。您可以使用以下命令通过索引绘制顶点数组glDrawElements
根据评论更新
假设你有一个具有共享顶点的立方体(这在 OpenGL 中并不常见,但我懒得写下 24 个顶点)。
我将它们放在我的程序中的一个数组中,形成了它们的位置列表。您从文件加载它们,我将它们写入 C 数组:
GLfloat vertices[3][] = {
{-1,-1, 1},
{ 1,-1, 1},
{ 1, 1, 1},
{-1, 1, 1},
{-1,-1,-1},
{ 1,-1,-1},
{ 1, 1,-1},
{-1, 1,-1},
};
这给出了顶点索引(数组中的位置),在图片中它看起来像
为了绘制一个立方体,我们必须告诉 OpenGL 有哪些顶点,以什么顺序形成一个面。那么我们来看看这些面孔:
我们要用三角形建造那个立方体。 3 个连续的索引组成一个三角形。对于立方体来说这是
GLuint face_indices[3][] = {
{0,1,2},{2,3,0},
{1,5,6},{6,2,1},
{5,4,7},{7,6,5},
{4,0,3},{3,7,4},
{3,2,6},{6,7,2},
{4,5,0},{1,0,5}
};
然后你可以通过将 OpenGL 指向顶点数组来绘制它
glVertexPointer(3, GL_FLOAT, 0, &vertices[0][0]);
并对带有顶点的数组发出批量调用。有 6*2 = 12 个三角形,每个三角形由 3 个顶点组成,从而形成一个包含 36 个索引的列表。
glDrawElements(GL_TRIANGLES, 36, GL_UNSIGNED_INT, &face_indices[0][0]);