Re: [請益] 請問 D3DSprite 貼圖問題

看板GameDesign (遊戲設計)作者 (如月未緒)時間14年前 (2012/05/08 15:45), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《kisaraki (如月未緒)》之銘言: : 各位先進大家好 : 最近在寫 Win32 D3D Sprite 練習的時候碰到一個問題 : 程式本身以 Windowsed Mode 執行 : Sprite 與 Background Surface 也可以正常貼圖與更新 : 但在 Windows7 UAC 對話框 Popup 後,貼圖便會停止,同時也不會產生任何錯誤訊息 : 若在此時嘗試 Reset D3D Device,就會收到 D3DERR_INVALIDCALL ,接著 Crash : 不曉得版上是否有先進也曾碰到這類貼圖與 UAC 衝突的問題 : 我的開發環境 : Windows 7 Pro 32bit : VS2008 + Direct9 SDK 2010 June + Win32 C++ Project : 硬體為 Intel i3 530 + Intel HD Graphic : 望大家賜教 : 謝謝 最後用暴力法解決了 Try 1: UAC 會觸發 WM_ACTIVATEAPP ,因此在此事件內進行 D3DDevice->TestCooperativeLevel(); <- 得到 D3DERR_DEVICENOTRESET ReleaseD3DResource(); <- 釋放 Sprite、Font D3DDevice->Reset(&D3DParam); <- 得到 D3DERR_INVALIDCALL 結果失敗 Try 2: 在 Render() 內的 D3DDevice->Present(...) 得到 D3DERR_DEVICELOST 後進行 Try1 的操作 D3DDevice->TestCooperativeLevel(); <- 得到 D3DERR_DEVICENOTRESET D3DDevice->Reset(&D3DParam); <- 得到 S_OK; D3DResourceOnReset(); <- 執行 Sprite、Font 的 OnReset() 結果畫面並未恢復更新,簡單說就是沒反應 Try : 在 Render() 內的 D3DDevice->Present(...) 得到 D3DERR_DEVICELOST 後進行 D3DDevice->TestCooperativeLevel(); <- 得到 D3DERR_DEVICENOTRESET ReleaseALLD3DResource(); <- 釋放,並 Null 所有 Swap chain、Surface、Sprite Font、Texture、Device ReInitD3DDevice(); <- 重新建立 D3DDevice ReInitD3DResource(); <- 重新建立所有 Sprite、Surface、Font、Texture.... 結果可以動了,簡單說就是不用 Device Reset,全部自己來.. Orz -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.133.190.68
文章代碼(AID): #1FgCyqGF (GameDesign)
討論串 (同標題文章)
文章代碼(AID): #1FgCyqGF (GameDesign)