開發Windows程序的圖形庫,有很多選擇,Cairo,QT等等,但我比較喜歡用Native圖形庫:GDI,GDI+,DIRECT2D,
GDI感覺逐步退出舞臺,因爲界面美觀的和它沾不邊;GDI+是一個大坑,蝸牛般的龜速,如果不構想緩衝層,你根本無
法用GDI+來寫一個界面程序,否則你的程序繪製幀數很難高於30;而Direct2D看似是GDI和GDI+的終結者,但它也有
致命之處:Direct2D是不穩定的,隨機弄死你的程序。
我曾寫過一個代碼量50000左右的中小型項目,我使用的 Direct2D作爲圖形底層接口,但測試的結果是我的軟
件在Windows8.1上偶爾死機,而在Windows10上頻繁死機,爲此,我追蹤了所有相關的函數調用並設置了很多調試
點,最後找到了問題的根源:Direct2D在加載磁盤圖片時,會出現一定概率的死機。最後我又單獨爲這個問題編寫了
一個獨立的測試小程序,這個小程序只用Direct2D不斷地加載圖片,這個小程序也會經常死機,我排除了傳入參數
是否錯誤的問題,也排除了線程是否有內存空間的問題,換句話說,我排除了一切由我個人可能產生的崩潰的問題,
但Direct2D的加載函數還是崩潰了。
最後,我不得轉用了GDI+來作爲圖形庫,各種緩衝層的建立下,程序的幀數還算可以,當然讓我高興的結果是
程序崩潰現象沒有了,不管如何加載或者刪除GDI+對象,它都能正常執行。
如果哪位道友和我一樣遇到Direct2D死機的問題,或者知道其中的原因,感謝來和我交流,本人對 Direct2D
並不能說是非常精通,但一個圖形庫本沒有精不精通的說法,手捧着一本手冊基本誰都可以寫個項目出來。對於我的
Direct2D項目死機現象,我只能認爲是Direct2D內部錯誤。。。。