VBO职位问题OpenGL,C++



我有一个小问题,我做了一个非常基本的VBO立方体。它可以工作,但是当我尝试移动它(glTranslatef(时,它会变得混乱。

图像: https://i.stack.imgur.com/9RcEo.jpg

法典: http://pastebin.com/hKp0u0QQ

为什么会这样?此外,如果有人看到纹理问题的解决方案,那将是很好的:)

感谢您阅读:)

从评论中包括以进行澄清

我正在使用 3 个 for 循环来生成一个大立方体 (16*16*16( 但他们的位置搞砸了:/

for (int x = 0; x < 16; x++)
{ 
    for (int y = 0; y < 16; y++)
    { 
        for (int z = 0; z < 16; z++)
        { 
            VBOrender(x, y, z); 
        } 
    } 
 } 

我相信,问题来自您对glTranslate的使用。

例如,我们有 3 个立方体。我们希望将它们画在(0,0,0)(1,0,0)(2,0,0)。根据您对glTranslate的使用,将发生以下情况:

Cube 1将在调用glTranslate(0,0,0)时在(0,0,0)处绘制。

Cube 2将在调用glTranslate(1,0,0)时在(1,0,0)处绘制。

Cube 3将在调用glTranslate(2,0,0)(3,0,0)绘制。

你有没有发现出了什么问题?

glTranslate是从当前矩阵转换而来的,而不是原点。因此,您需要在每次调用VBOrender结束时将矩阵重置回原(0,0,0)。所以:

{
    glTranslate(x,y,z);
    // ...
    glTranslate(-x,-y,-z);
}

我建议使用某种矩阵堆栈或创建自己的矩阵堆栈,以避免将来出现此类问题。

最新更新