我是Objective-C和OpenGL的新手,所以请耐心等待。
我正在构建一个主要基于全屏2D像素缓冲的应用程序,使用数学公式(类似于分形)填充和动画,主要使用sin,cos,atan等。
我已经通过使用提供了相当大的fps提升的表来优化sin和cos,但是,在Mac Mini(大约30 fps)的模拟器中帧速率很酷,我在实际上得到了一个非常荒谬的5 fps设备(iPad Mini非视网膜)。
由于我没有看到优化像素循环的其他方法,是否可以使用OpenGL着色器实现效果,然后只绘制带有纹理的全屏四边形?
正如我所说,效果非常简单,只是迭代嵌套x / y循环中的所有像素,并使用基本的数学和触发函数。我对屏幕进行blit的方式对于设备而言非常适合非停留在非OpenGL中,并且如果我省略实际的数学运算则会给出相当于一百万的FPS。
谢谢!
答案 0 :(得分:1)
如果将其实现为OpenGL着色器,您将获得大量性能提升。着色器将在图形芯片上运行,该芯片设计为大规模并行,并且针对此类数学进行了优化。
您没有为表面定义着色器而创建纹理。您将为该表面上的每个渲染像素调用着色器代码。
我首先想看看你是否可以在这里破解着色器:http://glsl.heroku.com/
一旦你有了一些工作,你就可以研究如何在iOS上使用你的着色器使用OpenGL上下文,你不必更改实际的着色器以使其正常工作。