2013-08-31 33 views
0

如何執行運行時全屏/窗口和交換模式小號 DIRECT9.0窗口(全屏運行時)

  1. UnregisterClass
  2. 自由所有的DirectX設備
  3. 重新initlize所有的廁所類格式
  4. 重新initlize所有直接的東西

然而,在兩個問題吧。

  1. 我設法創建一個新窗口,但舊窗口關閉或刪除。
  2. 新窗口的客戶端是黑色的。這意味着直接沒有鏈接到新的 客戶端。

2日)

回答

2

不,你不必創建一個新的窗口,只需用舊的。基本上你可以用新的表示參數調用IDirect3DDevice9 :: Reset。當進入全屏模式時,您需要執行以下操作。

  1. 集D3DPRESENT_PARAMETERS.Windowed =真
  2. 調整後備緩衝(我們總是設置後備緩衝大小作爲繪製窗口大小)與新的寬高比
  3. 更新投影矩陣(後備緩衝寬度/高度後備緩衝)
  4. 發佈與設備關聯的任何顯式渲染目標,深度模板表面,附加交換鏈,狀態塊和D3DPOOL_DEFAULT資源。
  5. 調用IDirect3DDevice9 :: Reset()進入全屏模式。

請注意,當您的應用程序進入全屏模式時,它將掛起所有應用程序,包括開發環境(如Visual Studio)。所以你最好帶另一臺顯示器進行全屏調試。

+0

希望他們使用的是Direct3D而不是DirectX。 DirectX是一個類似但更復雜的過程,非常有趣,第一次弄清楚。 –

+0

不知道你是什麼意思,Direct3D是DirectX的組件,正如標題所說,他使用DirectX 9.0c。 – zdd

+0

你說得對,我打算說DirectDraw。 –