【问题标题】:OpenGL + CUDA: Transfer data from glReadPixels() to CUDAOpenGL + CUDA:将数据从 glReadPixels() 传输到 CUDA
【发布时间】:2013-11-19 02:00:06
【问题描述】:

我使用 openGL 创建一个图像并使用 glReadPixels() 读取它。 现在,我想分析这些数据。我想并行化在每个像素上运行的循环并通过 CUDA 检查其颜色。问题是我需要将数据从 GPU 传递到 CPU 再到 GPU。

有没有一种方法可以将数据从 glReadPixles() 传递到 CUDA 而无需通过 CPU?

纹理记忆对我有帮助吗?

【问题讨论】:

  • “问题是我需要将数据从 GPU 传递到 CPU,然后再传递到 GPU。” - 这确实是个问题,因为你没有根本不需要这样做。 “有一种方法可以在不通过 CPU 的情况下将数据从 glReadPixles() 传递到 CUDA?” - 不,glReadPixels 与它没有任何关系。而不是你应该查看 CUDA 的 OpenGL 互操作功能,这可以从 CUDA 的文档中获得。

标签: c++ opengl cuda glreadpixels


【解决方案1】:

您需要使用CUDA - OpenGL interop API

graphics 中有许多 CUDA 示例代码和可能感兴趣的成像部分。

我建议从gaussian blur sample 开始,因为我认为其中的处理流程与您所描述的很接近(在显示之前修改每个像素)。

您不要使用glReadPixels,因为这确实会将数据带回CPU。相反,您使用 CUDA 注册一个 openGL 对象,以便它可以被 CUDA 操作,然后在显示之前取消注册它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-26
    • 1970-01-01
    • 2013-10-15
    • 1970-01-01
    • 2012-07-07
    • 1970-01-01
    • 2012-10-03
    相关资源
    最近更新 更多