我是iphone的新手,并没有对它进行任何线程处理。似乎对drawElements的调用占用了我处理时间的很大一部分,因此我认为在允许代码继续通过调用之前,正在进行大量渲染。
有谁知道openGL的并行性如何工作?或者它如何在iPhone上运行?与异步相比,同步完成了多少?是否值得制作一个渲染线程,将所有调用排队到GL?在iPhone上甚至是那么好的线程?或者它是如此可怕,即使理论上这是一个好主意,可怕的线程意味着你不应该打扰? (没有做出判断,就像我说的那样,我没有在iphone上试过线程)。
以前有人试过吗?
基本上,当GPU完成对DrawElements / Arrays的调用时,cpu只是坐在那里什么也不做?
答案 0 :(得分:2)
iPhone上的OpenGL ES有点兼顾:同步和放大异步(延迟渲染器)。每个调用消耗少量的CPU来移动内存并准备GPU,但你是对的。 CPU有时候就坐在那里,但是当它出现时,总线通常会饱和。
如果你有其他不太耗费内存的东西,那么你可以通过在一个单独的线程中运行计算来获得小提升。我不建议移动你的渲染代码,我真的要注意并发内存操作。 iPhone上的RAM是渲染的主要瓶颈。