如何使用WebGL / OpenGL在GPU上有效地计算生命游戏?

时间:2016-03-10 19:38:20

标签: opengl webgl gpu

为了在Open / WebGL上计算自动机,我的天真方法是将自动机的状态编码为纹理,将每个像素视为自动机单元;然后我调用一个纹理片段着色器,计算下一个状态并将其渲染回来。然后,我会无限期地重复这个过程。

我的问题是:在每次调用片段着色器时,是否会导致内存在CPU / GPU之间传输?理想情况下,我想在几乎(数千)次调用片段着色器,而不需要CPU / GPU之间的任何通信;可能,充分利用处理单元的本地记忆。

这可能吗?

1 个答案:

答案 0 :(得分:2)

为什么在计算下一个状态时需要通过CPU传输纹理数据?

你需要两个纹理。将您的单元格的当前状态放入其中一个并使用着色器将下一个状态绘制到第二个纹理中。然后执行相反的操作:将下一个状态绘制到第一个纹理中,同时将第二个状态用作当前状态。根据需要多次重复此操作。