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

时间:2010-04-14 21:15:51

标签: memory opengl cuda textures

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

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

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

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

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

您在CUDA工具包中下载的CUDA编程指南中有完整的解释。