为什么cudaGLSetGLDevice失败,即使它在主函数的第一行被调用

时间:2012-05-07 11:44:53

标签: opengl interop cuda

我想使用OpenGL和CUDA之间的互操作性。我知道,正如一些教程所说,第一步是选择设备。但是,当我在main函数的第一行调用cudaGLSetGLDevice(0)时,程序退出并显示信息“cudaSafeCall()运行时API错误36:在此过程中设备处于活动状态时无法设置。”

实际上,即使我在调用cudaGLSetDevice之前使用cudaDeviceProp和cudaChooseDevice,错误仍然存​​在。

相信我,我的电脑只有一个GPU,9800GT。我知道调用cudaGLSetGLDevice应该优先于任何其他CUDA函数,这就是为什么我把它放在main函数的第一行。

我使用Windows SDK来渲染OpenGL而不是过剩,这有什么问题吗?

1 个答案:

答案 0 :(得分:2)

您需要在调用cudaGLSetDevice之前初始化opengl上下文。如果被称为过剩glutInit(argc, argv);。在使用任何cuda< - > opengl互操作性函数调用之前初始化opengl上下文。