我使用 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/