在我將這個減少到一個合理的例子之前,我希望有人可能會遇到這個問題,並可以解決這個問題。OpenGL最多32個帶Vista/7的屏幕上的窗口
我有一個基於32位C的應用程序,每個窗口使用一個OpenGL上下文,所有的上下文和窗口設置相同。請求的像素格式是32位顏色,alpha,深度緩衝區,加速。一切都在Windows 2000和XP上完美運行。
一切都在Vista和7上完美運行,直到第33個窗口/上下文對被創建。創建窗口沒有錯誤,創建上下文沒有錯誤,使上下文當前沒有錯誤,繪圖不會產生錯誤,SwapBuffers不會產生錯誤。然而,OpenGL上下文無法產生任何輸出,Aero的窗口是白色的,它們沒有繪製的經典模式,只是屏幕垃圾。殺死DWM並不能解決這個問題,嘗試使用不同的像素格式(單個緩衝區,差異深度等),而PFD_SUPPORT_COMPOSITION不能解決問題。這是在Vista/7的許多不同的機器上,從來沒有XP。
我可以glReadPixels後臺緩衝區,他們是正確的像素。渲染到具有相同上下文的pbuffer可以正常工作,渲染到> 32個pbuffers是很好的。
如果我自由工作在屏幕上下文/窗口,非工作窗口再次開始工作。就好像Vista/7只是在屏幕上顯示32個窗口後停止顯示OpenGL渲染一樣。
如果像素格式描述符包含PFD_SUPPORT_GDI,則一切正常,但它使用的軟件渲染器不可接受。
我想知道這是否是Vista/7中的操作系統限制或驅動程序限制。感謝您的任何見解。
什麼行爲,如果您創建連接到同一個獨特的背景33個窗口? – Luca 2012-01-08 09:54:28
我懷疑這是一個特殊的驅動程序實施,這是應該責備。您是否在多個卡/製造商中看到相同的行爲? – eodabash 2012-01-10 06:43:47