Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 旋转视口?_Python_Math_Opengl - Fatal编程技术网

Python 旋转视口?

Python 旋转视口?,python,math,opengl,Python,Math,Opengl,在“多点触控”环境中,表面上显示的任何应用程序都可以按照用户的方向旋转/缩放。实际的解决方案是在FBO上绘制应用程序,并绘制一个带有纹理的旋转/缩放矩形。我认为这对性能不好,而且所有图形卡都不提供FBO 其思想是沿用户的方向剪裁渲染视口。 既然glViewport不能用于此目的,是否存在另一种方法来实现此目的 (使用(x,y,宽度,高度),我想要(x,y,宽度,高度,从中心旋转?) PS:旋转模型视图或投影矩阵没有帮助,我想“旋转裁剪平面”由glViewport生成。(仅为全部场景的一部分)。如

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

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

(使用(x,y,宽度,高度),我想要(x,y,宽度,高度,从中心旋转?)


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

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

在OpenGL中无法使用旋转视口,必须手动处理。我看到以下可能的解决办法:

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

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


因此,如果旋转45度,矩形视口中会出现菱形场景?是的,我不想这样:)我想使用模具缓冲区旋转矩形视口(用于剪切)是个好主意。clip plane可以做同样的事情吗?你当然可以使用4个clip plane做同样的事情,我没有提到它们,因为在一些OpenGL平台上,用户clip plane的支持似乎不是很好。在较旧的硬件上,它们有一些限制,我不知道你是否可以使用4个剪辑平面,也许。。。