我最近学会了如何在OpenGL中进行纹理处理。我一直在做的是这样的事情:
GLfloat vertexdata = {
-1.0f, -1.0f, 0.0f, 0.0, 0.0, //first three are xyz, next two are tex coords
0.0f, 1.0f, 0.0f, 0.5f, 1.0f,
...
};
然后我将其缓冲到gpu,创建/缓冲区索引,并创建一个VAO obj并使用glDrawElements
进行绘制。现在这对于像三角形或正方形这样的东西很有用,问题是现在我正在尝试绘制一个立方体。由于某种原因,这不是一个正确的工作。那是为什么?
顶点数据:
static GLfloat data[] = {
0.5f, 0.5f, 0.5f, 1.0f, 1.0f,
0.5f, -0.5f, 0.5f, 1.0f, 0.0f,
-0.5f, -0.5f, 0.5f, 0.0f, 0.0f,
-0.5f, 0.5f, 0.5f, 0.0f, 1.0f,
0.5f, 0.5f, -0.5f, 1.0f, 1.0f,
0.5f, -0.5f, -0.5f, 1.0f, 0.0f,
-0.5f, -0.5f, -0.5f, 0.0f, 0.0f,
-0.5f, 0.5f, -0.5f, 0.0f, 1.0f,
};
static GLuint indices[] = {
0, 1, 2, 3, 2, 0, //front face
0, 4, 1, 4, 5, 1, //right face
3, 2, 7, 2, 6, 7, //left face
4, 5, 6, 7, 6, 4, //back face
3, 7, 0, 0, 4, 7, //top face
2, 1, 5, 2, 6, 5, //bottom face
};
下图显示了结果(我打算让蝙蝠侠徽标在每张脸上出现一次,如下所示:http://learnopengl.com/img/getting-started/textures_combined2.png)