提问人:Samuel Ammonius STUDENT 提问时间:11/18/2023 更新时间:11/18/2023 访问量:46
OpenCL 会比 OpenGL 更快地绘制圆圈吗?
Would OpenCL be faster than OpenGL for only drawing circles?
问:
我有一个 2D 游戏,除了 UI 之外,只需要绘制纯色圆圈。该游戏还已经使用OpenCL来计算圆圈的物理特性(有点像粒子模拟)。使用 OpenCL 进行渲染的好处是,我不需要在组合中添加另一个库,也不需要生成顶点缓冲区。我只是不确定性能是否仍然比使用 OpenGL 和 Vulkan 等专用图形库差,尤其是考虑到抗锯齿和轮廓等功能。
一些可能很重要的细节是,有成千上万的小圆圈,它们的大小都一样。物理碰撞已经进行了剔除,因此每个像素最多只需要考虑 ~10 个圆圈。下图与我想要制作的接近(图片来源):
从理论上讲,OpenCL 方法效率更高,但它实际上归结为图形 API 使用的硬件加速量。这是我第一个与GPU相关的项目,这就是为什么我不确定。混合库不是一个大问题,因为我可以将物理引擎重写为计算着色器或其他东西。
答:
1赞
ProjectPhysX
11/18/2023
#1
两者本身都不是更快的。OpenCL 的栅格化速度与 OpenGL 一样快,前提是您自己为圆实现 Bresenham 栅格化例程。最后,图像只是一个整数数组。但在 OpenCL 中,您可以进行特定于应用程序的优化,例如固定大小的圆圈,以击败通用库光栅化算法。
主要的性能因素是数据移动(避免 PCIe 复制,在 VRAM 中具有粒子并在 VRAM 中呈现)和数据布局(用于合并内存访问的阵列结构)。
由于您已经在 OpenCL 中拥有模拟部分,因此我建议您也使用 OpenCL 进行渲染,这样您就可以省去添加另一个库的麻烦,并且可以更好地控制优化。
评论