在“多点触控”环境中,表面上显示的任何应用程序都可以根据用户的方向旋转/缩放。实际的解决方案是在 FBO 上绘制应用程序,并绘制一个带有纹理的旋转/缩放的矩形。我认为这对性能没有好处,而且所有显卡都不提供FBO。
这个想法是沿着用户的方向裁剪渲染视口。
由于 glViewport 不能用于此目的,是否存在另一种方法来实现这一点?
(glViewport使用(x,y,宽度,高度),我想要(x,y,宽度,高度,从中心旋转?))
PS:旋转模型视图或投影矩阵不会有帮助,我想“旋转由glViewport生成的裁剪计划”。 (仅是整个场景的一部分)。
OpenGL 中无法旋转视口,您必须手动处理它。我看到以下可能的解决方案:
继续使用纹理,也许使用 glCopyTexSubImage 而不是 FBO,因为这是基本的 OpenGL 功能。如果您的目标平台是硬件加速的,那么性能应该还不错,具体取决于您桌面上需要的视口数量,因为这是当今非常常见的用例。
如果没有纹理,您可以将 glViewport 设置为旋转视口 (rB) 的屏幕对齐边界矩形 (rA)(还设置适当的剪刀测试区域)。然后绘制一个遮罩区域,可能仅在深度或模板缓冲区中,填充 (rA - rB) 区域,这将阻止在这些像素上进一步绘制。然后正常绘制您的应用程序,使用 glRotate 调整投影矩阵,以便根据 rB 正确定向渲染。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)