OpenGL wglMakeCurrent()报告资源繁忙

时间:2013-01-14 16:35:21

标签: c++ opengl

我正常初始化代码,获取有效的设备/渲染上下文,然后将这两个存储在OpenGL_Display类型的静态对象中。当我从DLL外部调用图像更新功能时,调用两者 wglGetCurrentContext()以及wglGetCurrentDC()返回NULL。 当我使用我的班级中存储的wglMakeCurrent()HDC来呼叫HRC时,GetLastError()将返回错误170(请求的资源正在使用中。)

我不明白资源如何在任何地方使用。请注意,代码在.exe中运行良好,因此它与我从C#应用程序调用它有关,或者它首先在DLL中,但是对于我的生活,我无法弄清楚为什么那些资源很忙。

2 个答案:

答案 0 :(得分:6)

当上下文在另一个线程中处于活动状态时,将返回此错误。

最有可能的是你的创建/初始化代码执行了wglMakeCurrent(),但在返回之前没有将上下文设置回NULL。

如果绘图然后在另一个线程上发生,它将无法设置上下文并返回ERROR_BUSY。

答案 1 :(得分:0)

如果你想从C#应用程序中使用OpenGL(我假设是.NET框架),那么你应该使用OpenTK