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

3

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


我不了解CUDA,但我知道OpenCL可以做到。 - Drew Hall
2个回答

5
有点类似。你不能直接从内核中写入纹理,但是你可以将内核的结果复制到纹理的映射cudaArray中,而不必将其复制回系统内存。请查看 cudaGraphicsGLRegisterImage()cudaGraphicsMapResources()cudaGraphicsSubResourceGetMappedArray()

请注意,这些是新的3.0版本。其他GL - Dx将被弃用。 - fabrizioM

2
是的,CUDA有API函数可以实现与OpenGL的互操作性。
使用cudaGLRegisterBufferObject(GLuint bufObj)进行CUDA注册,然后使用cudaGLMapBufferObject( void ** devPtr, GLuint bufObj)获取设备内存指针以在CUDA核心中操作缓冲区。
完成后,取消映射cudaGLUnmapBufferObject(GLuint bufObj)并显示。
完整的说明在您下载的CUDA工具包中的CUDA编程指南中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接