如何避免在iPhone上的OpenGL中裁剪显示

如何避免在iPhone上的OpenGL中裁剪显示,iphone,ios,opengl-es,calayer,Iphone,Ios,Opengl Es,Calayer,这是一个长期的问题,我需要你们的集体天才来解决。我正在从相机拍摄图像并将其输出到opengl。通过屏幕外FBO输出正确记录图像 但是,我要在屏幕上显示的输出总是在右上角进行裁剪/放大。例如,如果我拍摄一个四窗格窗口的照片,从屏幕外缓冲区保存的图像将显示整个窗口,但屏幕上的实时图像只是左上方的窗格 我尝试过更改glviewport以及将顶点数据相乘,但都没有效果。唯一有效的方法是将EagleLayer的contentScaleFactor设置为1.4或更高的值。我认为,这种黑客行为的实质是将FBO

这是一个长期的问题,我需要你们的集体天才来解决。我正在从相机拍摄图像并将其输出到opengl。通过屏幕外FBO输出正确记录图像

但是,我要在屏幕上显示的输出总是在右上角进行裁剪/放大。例如,如果我拍摄一个四窗格窗口的照片,从屏幕外缓冲区保存的图像将显示整个窗口,但屏幕上的实时图像只是左上方的窗格

我尝试过更改glviewport以及将顶点数据相乘,但都没有效果。唯一有效的方法是将EagleLayer的contentScaleFactor设置为1.4或更高的值。我认为,这种黑客行为的实质是将FBO增加1.4倍,这对性能没有好处。你知道我如何在不使用这种技术的情况下正确地输出到屏幕上吗?一定是我没找到的很简单的东西。
谢谢大家。

有趣的是,仅仅向stackoverflow发帖就能解决我的问题。结果表明,由于glGenFramebuffers被调用了两次,所以背景宽度和高度设置错误。修复该问题后,可以将glviewport设置为显示宽度和高度来工作。

一点代码将非常有用。另外,数据流的图表或描述也很好。