我想尝试为我现有的OpenGL应用程序实现一些HCI。如果可能的话,菜单应该出现在我的3D图形的前面,这些图形将在后台。
我想在“相机”前面直接画一个正方形,然后在“基座”正方形的顶部绘制纹理或更多的原型。
当菜单处于活动状态时,相机无法移动,因此相机不会从菜单中移开。
这听起来对任何人来说都是远远不够,还是我在正确的轨道上?其他人怎么做呢?
答案 0 :(得分:1)
我只是glPushMatrix
,glLoadIdentity
,做你的绘图,然后是glPopMatrix
而不用担心你的相机在哪里。
您还需要禁用并重新启用深度测试,灯光等
答案 1 :(得分:1)
有GLUI图书馆这样做(没有个人经验)
或者如果你使用Qt,有办法在OpenGL模型上透明地渲染Qt小部件,还有beta支持在opengl中渲染所有Qt。
答案 2 :(得分:1)
您也可以进行所有3D渲染,然后切换到正交投影并绘制所有菜单对象。如你所建议的那样,将它全部放在大型广告牌四元组上要容易得多。
查看this exerpt,特别是“投影转换”标题。
答案 3 :(得分:1)
如上所述here,您需要在x和y中应用0.375的平移以获得像素完美对齐:
glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0, width, 0, height);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(0.375, 0.375, 0.0);
/* render all primitives at integer positions */
算法很简单:
这样做会使相机位置无关紧要 - 实际上,随着相机移动,3D部件将受到正常影响,但2D覆盖仍然保持不变。我期待这是你想要的行为。