我正在寻找一种从当前 3D 场景的顶部创建第二个 View 的方法。我想尽可能简单地做到这一点。基本思想是您有一个子窗口,将显示设置的顶 View 。
我研究过 openGL 中的子窗口,但问题是您必须重绘所有内容(基本上以 2 个不同角度的场景结束 = 不好)。也因为这将用于名为“塔盒堆叠”的 3D 游戏(你必须将盒子放在彼此的顶部并 build 一座高塔)它不可能使用子窗口的方式来做到这一点(因为你会得到 2 个场景具有不同的 block /位置/ Action /...)
那么我怎样才能将“第二台摄像机”添加到我当前的场景,然后将其放置在顶部。
最佳答案
I've looked into subwindows in openGL but the problem is you have to redraw everything (basically ending up with 2 scene's with different angle = not good)
这实际上是使用 OpenGL 执行此操作的唯一方法。
So how can I add a "second camera" to my current scene and then position it on top.
OpenGL 没有相机。它甚至没有场景。 OpenGL 仅绘制非常简单的形状:点、线和三角形。除此之外,OpenGL 不了解几何或复杂场景。
场景管理由您决定,绘制一个场景的多个 View 由您来实现。
更新:伪代码
draw_scene:
for o in objects:
glPushMatrix()
glMultMatrix(o.transform)
o.draw()
glPopMatrix()
render_main_view:
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
glFrustum(...)
glMatrixMode(GL_MODELVIEW)
glLoadIdentity()
glMultMatrix(main_camera_transform)
render_secondary_view:
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
glFrustum(...)
glMatrixMode(GL_MODELVIEW)
glLoadIdentity()
glMultMatrix(secondary_camera_transform)
scissor_viewport(x,y,w,h)
glScissor(x,y,w,h)
glViewport(x,y,w,h)
render:
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
glEnable(GL_SCISSOR_TEST)
scissor_viewport(main_viewport.x,main_viewport.y,main_viewport.w,main_viewport.h)
render_main_view()
glClear(GL_DEPTH_BUFFER_BIT)
scissor_viewport(secondary_viewport.x,secondary_viewport.y,secondary_viewport.w,secondary_viewport.h)
render_secondary_view()
关于c++ - 当前设置的 OpenGL C++ 小 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9646034/