仅绘制圆形时,OpenCL 会比 OpenGL 更快吗?

问题描述 投票:0回答:1

我有一个2D游戏,除了UI之外,只需要绘制纯色圆圈。该游戏还已经使用 OpenCL 来计算圆圈的物理特性(有点像粒子模拟)。使用 OpenCL 渲染的好处是我不需要添加另一个库,也不需要生成顶点缓冲区。我只是不确定性能是否仍然比使用 OpenGL 和 Vulkan 等专用图形库更差,特别是考虑到抗锯齿和轮廓等内容。

一些可能很重要的细节是,有数千个小圆圈,而且它们的大小都相同。物理碰撞已经被剔除,因此每个像素最多只需要考虑约 10 个圆圈。下图接近我想要制作的图像(图像源):

OpenCL 方法理论上更高效,但实际上取决于图形 API 使用的硬件加速量。这是我的第一个与 GPU 相关的项目,这就是我不确定的原因。混合库并不是一个大问题,因为我可以将物理引擎重写为计算着色器或其他东西。

graphics gpu opencl
1个回答
0
投票

两者本身都不是更快。只要您自己实现圆的 Bresenham 光栅化例程,OpenCL 的光栅化速度就可以与 OpenGL 一样快。最终图像只是一个整数数组。但在 OpenCL 中,您甚至可以进行特定于应用程序的优化,例如固定大小的圆圈,以击败通用库光栅化算法。

主要性能因素是数据移动(避免 PCIe 复制、在 VRAM 中包含粒子并在 VRAM 中渲染)和数据布局(用于合并内存访问的数组结构)。

既然你已经有了 OpenCL 中的模拟部分,我建议也使用 OpenCL 进行渲染,这样你就可以省去添加另一个库的麻烦,并且可以更好地控制优化。

© www.soinside.com 2019 - 2024. All rights reserved.