3D迷宫OpenGL实现

时间:2013-05-05 16:54:16

标签: c++ c opengl graphics 3d

我正在尝试在opengl中创建一个简单的3D迷宫。我最初的想法是有一个立方体网格,每个立方体的一些面是透明的(对于走廊)。但是,我在想办法有效地做到这一点时遇到了一些麻烦。我不想为我的迷宫分别定义每个单独的立方体,这将是一堆巨大的代码(我认为)。

另外,我是否每次都需要创建新的多维数据集,或者我可以定义一个多维数据集并简单地翻译它,同时重新绘制它以形成迷宫?

1 个答案:

答案 0 :(得分:2)

如你所说,定义每个立方体会产生大量代码。也不可能实现随机生成的迷宫。对迷宫进行任何改变都会非常累人。

我会选择“定义一个多维数据集并简单地翻译它”。定义一个函数,该函数渲染一个立方体,其中心位于原点,并根据其世界坐标进行平移。

我认为你根本不应该使用透明度。如果有一个立方体,只需渲染一个立方体,如果没有立方体则不需要。

for(i=0; i<width; i++){
    for(j=0; j<height; j++){
        if(maze[i][j] == 1){  // Means there is a cube there
            glPushMatrix();
            glTranslatef(j * scale, 0, i * scale);
            DrawCube();
            glPopMatrix();
        }
    }
}

我想你也可以使用类似的结构进行碰撞检测。