c++ - OpenGL + CUDA : Transfer data from glReadPixels() to CUDA

标签 c++ opengl cuda glreadpixels

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

有一种方法可以在不通过 CPU 的情况下将数据从 glReadPixles() 传递到 CUDA?

纹理内存能帮到我吗?

最佳答案

您需要使用 CUDA - OpenGL interop API .

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

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

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

关于c++ - OpenGL + CUDA : Transfer data from glReadPixels() to CUDA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19835686/

相关文章:

c++ - 我可以指定默认值吗?

opengl - glXCreateContext 神奇地映射窗口

c++ - 您如何构建示例 CUDA Thrust 设备排序?

cuda - 初学者最简单的 CUDA 包装器

c++ - 对于 CUDA 的嵌套循环

c++ - boost 和图形化

c++ - 当函数是指向类函数的指针但在该类之外时如何正确调用函数

c++ - 按值返回的变量的相同地址

c++ - 单个 RGB 图像的压缩(使用 c++)

python - 如何使用 Python 和 PyGame 在 OpenGL 上显示 2D 形状