C++ 三维迷宫的OpenGL实现

C++ 三维迷宫的OpenGL实现,c++,c,opengl,graphics,3d,C++,C,Opengl,Graphics,3d,我试图在opengl中创建一个简单的3D迷宫。我最初的想法是创建一个立方体网格,每个立方体的一些面都是透明的(用于走廊)。然而,我在想一个有效的方法时遇到了一些困难。我不想为我的迷宫分别定义每个立方体,那将是一大堆代码(我认为) 此外,我是否每次都需要创建新的多维数据集,或者我是否可以定义一个多维数据集,并在重新绘制它以形成迷宫的同时简单地对其进行转换?如您所说,单独定义每个多维数据集会造成大量的代码混乱。此外,不可能实现随机生成的迷宫。在迷宫上做任何改变都会很累 我会选择“定义一个立方体并简单

我试图在opengl中创建一个简单的3D迷宫。我最初的想法是创建一个立方体网格,每个立方体的一些面都是透明的(用于走廊)。然而,我在想一个有效的方法时遇到了一些困难。我不想为我的迷宫分别定义每个立方体,那将是一大堆代码(我认为)


此外,我是否每次都需要创建新的多维数据集,或者我是否可以定义一个多维数据集,并在重新绘制它以形成迷宫的同时简单地对其进行转换?

如您所说,单独定义每个多维数据集会造成大量的代码混乱。此外,不可能实现随机生成的迷宫。在迷宫上做任何改变都会很累

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

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

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();
        }
    }
}

for(i=0;ii)如果你想使用立方体的想法。用立方体填充整个网格,然后使用深度优先搜索()等迷宫生成算法在网格中移动,移除不再是迷宫一部分的立方体。初始化立方体的代码应该很简单。只需填充每个网格点即可。