【问题标题】:Can CUDA results be stored in an OpenGL accessible texture?CUDA 结果可以存储在 OpenGL 可访问的纹理中吗?
【发布时间】:2011-02-08 02:59:52
【问题描述】:

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

【问题讨论】:

  • 我不知道 CUDA,但我知道 OpenCL 可以做到。

标签: memory opengl cuda textures


【解决方案1】:

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

【讨论】:

  • 另请注意,这些是新的 3.0 版本。另一个 GL - Dx 将被弃用
【解决方案2】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2011-03-24
    • 2015-04-16
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2013-09-03
    • 2014-05-15
    • 1970-01-01
    相关资源
    最近更新 更多