iphone - iPhone上的GL渲染线程值得吗?

标签 iphone multithreading opengl

我是 iPhone 新手,根本没有做过任何线程处理。看来对 drawElements 的调用占用了我的大部分处理时间,因此这让我认为在允许代码继续调用之前已经完成了大量的渲染。

有谁知道openGL的并行性是如何工作的?或者它在 iPhone 上如何工作?与异步相比,同步完成了多少工作?是否值得创建一个渲染线程来对所有 GL 调用进行排队?线程在 iPhone 上有那么好吗?或者它是否太糟糕了,即使理论上这是一个好主意,糟糕的线程意味着你不应该打扰? (不做判断,正如我所说,我根本没有在 iPhone 上尝试过线程)。

以前有人尝试过吗?

基本上,CPU 是否只是坐在那里什么都不做,而 GPU 则通过调用 DrawElements/Arrays 来完成任务?

最佳答案

iPhone 上的 OpenGL ES 兼具两者:同步和异步(延迟渲染器)。每个调用都会消耗少量 CPU 来移动内存并准备 GPU,但您是对的。 CPU 有时只是坐在那里,但当它坐在那里时,总线通常会饱和。

如果您还有其他不太占用内存的事情,那么您可以通过在单独的线程中运行计算来获得提升。我不建议移动您的渲染代码,并且我真的会注意并发内存操作。 iPhone 上的 RAM 本身就是渲染的一大瓶颈。

关于iphone - iPhone上的GL渲染线程值得吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2151893/

相关文章:

c++ - std::thread 请解释输出

java - 在 Java 中根据可用内存管理线程数

c++ - OpenGL 项目返回 undefined reference

opengl - 为什么 GL 为您将 `gl_Position` 除以 W 而不是让您自己做?

iphone - 如何从 Keyboard-accessoryView 正确插入字符?

iphone - UIScrollViewDelegate 不工作

c# - 检测特定线程内无事件的时间段

iphone - 从网络请求中查找 iphone 设备 ID

iphone - 想从邮政编码中获取州名

c++ - 在 mac 上使用 openGL,不支持版本 '150' 错误