1

我正在使用 OpenGL 和 C 创建一个 2D 渲染引擎。我正在学习 VBO 以及如何将它们用于非即时模式渲染。我一直在阅读:http ://www.opengl.org/wiki/Vertex_Buffer_Object

本教程建议以下内容:

struct MyVertex
{
float x, y, z;        //Vertex
float nx, ny, nz;     //Normal
float s0, t0;         //Texcoord0
float s1, t1;         //Texcoord1
float s2, t2;         //Texcoord2
float padding[4];
};

我不需要法线值,我不确定单个顶点如何或为什么有三个纹理坐标。

我认为我只需要顶点 (XYZ) 和一个 Texcoord (s0, t0 <-- 仍然不知道这些是什么意思)。

4

1 回答 1

1

这只不过是一个例子。不要把这种顶点格式当作福音,甚至是建议。事实上,在任何严肃的应用程序中,都不会使用这么多的浮点数。

无论如何,如果您想删除这些属性,那很好。由你决定。

至于为什么一个人可能需要 3 组纹理坐标,那是因为一个人有 3 组到表面的纹理映射。这样做是有原因的,但在实践中很少见。

此外,OpenGL 有一种不同的方式来命名其纹理坐标。OpenGL 使用“ST”,而不是像大多数其他事情那样使用“UV”。

于 2011-08-09T01:46:40.583 回答