2012-06-05 59 views
0

爲什麼有時下一個來電之後:OpenGL函數無法在多線程應用程序

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

變量紋理*有不正確的值?

使用OpenGL的互斥,這樣做下一

林:

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

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

什麼問題?

回答

3

如果不持有互斥鎖,則不能調用wglMakeCurrent。您的FreeOpenGL函數執行此操作。