我猜opengl应用程序的某些部分过去是在CPU上运行的,现在通过cuda人们可以在GPU上运行它,并加速这些部分(opengl应用程序或管道的一部分)。
有人可以解释一下 cuda 对 opengl 到底做了什么吗?我的意思到底是哪些操作被卸载到 GPU 以便由 cuda 处理?
CUDA 是一个与 OpenGL 完全独立的 API;您可以同时使用它们,但 CUDA 并不是获得 GPU 渲染加速所必需的。在 OpenGL 中,您使用着色器(其概念上与 CUDA 内核有些相似)来实现 OpenGL 中许多任务的硬件加速。
CUDA 确实允许与 OpenGL(和 Direct3D)进行互操作,但这绝不是必要的;通常,只有当您都想在同一个应用程序中进行科学计算和渲染时,您才需要这样做。不过,现在 GL 和 D3D 中都提供了计算着色器,这变得更加没有必要了
CUDA 和 OpenGL 是独立的事物,根据用例,它们可能会或可能不会相互作用。
以下是一些主要差异的非常简短的列表:
CUDA
OpenGL
如前所述,两者可以相互作用。这是通过 OpenGL 互操作性 API 完成的(还有一个用于 Direct3D 的 API)。 CUDA 能够访问可以修改的 OpenGL 纹理和缓冲区,从而允许两者相互协作(例如,可视化使用 CUDA 计算的内容)。