多线程应用程序中的OpenGL函数失败

时间:2012-06-05 06:41:44

标签: c++ multithreading opengl mutex semaphore

为什么有时在下次通话后:

TakeOpenGL();
glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &TextureWidth);
glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT, &TextureHeight);
FreeOpenGL();

变量Texture *有不正确的值吗?

我正在使用OpenGL互斥体,它正在进行下一步:

void TakeOpenGL(){
    OpenGL.Enter();
    wglMakeCurrent(hDC, hRC);
}

void FreeOpenGL(){
    OpenGL.Leave();
    wglMakeCurrent(0, 0);
}

有什么问题?

1 个答案:

答案 0 :(得分:3)

如果不持有互斥锁,则无法呼叫wglMakeCurrent。您的FreeOpenGL函数执行此操作。