我正在创建一个 3d 小行星游戏,您可以在其中导航宇宙飞船穿过一些小行星。当我单击小行星时,我会摧毁它,我想在小行星被摧毁之前添加一个 hud,就像你在科幻电影中看到的目标锁定和像这样的东西。所以选择小行星,动画平视显示器,摧毁小行星。实现这一目标的最佳方法是什么?我是否应该简单地创建一些平面并仅在需要时才使它们可见,或者是否有另一种方法,例如在创建文本并设置新投影以在主窗口上呈现文本时。
问问题
603 次
1 回答
6
哇,哇,你在这里一次解决了几个问题。
首先,您必须确定小行星在屏幕上的位置(可能还有边界)。您可以通过模仿小行星重心位置上的顶点变换管道来做到这一点。通常的方法是
p_clip = Projection · (Modelview · p)
p_ndc = p_ndc / p_ndc.w
绘制 HUD 叠加层需要消除新的误解。如果您遵循通常的糟糕教程之一,那么您会在窗口重塑功能中找到投影矩阵设置。那不属于它。
如果将整个视口和投影设置放入绘图函数中,事情就会变得显而易见。您可以根据需要经常设置和重置视口和投影。因此,首先使用您通常的投影和视口设置来绘制场景。然后清除深度缓冲区并切换到适合渲染叠加层的投影。
于 2012-12-22T19:50:08.100 回答