【问题标题】:3D Maze OpenGL Implementation3D迷宫OpenGL实现
【发布时间】:2013-05-06 08:38:17
【问题描述】:

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

另外,我是否需要每次都创建新的立方体,或者我可以定义一个立方体并在重新绘制它的同时简单地转换它以形成迷宫?

【问题讨论】:

  • 如果你想采用立方体的想法。用立方体填充整个网格,然后使用深度优先搜索 (en.wikipedia.org/wiki/Maze_generation_algorithm) 等迷宫生成算法在网格中移动,移除不再属于迷宫的立方体。初始化多维数据集的代码应该很简单。只需填满每个网格点。

标签: c++ c opengl graphics 3d


【解决方案1】:

如您所说,单独定义每个立方体会产生大量代码。此外,不可能实现随机生成的迷宫。而且对迷宫做任何改动都会很累。

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多