代码之家  ›  专栏  ›  技术社区  ›  tito

旋转视口?

  •  2
  • tito  · 技术社区  · 15 年前

    在“多点触控”环境中,表面上显示的任何应用程序都可以按照用户的方向旋转/缩放。实际的解决方案是在FBO上绘制应用程序,并绘制一个带有纹理的旋转/缩放矩形。我认为这对性能不好,而且所有图形卡都不提供FBO。

    其思想是沿用户的方向剪裁渲染视口。 既然glViewport不能用于此目的,是否存在另一种方法来实现此目的?

    PS:旋转模型视图或投影矩阵没有帮助,我想“旋转裁剪平面”由glViewport生成。(仅为全部场景的一部分)。

    2 回复  |  直到 15 年前
        1
  •  2
  •   unwind    15 年前

    如果已经设置了渲染场景的代码,请尝试添加 glRotate() 调用viewmodel矩阵设置,在渲染场景之前“旋转摄影机”。

        2
  •  2
  •   rotoglup    15 年前

    • 继续使用纹理,可能使用glCopyTexSubImage而不是FBOs,因为这是OpenGL的基本功能。如果您的目标平台是硬件加速的,那么性能应该是正常的,这取决于您桌面上需要的视口数量,因为这是当今非常常见的用例。

    • 如果没有纹理,您可以将glViewport设置为旋转视口(rB)的屏幕对齐边界矩形(rA)(还可以设置适当的剪刀测试区域)。然后绘制一个遮罩区域,可能仅在深度或模具缓冲区中,填充(rA-rB)区域,这将阻止在这些像素上进一步绘制。然后正常绘制应用程序,使用glRotate调整投影矩阵,以便根据rB正确定向渲染。