Iphone 在OpenGL ES 2中翻转CaeAglayer进行演示的最佳方法

Iphone 在OpenGL ES 2中翻转CaeAglayer进行演示的最佳方法,iphone,ios,opengl-es,avfoundation,Iphone,Ios,Opengl Es,Avfoundation,与iOS相比,打开的GL ES坐标在y轴上翻转。通过glreadpixels保存数据(到视频)可以进行适当的转换,但在UIView中显示时y轴会翻转。什么是最好的方式将其翻转回去进行演示 到目前为止,我看到了三种方式: 1) 在opengl中渲染两次,将非翻转版本发送到glreadpixels,并将翻转版本发送到CAEAGLLayer(presentRenderbuffer) 2) 翻转opengl中的像素,使其正确显示;一旦我通过glreadpixels读取了它们,移动这些位,然后将其保存到文

与iOS相比,打开的GL ES坐标在y轴上翻转。通过glreadpixels保存数据(到视频)可以进行适当的转换,但在UIView中显示时y轴会翻转。什么是最好的方式将其翻转回去进行演示

到目前为止,我看到了三种方式:

1) 在opengl中渲染两次,将非翻转版本发送到glreadpixels,并将翻转版本发送到CAEAGLLayer(presentRenderbuffer)

2) 翻转opengl中的像素,使其正确显示;一旦我通过glreadpixels读取了它们,移动这些位,然后将其保存到文件中

3) 翻转opengl中的像素,使其正确显示;对视频本身应用某种类型的变换(使其在播放时翻转)


我不确定这些都是正确的道路。正在寻找性能最好的路径。

只需对UIView应用变换即可翻转它。例如:

view.transform = CGAffineTransformMakeScale(1.0, -1.0);

看起来最好的方法是在opengl中使用翻转的顶点。

效果很好。我对这种方法与其他方法相比的性能感到好奇。苹果似乎在说,在4.2及更高版本中,Eaglayers上的转换是可以的,而在这之前,它导致性能下降。我想如果没有其他人插话,我将不得不做一些测试。过去确实是这样,一些转换(和某些类型的合成;这就是为什么他们总是说要保持OpenGL视图不透明)会让iOS走上一条缓慢的道路——包括在旧的MBX硬件上旋转90度。我不确定现在的位置。我想,如果当前的解决方案速度太慢,那么将其渲染为帧缓冲区对象(glReadPixels),然后将其绑定为纹理并直接在OpenGL中进行翻转绘制可能是明智的。我想指出,这种方法在iPhone 4上不适用,但在3Gs上适用。这毫无道理,但这是事实。