可以使用CUDA生成OpenGL纹理吗?我知道可以通过将CUDA结果读回系统内存,然后将其加载到纹理中来完成...但我想找到一种方法来保存这个副本...... CUDA可以用来生成纹理吗?
答案 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编程指南中有完整的解释。