我正在创建一个3D小行星游戏,你可以通过一些小行星导航太空船。当我点击小行星时,我会摧毁它,我希望在小行星被摧毁之前添加像你在科幻电影中看到的那样目标锁定和类似的东西。选择小行星,动画hud,破坏小行星。实现这一目标的最佳方法是什么?我应该简单地创建一些平面并仅在我需要的时候渲染它们,或者是否有另一种方法,例如当您创建文本并设置新投影以在主窗口上渲染文本时。
答案 0 :(得分:6)
首先,您必须确定小行星的屏幕位置(可能是边界)。您可以通过模拟小行星重心位置上的顶点变换管道来实现此目的。通常的方法是
p_clip = Projection · (Modelview · p)
p_ndc = p_ndc / p_ndc.w
绘制HUD叠加层需要避免误解新概念。如果您按照常见的,不好的教程之一,那么您将在窗口重塑功能中找到投影矩阵设置。那不是它所属的地方。
如果将整个视口和投影设置放入绘图功能中,事情就会变得很明显。您可以根据需要随时设置和重置视口和投影。因此,首先使用常用的投影和视口设置绘制场景。 然后清除深度缓冲区并切换到适合渲染叠加层的投影。