我正在尝试在opengl中创建一个简单的3D迷宫。我最初的想法是有一个立方体网格,每个立方体的一些面是透明的(对于走廊)。但是,我在想办法有效地做到这一点时遇到了一些麻烦。我不想为我的迷宫分别定义每个单独的立方体,这将是一堆巨大的代码(我认为)。
另外,我是否每次都需要创建新的多维数据集,或者我可以定义一个多维数据集并简单地翻译它,同时重新绘制它以形成迷宫?
答案 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();
}
}
}
我想你也可以使用类似的结构进行碰撞检测。