2011-02-11 137 views
2

与iOS相比,Open GL ES坐标在y轴上翻转。通过glreadpixels(到视频)保存数据给了我适当的转换,但在UIView中显示的y轴翻转。什么是最好的方式来翻转它的演示文稿?在OpenGL翻转CAEAGLLayer以在OpenGL ES中进行演示的最佳方式2

1)渲染两次,送非翻转版本glreadpixels,并翻转版本的CAEAGLLayer(presentRenderbuffer):

我看到三种方式至今。

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

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

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

回答

0

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

4

只需将转换应用于UIView即可将其翻转。例如:

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

完美的作品。我很好奇这种方法与其他方法的性能。苹果似乎认为,在4.2以及更高版本中,EAGLLayers的转换是可以的,而在它之前导致性能下降。我想我必须做一些测试,如果没有其他人编钟的话。 – akaru 2011-02-14 18:08:09

+0

当然,它曾经是一些变换(以及某些类型的合成;这就是为什么他们总是说让你的OpenGL视图不透明)推iOS进入缓慢的路线 - 包括老的MBX硬件旋转90度。我现在不确定这个位置。我猜想,如果当前的解决方案证明速度太慢,那么渲染帧缓冲区对象glReadPixels可能会很明智,然后将其绑定为纹理并直接在OpenGL中进行翻转绘制。 – Tommy 2011-02-14 19:30:47