我想使用OpenGL和CUDA之间的互操作性。我知道,正如一些教程所说,第一步是选择设备。但是,当我在main函数的第一行调用cudaGLSetGLDevice(0)时,程序退出并显示信息“cudaSafeCall()运行时API错误36:在此过程中设备处于活动状态时无法设置。”
实际上,即使我在调用cudaGLSetDevice之前使用cudaDeviceProp和cudaChooseDevice,错误仍然存在。
相信我,我的电脑只有一个GPU,9800GT。我知道调用cudaGLSetGLDevice应该优先于任何其他CUDA函数,这就是为什么我把它放在main函数的第一行。
我使用Windows SDK来渲染OpenGL而不是过剩,这有什么问题吗?
答案 0 :(得分:2)
您需要在调用cudaGLSetDevice
之前初始化opengl上下文。如果被称为过剩glutInit(argc, argv);
。在使用任何cuda< - > opengl互操作性函数调用之前初始化opengl上下文。