假设我使用cudaMalloc()
和cudaMemcpy()
在设备(视频)内存中已经有位图(图像)。
直接在屏幕上显示此位图的最简单方法是什么?(当前窗口)?
我猜测应该有替代GDI的BitBlt()
......但任何方法(Direct3D,OpenGL甚至GDI)都可以。
CUDA SDK(OpenGL版本)中的示例使用Texture,它使用缓冲区(像素缓冲区对象)来保存数据,注册为CUDA资源,应在每个帧(glutDisplayFunc()
调用时进行映射/取消映射)。所有这些似乎只是一点点复杂和不必要的。
答案 0 :(得分:1)
好的,会尝试回答我自己的问题。看起来有一种更简单的方法可以通过OpenGL显示位图。我们可以使用支持纹理格式cudaGraphicsGLRegisterImage()
的{{1}},而不是使用Texture + Pixel Buffer Object,因为CUDA Toolkit 4.0。
为简单起见,示例没有GL_RGBA8
或错误检查。我对OpenGL知之甚少,很高兴听到建议。
cutilSafeCall()