如何将 GPU 全局内存中的像素阵列直接显示到屏幕上?

Ton*_*ony 5 opengl cuda gpu

我在 GPU 上做一个路径跟踪器,我在 GPU 全局内存上得到了一些像素数据(这是一个 float3 数组)的跟踪结果,我在屏幕上显示数组的方法是将数组复制到 CPU 内存和调用OpenGL glTexImage2D

glTexImage2D (GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, pixelArray);
Run Code Online (Sandbox Code Playgroud)

然后显示纹理。pixelArray是要显示的像素数据数组。由于 GPU 是管理整个渲染过程的设备,有没有一种方法可以pixelArray在不将数据从 GPU 复制到 CPU 的情况下在屏幕上显示?

dat*_*olf 2

使用 CUDA OpenGL 图形互操作将 OpenGL 纹理映射为 CUDA 全局内存。直接将数据写入纹理或使用 cudaMemcpy2D。