gpt4 book ai didi

android - 利用 openGL 的多线程

转载 作者:太空宇宙 更新时间:2023-11-03 13:20:58 27 4
gpt4 key购买 nike

在基于 openGL 渲染器的游戏环境中交谈:

假设有两个线程:

  1. 更新游戏对象的游戏逻辑和物理等

  2. 根据游戏对象中的数据对每个游戏对象进行 openGL 绘制调用(线程 1 不断更新)

除非您在游戏的当前状态下有每个游戏对象的两个拷贝,否则您必须暂停线程 1,而线程 2 进行绘制调用,否则游戏对象将在绘制调用的中间更新目的 !这是不可取的!

但是停止线程 1 以安全地从线程 2 进行绘制调用会破坏多线程/并发的全部目的

除了使用数百或数千或同步对象/栅栏之外,是否有更好的方法来利用多核架构来提高性能?

我知道我仍然可以使用多线程加载纹理和编译着色器用于尚未成为当前游戏状态一部分的对象但是我如何为 Activity/可见对象执行此操作不会引起绘制和更新的冲突?

最佳答案

通常的方法是模拟线程在完成游戏步骤后将状态提交到中间缓冲区,然后向渲染器线程发送信号。由于 OpenGL 异步执行渲染线程应该相当快地完成,从而释放下一个状态的中间缓冲区。

无论如何,您都不应该直接从游戏状态进行渲染,因为渲染器需要执行的操作和模拟生成的内容并不总是相同的。因此无论如何都可能需要一些映射。

关于android - 利用 openGL 的多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27764031/

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