Before I reduce it to a reasonable example, I was hoping that someone might run into this earlier and shed light on the problem.
I have a 32-bit C-based application that uses one OpenGL context for each window, all contexts and windows are configured the same way. The requested pixel format is 32-bit color, alpha, depth buffer, accelerated. Everything works flawlessly on Windows 2000 and XP.
Everything worked flawlessly in Vista and 7 until the 33rd pair of windows / contexts was created. Creating a window has no errors, creating a context has no errors, as a result of which the context current has no errors, the picture does not create errors, SwapBuffers does not generate an error. However, OpenGL contexts cannot produce any output, with Aero white, classic mode drawing, and screen garbage. Killing DWM does not fix the problem, trying to use different pixel formats (one buffer, depth difference, etc.), while PFD_SUPPORT_COMPOSITION does not fix the problem. This is on different machines with Vista / 7, never XP.
I can glReadPixels back buffer, and they are correct pixels. Rendering in pbuffer with the same context works fine, rendering in> 32 pbuffers is great.
If I work freely on screen contexts / windows, non-working windows will start working again. As if Vista / 7 just stopped displaying OpenGL rendering after 32 windows were displayed on the screen.
If the pixel format descriptor includes PFD_SUPPORT_GDI, everything is fine, but using a software renderer that is unacceptable.
I am wondering if this is an OS limitation or a driver limitation in Vista / 7. Thank you for understanding.
Christopher lloyd
source share