【问题标题】:How to keep something (HUD) in front of camera all the time in Opengl如何在Opengl中始终将某些东西(HUD)保持在相机前
【发布时间】:2015-09-28 13:06:02
【问题描述】:

如果我问了类似的问题,但我没有得到正确的答案,或者我可能无法理解如何实现它,请原谅我 我必须在相机前加载 HUD 我得到相机 DOF (x,y,z,apha, beta, gamma) 我只有这些信息。如何使用相机 DOF 平移相机前的 HUD。

      float x =  eye[ 0 ].X()+ 0.465;
      float y =  eye[ 0 ].Y()+ 1.0; //bringing in front of camera
     float z =  eye[ 0 ].Z()- 0.08; 

我在 x,z (上面提到的行)中添加了一些幻数,然后 HUD 就在屏幕上,但是如果移动相机,则平显会消失,因为这些幻数仅适用于该相机位置。我想知道解决办法

我的一个朋友告诉我关注

将摄像机旋转输入到 HUD_DOF_All 中,以便 HUD 旋转以面向摄像机方格。

然后在 SetInstancePosition 中使用 eyePos + eyeDir * M 我不知道如何实现这一点,或者它是否属实。 在此先感谢

【问题讨论】:

  • HUD 是 3d 对象,我加载它不是 2D 正交对象

标签: opengl camera


【解决方案1】:

如何使用相机 DOF 来平移相机前的 HUD。

您想得太复杂了:OpenGL 只绘制点、线和三角形。 OpenGL 不维护 3D 场景!

要绘制 HUD,您只需将其绘制在所需位置即可。您只需设置正确的投影和模型视图转换,将 HUD 放置在屏幕的所需位置即可。如果您使用可编程管道(着色器),则设置适当的制服。如果您使用固定功能管道,请设置一个新的、适合 HUD 的投影和模型视图矩阵,然后绘制 HUD。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-22
    • 1970-01-01
    • 2016-10-08
    • 2020-05-18
    • 1970-01-01
    • 2011-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多