【发布时间】:2011-02-08 02:59:52
【问题描述】:
CUDA 可以用来生成 OpenGL 纹理吗?我知道可以通过将 CUDA 结果读回系统内存,然后将其加载到纹理中来完成...但是我想找到一种方法来保存此副本... CUDA 可以用于生成纹理吗?
【问题讨论】:
-
我不知道 CUDA,但我知道 OpenCL 可以做到。
标签: memory opengl cuda textures
CUDA 可以用来生成 OpenGL 纹理吗?我知道可以通过将 CUDA 结果读回系统内存,然后将其加载到纹理中来完成...但是我想找到一种方法来保存此副本... CUDA 可以用于生成纹理吗?
【问题讨论】:
标签: memory opengl cuda textures
有点。您不能直接从内核写入纹理,但您可以将结果从内核复制到纹理的映射 cudaArray,而无需将其复制回系统内存。查看cudaGraphicsGLRegisterImage()、cudaGraphicsMapResources() 和cudaGraphicsSubResourceGetMappedArray()。
【讨论】:
是的,CUDA 具有允许 OpenGL 互操作性的 API 函数
使用 cudaGLRegisterBufferObject(GLuint bufObj) 注册到 CUDA,然后使用 cudaGLMapBufferObject( void ** devPtr, GLuint bufObj) 获取设备内存指针以操作 CUDA 内核中的缓冲区。
完成后,取消映射cudaGLUnmapBufferObject(GLuint bufObj),然后显示。
完整的解释在您下载的 CUDA 工具包中的 CUDA 编程指南中。
【讨论】: