gpt4 book ai didi

android - GLES iOS、Android RenderBuffer 同步还是异步?

转载 作者:行者123 更新时间:2023-11-29 11:10:12 25 4
gpt4 key购买 nike

GLES 2.0 调用在 Android 和 iOS 上是同步的还是异步的?它什么时候会阻塞 CPU 等待 GPU 完成发送的命令?我相信 glReadPixels 和 glGetTexImage 肯定会阻塞线程并等待所有 gl 命令完成。

经过一些测试后,我觉得即使在单核设备上多线程应用程序也可能获得性能,因为 GL 调用是同步的并且 GPU 会阻塞 CPU。

在 iOS 和 Android 上是否有任何引用 gl* 调用是否同步。我知道一般来说它不是同步的。

有 2 个线程是否有意义:一个线程进行 GL 调用,另一个线程运行物理以在 GL 阻塞主线程时为 CPU 提供一些工作?

最佳答案

大多数 OpenGL 命令不会阻止程序的执行。任何设置状态或发出绘制调用的操作都只是将命令放入 GPU 推送缓冲区并立即返回。您不必等待命令到达 GPU,或等待模型完成绘制才能发出下一个命令。

异常(exception)是从 GPU 请求状态的任何操作,例如 glGet.../glRead... 操作。这需要 GPU 刷新它的指令队列,以便它可以向您返回正确的值。这些可能会导致长时间停顿,因此建议根据需要谨慎使用。

Does it make sense to have 2 threads: one thread to make GL calls and other thread to run physics to give CPU some work when GL blocks main thread ?

这取决于。一般来说,如果您正在等待 GPU,那是因为您立即需要获取一些值以继续您的计算。如果您可以在后台执行不依赖于此的工作,则将其卸载到另一个线程是有意义的。

关于android - GLES iOS、Android RenderBuffer 同步还是异步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11910363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com