仅绘制相机所见内容的算法?

Posted

技术标签:

【中文标题】仅绘制相机所见内容的算法?【英文标题】:Algorithm to only draw what the camera sees? 【发布时间】:2010-09-06 22:14:27 【问题描述】:

我正在使用 OpenGL 制作 3D FPS,这里是它的基本工作原理。游戏是一个 3D 立方体阵列。我知道玩家当前立方体的位置,以及相机 x、y、z 和我也知道相机的 x、y、z 旋转。现在我只是在玩家周围制作一个正方形并渲染它,然后添加远处的雾。但问题是,我仍在渲染玩家所在的所有内容。我怎么能有选择地只渲染玩家看到的东西,而不是像我现在所做的那样渲染 X 半径内的所有东西。

谢谢

【问题讨论】:

【参考方案1】:

如果我没听错的话,你说的是截锥体剔除。我建议你看看这个tutorial。他们提供了很好的演示并详细解释了所有内容。

【讨论】:

【参考方案2】:

这听起来你需要查看culling concepts。

【讨论】:

【参考方案3】:

玩家可以通过迷宫的立方体房间吗?如果是这样,并且假设房间在游戏过程中是静止的,您可以使用 BSP tree 按深度顺序遍历场景,当您经过玩家时停止。

【讨论】:

以上是关于仅绘制相机所见内容的算法?的主要内容,如果未能解决你的问题,请参考以下文章

制作一个按钮,其背景和内容仅在指定的内部矩形内绘制(而不是在其所有框架内)

用Bresenham线算法绘制线条

Android 绘制相机预览

Android - 在相机顶部绘制 OpenGL 图像

Three.js 相机仅聚焦在 Origin

在OpenGL中绘制一个相机对齐的圆