opengl - 如何使用 WebGL/OpenGL 在 GPU 上高效计算生命游戏?

标签 opengl webgl gpu

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

我的问题是:这不会导致每次调用片段着色器时内存在 CPU/GPU 之间传输吗?理想情况下,我希望多次(数千次)调用片段着色器,而无需 CPU/GPU 之间进行任何通信;可能的话,充分利用处理单元的本地内存。

这可能吗?

最佳答案

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

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

关于opengl - 如何使用 WebGL/OpenGL 在 GPU 上高效计算生命游戏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35925685/

相关文章:

webgl - three.js 中相机的平滑移动

javascript - WebGL - 更改对象之间的颜色

canvas - 如何保持 WebGL Canvas 纵横比?

matlab - 使用 GPU 计算稀疏数据

c++ - OpenCV 4.3.0 在 GPU 上计算积分图像>

c++ - 如何替换以下(已弃用)OpenGL 函数?

opengl - 如何向深度缓冲区写入与深度比较所使用的值不同的值?

c - OpenGL vbo 上传不一致

python - 将 PyTorch 代码移至 GPU 时处理大幅减速问题

opengl - 管理外部资源(类似于C++中的RAII?)