[英]Enabling OpenGL triple buffering + vsync in AMD CCC breaks our app
我們有一個用C ++編寫的桌面Windows應用程序,它使用OpenGL渲染視圖。
在某些AMD卡上,如果你打開Catalyst Control Center並強制啟用三重緩沖和V-sync,它會破壞我們的應用程序:根本沒有任何渲染,它只是一個灰色屏幕(在其他一些驅動程序版本上,它在創建上下文時崩潰了)。 關閉或者三重緩沖或垂直同步它恢復到正常狀態。
我們使用wglSwapIntervalEXT
在我們的應用程序中啟用V同步。 認為它可能會發生沖突,我刪除了它的代碼; 沒變。
這絕對是一個驅動程序錯誤,還是我們必須做些什么來處理三重緩沖?
我在自己的應用程序中遇到了同樣的問題,並且很難追蹤到。 以下是我可以根據我為復制問題而構建的最小應用程序測試設置提供的其他信息:
1)所有設置像素格式並創建GL RC的調用都將成功。 但是,GLDebugger將顯示RC實際上並不獲取靜態緩沖區。
2)當你嘗試使RC電流時,它將返回false,而GetLastError()表示存在無效的句柄。
3)我只能在MFC中復制這個問題。 那是你在用什么? 當我使用直接Win32 API構建測試平台應用程序時,它工作正常。 這里必須有一個模糊的互動...
4)如果我將RC創建延遲到OnCreate之后,那么事情就會很好。
我擔心我的答案傾向於“Driver Bug”,但第4點顯示了一種解決方法 - 而不是在OnCreate中創建GL窗口,而是嘗試在OnInitialUpdate中進行一次性 - 這到目前為止工作正常在測試我!
更新 :我已經聯系過AMD關於這個問題,結果發現這是MFC最初創建零寬度/高度窗口然后調整大小的結果。 如果在PreCreate函數中指定非零尺寸,則一切正常。
希望這對於每個試圖弄清楚這是怎么回事的人來說都是一個很好的資源!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.