c - 我应该为 Sprite 创建什么样的顶点?

标签 c opengl sprite vbo vertex

我正在使用 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/

相关文章:

c - 通过传递给函数的指针修改结构体数组

c - L在模1000000007L中的作用是什么?

objective-c - 两个 NSOpenGLContext 之间究竟共享什么?

c++ - 使用 FBO 绘制到渲染缓冲区

python - 如何深度复制 pygame Sprite 组?

javascript - css Sprite 动画的setInterval

c - Xcode4 构建 axis2/c 库的链接器问题

使用多个线程计算素数

opengl - 如何在函数调用中跟踪 OpenGL 状态?

c# - 将所有图像缩放至控制台尺寸 XNA