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