CUDA 结果可以存储在 OpenGL 可访问的纹理中吗?

发布于 2024-08-29 02:36:33 字数 101 浏览 4 评论 0原文

CUDA可以用来生成OpenGL纹理吗?我知道可以通过将 CUDA 结果读回系统内存,然后将其加载到纹理中来完成...但我想找到一种方法来保存此副本...可以使用 CUDA 来生成纹理吗?

Can CUDA be used to generate OpenGL textures? I know it can be done by reading the CUDA results back into system memory, and then loading that into a texture... But I'd like to find a way to save this copy... Can CUDA be used to generate textures?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

溺深海 2024-09-05 02:36:33

有点像。您无法直接从内核写入纹理,但可以将结果从内核复制到纹理的映射 cudaArray,而无需将其复制回系统内存。查看cudaGraphicsGLRegisterImage()cudaGraphicsMapResources()cudaGraphicsSubResourceGetMappedArray()

Sort of. You can't write directly to textures from a kernel, but you can do a copy of the results from your kernel to the texture's mapped cudaArray without having to copy it back to system memory. Look into cudaGraphicsGLRegisterImage(), cudaGraphicsMapResources() and cudaGraphicsSubResourceGetMappedArray().

你在我安 2024-09-05 02:36:33

是的,CUDA 具有允许 OpenGL 互操作性的 API 函数。

使用 cudaGLRegisterBufferObject(GLuint bufObj) 注册到 CUDA,然后使用 cudaGLMapBufferObject( void ** devPtr, GLuint bufObj) 获取用于操作 CUDA 内核中缓冲区的设备内存指针。

完成后,取消映射 cudaGLUnmapBufferObject(GLuint bufObj) 并显示。

完整的解释位于 CUDA 编程指南中,您可以在 CUDA 工具包中下载该指南。

Yes, CUDA has API functions to allow for OpenGL Interoperability

Use cudaGLRegisterBufferObject(GLuint bufObj) to register to CUDA and then use cudaGLMapBufferObject( void ** devPtr, GLuint bufObj) to get the device memory pointer to manipulate the buffer in your CUDA kernal.

Once done, you unmap cudaGLUnmapBufferObject(GLuint bufObj) and then display.

Full explanation is in the CUDA Programming Guide that you download in the CUDA Toolkit.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文