cuda 究竟为 opengl 应用程序做了啥?

Posted

技术标签:

【中文标题】cuda 究竟为 opengl 应用程序做了啥?【英文标题】:what exactly cuda does for opengl applications?cuda 究竟为 opengl 应用程序做了什么? 【发布时间】:2015-06-12 20:33:18 【问题描述】:

我猜想 opengl 应用程序的某些部分曾经在 CPU 上运行,现在人们可以通过 cuda 在 GPU 上运行它,并加速这些部分(opengl 应用程序或管道的一部分)。

有人可以解释一下 cuda 对 opengl 的作用吗?我的意思是哪些操作被卸载到 GPU 以供 cuda 处理?

【问题讨论】:

【参考方案1】:

CUDA 是一个完全独立于 OpenGL 的 API;您可以同时使用它们,但 CUDA 不是获得 GPU 渲染加速所必需的。在 OpenGL 中,您使用在概念上类似于 CUDA 内核的着色器来实现 OpenGL 中许多任务的硬件加速。

CUDA 确实允许与 OpenGL(和 Direct3D)互操作,但这绝不是必要的;如果您都想在同一个应用程序中进行科学计算和渲染,您通常只想这样做。不过,现在有了 GL 和 D3D 中都可用的计算着色器,这变得不再那么必要了

【讨论】:

谢谢。你能不能给出更多解释“不过,现在在 GL 和 D3D 中都可以使用计算着色器” 计算着色器距离 CUDA 的表现力还很远。 @AfnanAbdullah 计算着色器允许您在 GPU 上运行任意东西,与渲染管道分开,同时仍直接与 OpenGL(或 Direct3D)集成,从而取代了 CUDA 的某些用途。 @MomotapaLimpopo 你当然是对的,但计算着色器值得一提;在某些情况下,它们可以代替 CUDA,尤其是当您已经在使用图形 API 时。此外,它们的表现力也越来越强。

以上是关于cuda 究竟为 opengl 应用程序做了啥?的主要内容,如果未能解决你的问题,请参考以下文章

OpenGL Bindless Texture 函数 glMakeTextureHandleNonResident 究竟做了啥?

OpenGL 茶壶无法正确绘制。我究竟做错了啥? [关闭]

扩展“jsx”究竟做了啥? [复制]

MissingSchemaAction.AddWithKey 究竟做了啥?

这种表达式语言 $pageContext.request.contextPath 在 JSP EL 中究竟做了啥?

setUseWideViewPort() 和 setLoadWithOverviewMode() 究竟做了啥?