Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS上最快的绘图方法是什么?_Ios_Performance_Opengl Es - Fatal编程技术网

iOS上最快的绘图方法是什么?

iOS上最快的绘图方法是什么?,ios,performance,opengl-es,Ios,Performance,Opengl Es,我正在iOS上开发一个2D游戏,但我发现很难让绘图快速运行(在视网膜显示器上以每秒60帧的速度运行) 我第一次使用UIKit进行绘图,这当然不适合用于游戏。我不能不减速画两个精灵 然后我转到OpenGL,因为我读到它是我能到达的最接近GPU的地方(我认为这意味着它是最快的)。我使用的是glDrawArrays()。当我在模拟器上运行时,当我到达200多个三角形时,FPS下降。人们说,这是因为模拟器或计算机没有优化以运行iOS OpenGL。然后我在一台真正的设备上测试了它,令我惊讶的是,性能差异

我正在iOS上开发一个2D游戏,但我发现很难让绘图快速运行(在视网膜显示器上以每秒60帧的速度运行)

我第一次使用UIKit进行绘图,这当然不适合用于游戏。我不能不减速画两个精灵

然后我转到OpenGL,因为我读到它是我能到达的最接近GPU的地方(我认为这意味着它是最快的)。我使用的是glDrawArrays()。当我在模拟器上运行时,当我到达200多个三角形时,FPS下降。人们说,这是因为模拟器或计算机没有优化以运行iOS OpenGL。然后我在一台真正的设备上测试了它,令我惊讶的是,性能差异非常小。它仍然不能顺利运行那几个三角形——我知道iOS上的其他游戏使用了更多的多边形、着色器、3D图形等等

当我在仪器中运行它来检查OpenGL性能时,它告诉我可以使用VBOs来加快速度。所以我重写了代码,改用VBO,每帧更新所有顶点。性能几乎没有提高,而且我仍然不能以60 FPS的速度超过200个三角形。这就是没有上下文更改/转换的二维绘图。我也没有写这个游戏-没有任何对象没有CPU密集型任务


我问的每个人都说OpenGL性能最好。我可能做错了什么?我假设OpenGL可以处理每帧更新的大量多边形-是这样吗?我认为其他游戏使用的哪种方法运行良好,比如3D版的《无穷无尽之刃》,甚至还有很多不断更新的精灵的《愤怒的小鸟》?制作游戏时推荐什么?

OpenGL肯定会是您最快的选择。即使在最旧的iOS设备上,您也可以以30+fps的速度运行约20000个多边形

听起来你一定是做错了什么或是做了额外的事情。在没有看到源代码的情况下,不可能尝试猜测这可能是什么


但一般来说,您需要确保创建VBO并在绘图管道之外加载所有内容。

加载仅在游戏开始时完成,我只使用很少的状态更改调用。但我不明白你说的画管道。。。我的意思是,我必须每一帧更新我的顶点,因为每一帧都会画图,我想这两个顶点是同时发生的。我怎样才能把它们分开?我试图对我的代码进行时间分析,但我不完全理解仪器上发生了什么…绘制管道是您的绘制循环。我不能不看你在做什么就帮你。我仍然怀疑您一定在绘图循环中做了一些不应该做的事情。