wince5下directdraw初體驗

2021-05-21 19:03:07 字數 1177 閱讀 9691

因專案下一步應用的需求,需要用directdraw來實現相應功能,因此先行做初步嘗試,建立乙個感性的認識。

眾所周知wince5支援directdraw,只是和pc下的還是有所不同的,在學習directdraw的時候就以public下的mosquito為例子進行學習,要讓這個程式在wince5下跑起來,還是要做一點改動的。

實現前提:

(1)要加入directdraw元件

(2)定製系統並生成sdk,並用此sdk編譯應用程式

(3)鏈結gxguid.lib,網上說的還需要uuid.lib和ddraw.lib,實際上在此例子中是不需要的,原因在下面描述。

修改(1)在執行到directdrawcreate時會報0xc0000005錯誤,原因可能與ddraw.lib有關。用從ddraw.dll動態獲取directdrawcreate指標來呼叫的方法,因此ddraw.lib不再需要鏈結。而在此例中,沒有其它的uuid使用,因此uuid.lib也不需要進行鏈結。

(2)directdrawcreate的第二個引數在使用上面的辦法獲取後,要由lpdirectdraw改為lpdirectdraw4

(3)執行createsu***ce建立overlay su***ce失敗,原因有兩個,如下

主要原因:顯示驅動ddraw功能有錯,改用另乙個bsp帶的顯示驅動問題解決,需要對兩個驅動進行比較找出問題所在。

次要原因:dwbackbuffercount由2改為1,為什麼只能有乙個buffer還需要深入了解。

(4)經過上述修改可以動態顯示,但底色沒有透明,去掉ddpfoverlayformats中關於yuv的兩個格式,只保留rgb565和rgba555兩種。

(5)前景色為綠色,而不是原有的黃色,估計與驅動中顏色索引有關,待深入了解。

從此例子來看,directdraw開發是先要建立乙個directdraw物件,然後建立prime su***ce和overlay su***ce,通過su***ce的操作顯示來達到動畫效果。

附:mosquito的基本流程

1、建立視窗

2、建立directdraw例項物件

3、設定螢幕為normal模式

4、建立主表面

5、判斷驅動是不否有overlay功能

6、建立overlay表面

7、載入位圖資源

8、配置overlay表面

9、設定計時器,迴圈變換位置並顯示 

WinCE5讀核筆記

一 exception vector到底在 struct arm high是被wince5 kernel安放在0xfffd,0000位址的乙個結構體。這個結構體非常大,我說它大不是因為它的 member很多,而是它的每個member都是乙個非常大的陣列。主要是為了對齊到一些特殊的位址。我們知道在 c...

擴充套件wince5物理中斷

我的開發環境是s3c2450 wince5,需要用到eint20做鍵盤中斷,但是因為wince5 預設只支援64個物理中斷,而且bsp用到的irq last是eint16。因為eint4到eint16 都有用處,想通過將eint20移到64 以內並新增靜態對映的方法就行不通了,只能用動態分配的方法,...

WinCE下Socket程式設計

wince下socket程式設計 wince 不支援win32中socket非同步類 那個mfc類忘記啥名字了 在軟體開發中 網路程式設計 是必不可少的基本功了 本文所講的 socket 程式設計也就是網路程式設計中的一種形式 當然你如果想問我什麼叫 socket 很遺憾的是我也不能準確的告訴你!但...