- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在创建一个 3d 小行星游戏,您可以在其中驾驶宇宙飞船穿过一些小行星。当我单击小行星时,我会摧毁它,我希望在小行星被摧毁之前添加一个 HUD,就像您在科幻电影中看到的那样目标锁定之类的东西。所以选择小行星,为平视显示器设置动画,摧毁小行星。实现这一目标的最佳方法是什么?我应该简单地创建一些平面并仅在需要时使它们可见,还是有另一种方法,例如当您创建文本并设置新投影以在主窗口上渲染文本时。
最佳答案
哇,哇,你在这里同时解决了几个问题。
首先,您必须确定小行星在屏幕上的位置(可能还有边界)。您可以通过在小行星的重心位置上模仿顶点变换管道来做到这一点。通常的方法是
p_clip = Projection · (Modelview · p)
p_ndc = p_ndc / p_ndc.w
绘制 HUD 叠加层需要消除新的误解。如果您遵循了其中一个常见的糟糕教程,那么您将在窗口 reshape 功能中找到投影矩阵设置。那不是它所属的地方。
如果将整个视口(viewport)和投影设置放入绘图函数中,事情就会变得显而易见。您可以根据需要随时设置和重置视口(viewport)和投影。所以首先使用您通常的投影和视口(viewport)设置绘制场景。 然后您清除深度缓冲区并切换到适合渲染叠加层的投影。
关于c++ - opengl过剩使hud,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14005957/
我试图在固定的时间间隔后依次旋转一个红色三角形和一个绿色三角形。我尝试了以下代码,但时间间隔不是常数。我无法找出问题所在。 static void display(void) { now=g
我有一些基本代码可以使用 glut 收集按键事件。 如果我按住一个键,我会触发连续事件(向下/向上/向下/向上/向下/向上/......),而不是预期的向下(一次,在开始时)及以上(一次,最后) #i
当我尝试调整过剩窗口的大小时,屏幕变为空白。 这是 reshape 回调函数的代码: void Resize(int width, int height) { CurrentWidth =
我使用最新的 freeglut 成功编译了这段代码,但我不断得到一个空白窗口,其中填充了 glClearColor 函数中指定的颜色。这个简单的程序来 self 学院提供的交互式计算机图形学教科书。我
任何人都可以解释发生了什么或没有发生什么,以便我可以更正它。到目前为止,这是来自 .cpp 文件的代码。在 Visual Studio Community 2015 中运行。 #include #i
我正在学习一个 openGL 教程,其中包括这个名为“glutCreateWindow”的函数,我的编译器(XCode 5 gcc,OSX)说它已被弃用。 还有什么选项适合替换这些“过剩*”相关函数?
我使用 OpenGL 3.3。在我的应用程序中,我将鼠标光标设置在窗口的中心(我将窗口的大小传递给“Camera”类的构造函数),但是当我调整窗口大小时(如全屏)我将光标放在左边的部分。所以,我想通过
我在为我的 GLUT 小行星游戏显示和动画多个小行星时遇到问题。我可以生成 1 ok,但是当我尝试添加更多时,输出不正确,createasteroid 不断被调用,并且出于某种原因只是在屏幕的不同部分
我认为我遇到了一个棘手的问题。我是 C++ 和 OpenGL/glut 的新手,所以要温柔!我正在编写一个独立于平台的简单程序(仅 2D)并且需要一个基本的 UI,因此我有一个生成 Button 对象
我很笨 :) 那么有人可以帮忙编写分步手册,如何安装“cairo”、“glut”并在 Windows 7 上的 VS 2010 项目 (C++) 中使用它吗? PS:最有趣的事情是我在 Linux 中
在我的 GLUT/OpenGL 练习中,我必须加载 3 个不同的对象,我给它们一个 file.m。这是通过读取该文件、创建列表并最终调用 glCallList() 来完成的。选择一个对象后,我必须如何
我正在尝试制作 gluLookAt() 函数,以便当我按下向上和向下键时,相机围绕 X 轴移动 我正在尝试我在以下位置看到的方法:http://www.lighthouse3d.com/tutoria
我是一名优秀的程序员,十分优秀!