我正在编写一个需要在Cuda 3.2中完成一些工作的DLL,而一些工作在OpenGL中。 OpenGL将呈现我的Cuda代码需要读入和修改的一些灰度图像,然后将其作为纹理返回给OpenGL。我认为我需要创建PBO才能做到这一点。我之前已经完成了一些基本的OpenGL工作,但从未使用扩展,这就是我的问题所在 - 我已经搜索了2天,到目前为止还没有找到一个有效的例子,尽管涉及到页面和页面的码。我尝试过的样本都没有(我确信我的视频卡会支持它,是GTX470)
一些具体问题:
1.我安装了nvidia opengl sdk。我应该使用glew.h和wglew.h来访问扩展吗?
2.我的DLL没有任何UI - 我是否需要创建隐藏窗口或者是否有更简单的方法来创建屏幕外渲染上下文?
3.我可以使用GL_RED_8UI格式创建灰度PBO吗? cuda和gl都会对此感到满意吗?我在cuda编程手册中阅读了opengl interop部分,它说GL_RGBA_8UI只能用于像素着色器,因为它是一个OpenGL 3.0功能,但我不知道是否适用于1通道格式。 1通道浮动也可以用于我的目的
4.我认为这样做相当容易 - 它真的需要数百行代码吗?
编辑:
我有代码来创建附加到HBITMAP的OpenGL上下文。我应该创建一个位图渲染上下文,然后尝试将PBO附加到那个?或者通过渲染CPU内存会减慢我的速度吗?创建一个不可见的窗口并将PBO附加到那个更好吗?另外,我的PBO的像素格式是否必须与窗口/位图匹配?尺寸怎么样?
谢谢,
亚历
答案 0 :(得分:1)
实际上有一个如何一起使用OpenGL和CUDA的例子。看看SimpleGL示例。
答案 1 :(得分:0)