這兩篇文章表明離屏前端緩衝區是 Windows Vista/7 驅動程式模型 (WDDM) 的一部分。
http://www.opengl.org/pipeline/article/vol003_7/
考慮到離屏前緩衝區是驅動程式模型本身的要求,即使關閉 DWM 也不太可能解決這些問題。
根據廣泛記載,桌面視窗管理器 (DWM) 合成了前端緩衝區以渲染到螢幕。
我的問題是:如果使用離螢幕前端緩衝區,無論是否啟用 DWM,當 DWM 啟用時,什麼執行合成操作殘障人士?
我還在尋找有關禁用 DWM 時 Windows 7 行為的任何好的參考。它只是退回到 XP 的堆疊視窗模型嗎?
答案1
堆疊視窗模型消失了。 Vista 及更高版本使用複合桌面模型
我記得 Vista 首次出現時的這些討論。我會盡力的。您應該使用 Vista 而不是 Windows 7 來搜尋這些主題。
據廣泛記載,桌面視窗管理器 (DWM) 合成了前端緩衝區以>渲染到螢幕。
我的問題是:如果無論 DWM 是否啟用,都使用離螢幕前端緩衝區,>當 DWM 停用時,合成會做什麼?
你可以自己看看。關閉 Aero 並切換到 Basic。您現在正在沒有 DWM 的情況下運行。繁榮,沒有 DWM。但是如果你嘗試寫入顯示卡記憶體會發生什麼事?大多數時候,除非您是經驗豐富的程式設計師,否則您會被重定向到螢幕外緩衝區。那樣的話,你就不會問這個問題了。你就會知道會發生什麼
離屏前端緩衝區仍然被使用的原因是因為驅動程式不再控制前端緩衝區。前端緩衝區被虛擬化了。這涉及到GDI和DirectX。這就像虛擬記憶體管理器的原因是因為你不再被允許直接寫入實體記憶體。這就是為什麼需要離屏緩衝區的原因。
我在學習 WPF 時學到了大部分內容,因為 DWM 在許多方面只是一個龐大的 WPF 應用程式。它們都使用 DirectX 和 MIL 來組成各自的工作區。我將從 Vista 和 WPF 下的一些 technet 文章開始。 Windows 7 下對 DVM 和 DDK 的變更很小,與您的問題無關。
我希望這一切都是有意義的。