【发布时间】:2016-04-06 21:13:29
【问题描述】:
我正在使用 OpenGL 中的透视投影相机,并沿gluLookAt() 的行采用眼睛向上方法
我想将整个 3d 视图移动到 2d 窗口中的不同位置,如下图所示:
我知道这可以通过 glViewport() 完成,但我最终希望能够旋转 3d 视图以及翻译它,我知道这不适用于 glViewport 方法。
我也明白,采用非 glViewport 方法将需要额外的模板步骤。我将把这一步留到以后。
现在,我希望简单地转换如上图所示的 3d 视图(忽略模板问题)。
似乎平移投影矩阵是正确的方法,但是平移范围不是我所期望的。也许我需要缩放我正在使用的参数?无论如何,我希望有人可以解释如何(或多或少)模拟可平移/可旋转的 glViewport 以获得 3d 透视图。
谢谢!
【问题讨论】:
-
听起来
glViewport()是你想要的。我不知道轮换是如何与glViewport()相关联的,我不明白你为什么认为它不起作用。 -
渲染到图像,然后将 那个 渲染到屏幕上,应用适当的变换矩阵。见stackoverflow.com/questions/577639/rotating-a-glviewport
-
我正在尝试在 2D GUI 小部件内绘制 3D 透视图。在图中,我展示了正在翻译的 2D 小部件(在屏幕空间中)。 3D 视图应与 2D 小部件一起平移。如果 2D 小部件在 z 轴上旋转了 90def,则 3D 视图也应该旋转。你会如何使用 glViewport() 来做到这一点
-
我希望避免渲染到图像。如果 2D 小部件改变大小,我将不得不多次重新生成 FBO。
-
您认为调整窗口大小时会发生什么?默认帧缓冲区已调整大小,其先前的内容无效。与直接绘制到窗口相比,您更有可能从绘制到 FBO、blitting 或拉伸纹理四边形中受益。
标签: opengl graphics 3d linear-algebra