我正在尝试在 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();
}
}
}
我想您也可以使用类似的结构进行碰撞检测。