我正在使用 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 <-- 仍然不知道它们是什么意思)。
最佳答案
这只不过是一个例子;不要将顶点格式作为福音甚至建议。事实上,在任何严肃的应用程序中,都不会使用这么多 float 。
无论如何,如果您想删除这些属性,那也没关系。这取决于你。
至于为什么一个人可能需要 3 组纹理坐标,那是因为一个人具有三组到表面的纹理映射。这样做是有原因的,但在实践中很少见。
此外,OpenGL 有一种不同的命名其纹理坐标的方式。 OpenGL 使用的是“ST”,而不是像大多数其他事物那样使用“UV”。
关于c - 我应该为 Sprite 创建什么样的顶点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6990195/