对于 Open/WebGL 上的计算自动机,我的幼稚方法是将自动机的状态编码为纹理,将每个像素视为自动机单元;然后我会调用该纹理的片段着色器,计算下一个状态并将其渲染回来。然后我会无限期地重复这个过程。
我的问题是:这不会导致每次调用片段着色器时内存在 CPU/GPU 之间传输吗?理想情况下,我希望多次(数千次)调用片段着色器,而无需 CPU/GPU 之间进行任何通信;可能的话,充分利用处理单元的本地内存。
这可能吗?
最佳答案
为什么在计算下一个状态时需要通过CPU传输纹理数据?
您将需要两个纹理。将细胞的当前状态放入其中一个纹理中,并使用着色器将下一个状态绘制到第二个纹理中。然后执行相反的操作:将下一个状态绘制到第一个纹理中,同时使用第二个纹理作为当前状态。根据需要重复此操作多次。
关于opengl - 如何使用 WebGL/OpenGL 在 GPU 上高效计算生命游戏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35925685/