在iOS设备上显示像素栅格的最快方法

3
我想知道在iOS设备上将像素光栅从内存快速呈现到屏幕上以实现最高帧率的最快方法。我可以想出两种方法:
  1. 使用CGImageCreate创建CGImage,使用绘图方法CGContextDrawImage将其绘制到屏幕上,然后删除CGImage对象
  2. 在正交模式下使用OpenGL,使用glTexImage2D将像素复制到纹理中,再用该纹理渲染一个四边形
第二种方法可能会比第一种更快。但是它会显著更快还是只是稍微快一点?是否有第三种方法可以比我提到的前两种更快?

那么,每帧调用glTexImage2D方法是正确的做法吗? - Dominik Seibold
1个回答

0
如果您的图像频繁更新,每帧(或几乎每帧)创建一个纹理将会对性能产生相当大的影响。您可以尝试使用CALayer并将其contents属性设置为要使用的CGImageRef,这样做的结果类似于您所描述的使用CGContextDrawImage(),但提供了更多渲染灵活性,希望能使它更快速地进行核心动画。

听起来很有趣。将内容属性设置为CGImageRef会立即显示图像,还是我需要调用某种重绘方法? - Dominik Seibold
我认为在更改内容后,您需要调用-[CALayer setNeedsDisplay]以触发重绘。即使不是严格必要的,它也只会在必要时更新,因此不应该有任何相关的性能损失。 - Justin Spahr-Summers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接