PDA

View Full Version : wglMakeCurrent - strange error



SoulCollector
08-27-2009, 05:36 AM
I have a strange error with wglMakeCurrent.

In my application there are multiple threads which are rendering to one single context. The draw Operations are secured by a Semaphore, so the threads should not interfere with each other.

Each thread basically looks like this



GetSemaphore()
wglMakeCurrent(context,0);

Draw(); // this is where all drawing is done

wglMakeCurrent(NULL,NULL);
ReleaseSemaphore()


Now, whenever i call wglMakeCurrent(NULL,NULL); i get an OpenGL error GL_INVALID_OPERATION.

The strange thing is that everything is rendered exactly as it should be and wglMakeCurrents always returns TRUE ... so i would expect that there was no error. OpenGL seems to think different.

Does anyone have an idea what the problem could be?

Hlz
08-28-2009, 12:53 PM
For one thing you need to make sure you release your context in the current thread (which I believe will flush the command buffer - see the MSDN on Windows); otherwise you'll likely get an invalid handle error on e.g. SwapBuffers (check GetLastError on Windows).