DirectDraw 娓告垙缂栫▼鍩虹(1)
鍙戝竷: 2008-6-26 12:30 | 浣滆: admin | 鏌ョ湅: 84娆
寰蒋鍏徃渚涚ǹ
鍐 瀹
1锛 绠浠
2. 浣跨敤 DirectX 3 SDK鐨勫熀鏈幆澧
3. DirectDraw API
4. DirectDraw, OLE, 鍜孋OM鎺ュ彛
5. DirectDraw 璧锋
6. DirectDraw 鐨勫熀鏈煡璇 (DDEX1)
7. 渚嬩竴鐨勬墿灞(DDEX2鍜孌DEX3)
8. 鐢熸垚绠鍗曠殑鍔ㄧ敾(DDEX4鍜 DDEX5)
9. 妫楠孌uel渚嬪瓙
10. 鍏充簬鏈浼樺寲锛圤ptimizations锛夊拰瑙勮寖鍖栵紙Customizations锛
11锛 涓嬩竴姝ヤ綘搴旇骞蹭粈涔
绠 浠
DirectDraw鏄井杞柊杩戝彂琛岀殑DirectX 3杞欢寮鍙戝伐鍏风锛圫DK锛変腑鐨勪竴閮ㄥ垎銆傚閭d簺涓嶇敋浜嗚В鐨勪汉鏉ヨ锛孌irectX 3 SDK鏄師鏉ョО涓烘父鎴廠DK鐨勬渶鏂扮増鏈傚拰鍦ㄦ父鎴廠DK涓竴鏍凤紝DirectX 3 SDK鍖呭惈浜嗕竴缁勫姩鎬侀摼鎺ュ簱锛岀敤鏉ュ浘褰㈠姞閫燂紝3D鍥惧舰鏈嶅姟锛屽0闊冲姞閫燂紝鎵╁睍杩炴帴锛屾父鎴忔潌鎿嶇旱浠ュ強CD-ROM鑷姩鍖栥
鍏充簬DirectX 3 SDK鍙互鏈夊緢澶氱殑璇濋璁ㄨ锛屾湰绡囧彧娑夊強濡備綍鐢―irectDraw鏉ョ紪鍐欐父鎴忎腑鐨勫浘褰㈤儴鍒嗐傚敖绠¢渶瑕佷竴浜涙湁鍏砄LE鍜屾瀯浠舵ā鍨嬶紙COM锛夋帴鍙g殑鍩虹鐭ヨ瘑锛屾暣涓繃绋嬭繕鏄浉褰撶畝鍗曠殑銆傝屼笖锛屾墍闇鐨勬湁鍏砄LE鍜孋OM鎺ュ彛鐨勭煡璇嗕篃灏嗗湪姝よ璁哄埌銆
璇诲畬鏈瘒鍚庯紝鎮ㄥ氨鍙互鐢―irectDraw鏉ュ啓绠鍗曠殑娓告垙浜嗐傚湪杩欓噷锛屾垜鍙兂璁ㄨ濡備綍浣跨敤鏈鍩烘湰鐨凞irectDraw鍑芥暟銆傛墍涓剧殑渚嬪瓙浠呮秹鍙婂埌鍏ㄥ睆鍜岀炕椤碉紝涓嶈璁哄浣曞湪绐楀彛涓娇鐢―irectDraw锛屽湪3缁村浘涓娇鐢ㄦ枃瀛楋紝浣跨敤瑙嗛鍓帴鎴栨槸鐢―irect3D鐢熸垚琛ㄩ潰銆傚鏋滃杩欎簺鍐呭鎰熷叴瓒o紝鍙互鍙傞槄鏈夊叧鐨勬枃妗c
浣跨敤 DirectX 3 SDK鐨勫熀鏈幆澧
DirectX 3 SDK鍙互鍦╓indows 95鎴朩indows NT4.0涓娇鐢ㄣ傚熀浜庢湰鏂囩殑鐩殑锛屽亣瀹氫娇鐢ㄧ殑鐜鏄疘BM PC鍜學indows 95.鍙﹀锛岃繕闇瑕佸畨瑁匘irectX 3 SDK锛屼互渚跨紪璇戣繛鎺ュ簲鐢ㄣ
鍚屾椂锛屼娇鐢ㄧ殑C鎴 C++ 缂栬瘧鍣ㄥ簲鑳界敓鎴32浣嶇殑搴旂敤銆傛偍涔熷彲浠ヤ娇鐢ㄥ叾浠栫殑璇█锛屼絾杩欓噷骞朵笉鎯虫秹鍙娿傚綋鐒舵偍杩樺簲褰撳叿鏈塛indows鐨勭紪绋嬫妧鏈
濡傛灉浣跨敤鐨勬槸C缂栬瘧鍣紝鍒欒繕蹇呴』鍖呭惈Win32 SDK銆俉in32 SDK鍖呭惈浜嗙敓鎴愬彲鎵ц绋嬪簭鏃剁殑涓浜涘簱銆
DirectDraw API
DirectDraw鏄暣涓蒋浠跺紑鍙戝伐鍏风鐨勪竴涓瀯浠躲侱irectDraw鏄负閫熷害鑰岃璁$殑锛屽畠缁曡繃涓嶹indows鐨勫浘褰㈣澶囩浉杩炵殑澶氫釜灞傛锛岀洿鎺ヤ笌纭欢鐨勫簳灞傛墦浜ら亾銆傝繖寰堥傚悎娓告垙缂栫▼鏉ワ紝鍥犱负瀹冪潃閲嶄簬蹇熶骇鐢熷钩绋崇殑鍥惧舰銆
浣咲irectDraw鏈閲嶈鐨勪竴鐐瑰湪浜庡畠瀵逛笉鍚岀殑鏄剧ず閫傞厤鍣ㄥ叿鏈変竴涓叡鍚岀殑鎺ュ彛銆傛偍涓嶅繀绠℃偍鐨勭▼搴忓畠鏄惁浼氬伐浣溿侱irectDraw鍒╃敤鍖呭惈鍦ㄧ‖浠舵娊璞″眰锛圚AL锛変腑鐨勪俊鎭潵鍐冲畾鏄剧ず閫傞厤鍣ㄧ殑鍔熻兘銆傦紙HAL鏄敱鏄剧ず閫傞厤鍣ㄥ巶鍟嗘彁渚涚殑锛塇AL涓轰笉鍚岀殑纭欢鍘傚晢鍜屼娇鐢.DirectDraw鐨勫紑鍙戣呮彁渚涗簡鍏卞悓鐨勬帴鍙c
鐒惰岋紝DirectDraw骞朵笉鍙檺浜庡埄鐢ㄦ樉绀洪傞厤鍣ㄧ殑纭欢鍔熻兘銆傚鏋滄偍鐨勭▼搴忔寚瀹氫簡鏌愪竴绉嶇壒瀹氱殑鏄剧ず閫傞厤鍣紝渚嬪XXXX hardware blitter锛屼絾鐢ㄦ埛骞舵病鏈夎纭欢锛岀▼搴忓氨浼氫娇鐢―irectDraw鐨勭‖浠朵豢鐪熷眰锛圚EL锛夈傚湪杩欑鎯呭喌涓嬶紝DirectDraw鍒╃敤鍐呭缓鐨勭‖浠朵豢鐪熸潵浠跨湡缂哄皯鐨勭‖浠躲
鍥句竴璇存槑浜咲irectDraw鍜屽叾浠朩indows鏄剧ず鏋勪欢鐨勮仈绯汇
鍥1. DirectDraw鍜屽叾浠朩indows鏄剧ず鏋勪欢
DirectDraw API鐢盌irectDraw瀵硅薄缁勬垚锛屽畠琛ㄧず鍏蜂綋鐨勬樉绀洪傞厤鍣ㄣ傚彟澶栵紝DirectDraw API杩樺寘鎷〃绀簊urface鐨凞irectDrawSurface瀵硅薄锛岃〃绀簊urface璋冭壊鏉跨殑DirectDrawPalette瀵硅薄鍜岃〃绀哄壀鎺ュ垪琛ㄧ殑DirectDrawClipper瀵硅薄銆傚彲浠ョ敤DirectDraw瀵硅薄鏉ュ垱寤篋irectDrawSurface鍜孌irectDrawPalette瀵硅薄銆傦紙涔熷彲鐢―irectDraw瀵硅薄鏉ュ垱寤篋irectDrawClipper瀵硅薄锛屼絾璇ュ壀鎺ュ璞′篃鍙鐙珛鍦板垱寤恒傝繖灏辨秹鍙婂埌鍙﹀鐨勮瘽棰樹簡銆傦級鍒涘缓鍏ㄥ睆娓告垙瑕佺敤鍒扮殑鍙槸DirectDraw锛孌irectDrawSurface鍜孌irectDrawPalette瀵硅薄銆
瑕佷簡瑙h繖浜涘璞℃槸濡備綍宸ヤ綔鐨勶紝蹇呴』瀵筄LE鍜孋OM鎺ュ彛鏈夊熀鏈殑浜嗚В銆侰OM鎺ュ彛鏄墍鏈塂irectDraw缂栫▼鐨勫熀纭銆備笅涓鑺傚皢璁ㄨCOM鎺ュ彛锛屽鏋滄偍鐔熸倝OLE锛屽垯鍙烦杩囧畠銆
DirectDraw, OLE, 鍜孋OM鎺ュ彛
DirectDraw鏄洿缁曠潃OLE鍜孋OM鎺ュ彛鏉ヨ璁$殑銆傚鏋滄偍涓嶇啛鎮塐LE缂栫▼锛岄偅灏嗗緢闅惧紑濮嬬敤DirectDraw缂栫▼锛岃繖鏄渶鍩烘湰鐨勪竴鐐广傚敖绠″湪寰堝涔︿笂瑙i噴浜嗗緢澶氭蹇碉紝浠嬬粛OLE鍜孋OM鎺ュ彛鏄浣曞伐浣滅殑锛屼絾瑕佺敤濂紻irectDraw鍏跺疄鍙浜嗚В鏈夐檺鐨勪竴浜涖
棣栧厛鐪嬬湅OLE鍜孋OM鐨勫畾涔夈侽LE鏄井杞负鍦ㄤ笉鍚岀殑杩涚▼鍜屾満鍣ㄩ棿鍏变韩淇℃伅鍜屾湇鍔¤屽紩杩涚殑鍩轰簬瀵硅薄鐨勬妧鏈侰OM鎸囩殑鏄瀯浠跺璞℃ā鍨嬶紝鍦∣LE缂栫▼涓紝瀹冩槸鎺ュ彛妯″瀷銆傜煡閬撹繖浜涙蹇靛悗灏卞彲涓嶇悊瀹冧滑浜嗭紝鍥犱负杩欏鎴戜滑缂栫▼骞朵笉閲嶈銆傛垜浠缁х画娣卞叆鐨勬槸涓虹敤濂紻irectDraw鎵闇浜嗚В鐨凜OM鎺ュ彛鐨勬渶灏戠殑鐭ヨ瘑銆
浠庢湰璐ㄤ笂璇达紝COM鎺ュ彛鐢变笁涓垚鍛樼粍鎴愶細瀵硅薄锛屾帴鍙e拰鏂规硶銆傚璞″疄璐ㄤ笂鏄竴涓粦绠憋紝涓嶉渶瑕佺瀹冮噷闈㈡槸浠涔堬紝鍥犱负鎴戜滑鍙槸閫氳繃鎺ュ彛鏉ヤ笌瀹冩墦浜ら亾銆傝岃瀹屾垚杩欎竴杩囩▼锛岄氳繃鐨勫垯鏄柟娉曘傚鏋滄偍鏈変竴浜涚‖浠剁煡璇嗙殑璇濓紝鍙互鎶婁竴涓璞℃兂璞℃垚涓闆嗘垚鐢佃矾銆備笌闆嗘垚鐢佃矾锛堝璞★級閫氳鏄氳繃绠¤剼锛堟帴鍙o級鏉ュ彂閫佹垨鎺ユ敹淇″彿锛堟柟娉曪級銆
鎵鏈夌殑COM鎺ュ彛閮芥槸浠嶰LE鐨処unknown鎺ュ彛娲剧敓鏉ョ殑銆傞氳繃淇濇寔Direcdraw瀵硅薄鐨勫紩鐢ㄦ鏁帮紝Iunknown鎺ュ彛缁存姢瀵硅薄鐨勭敓瀛樻湡銆傚彟澶栵紝瀹冩彁渚涗簡鍐冲畾瀵硅薄鍙敤鎺ュ彛鐨勬柟娉曘侷unknown鎺ュ彛鐢变笁绉嶆柟娉曠粍鎴愶細AddRef,Release鍜孮ueryInterface銆
AddRef鍜孯elease璐熻矗淇濇寔瀵硅薄鐨勫紩鐢ㄨ鏁般傚綋鍒涘缓浜嗕竴涓璞$殑瀹炰緥鏃讹紝瀵硅薄鐨勫紩鐢ㄨ鏁拌涓1銆傚彧瑕佸嚱鏁拌繑鍥炰簡瀵硅薄鎺ュ彛鐨勬寚閽堬紝璇ュ嚱鏁板繀椤婚氳繃寰楀埌鐨勬寚閽堣皟鐢ˋddRef锛屽皢寮曠敤璁℃暟澧炲姞1銆傦紙鍙﹀锛屽綋鍙︿竴涓簲鐢ㄤ笌璇ュ璞$浉杩炴椂锛屽紩鐢ㄨ鏁颁篃瑕佸姞1,瀵规垜浠潵璇达紝杩欎竴鐐瑰苟涓嶉噸瑕侊紝鍥犱负鎴戜滑骞朵笉灏嗗叾浠栫殑搴旂敤杩炲埌娓告垙涓娿傦級
褰撶敤瀹屼竴涓帴鍙e悗锛岃閫氳繃鎸囬拡鏉ヨ皟鐢≧elease锛屽皢寮曠敤璁℃暟鍑1銆傝鏀跺洖涓涓璞℃椂锛屽畠鐨勫紩鐢ㄨ鏁板繀椤讳负0銆傚綋瀵硅薄鐨勫紩鐢ㄨ鏁颁负0鏃讹紝瀵硅薄灏嗚娑堥櫎锛屽畠鎵鏈夌殑鎺ュ彛閮芥棤鏁堜簡銆
绗笁涓柟娉曪紝QueryInterface锛屾煡璇㈠璞℃槸鍚︽敮鎸佹寚瀹氱殑鎺ュ彛銆傚鏋滃璞℃敮鎸侊紝鍒欒繑鍥炴寚鍚戞帴鍙g殑鎸囬拡銆
AddRef锛孮ueryInterface锛屽拰Release鏄浣曚笌DirectDraw鐩歌繛鐨勫憿锛熼鍏堬紝鎴戜滑娌℃湁鐞嗙敱鍦ㄥ彧鐢―irectDraw鐨勭畝鍗曟父鎴忎腑浣跨敤AddRef鍜孮ueryInterface銆侱irectDraw鍒涘缓浜嗗嚱鏁版潵璐熻矗澧炲姞寮曠敤璁℃暟骞惰繑鍥炴寚鍚戞帴鍙g殑鎸囬拡銆備絾鎮ㄤ粛瑕佸娌′竴涓殣寮忓垱寤虹殑鎺ュ彛鎸囬拡鎵цRelease鎿嶄綔銆傚鏋滄病鏈夌淮鎶ゅソ瀵硅薄鐨勫紩鐢ㄨ鏁帮紝灏嗗緢瀹规槗寮曡捣鍐呭瓨娉勯湶銆傚湪鍚庨潰缂栫爜鐨勪緥瀛愪腑锛屽皢浠嬬粛濡備綍杩涜銆傦紙涔熷彲鍦ㄥ皢搴旂敤涓庡彟涓搴旂敤浣跨敤鐨凞irectDraw瀵硅薄鐩歌繛鏃讹紝浣跨敤AddRef鍜孮ueryInterface銆傚悓鏍凤紝濡傛灉浣跨敤Direct3D锛屽氨涓嶅緱涓嶇敤QueryInterface鏉ヨ繑鍥炴寚鍚慏irect3D鎺ュ彛鐨勬寚閽堛傝繖浜涘唴瀹归兘涓嶅湪姝よ璁恒傦級
涓嬮潰鐪嬩竴涓娇鐢↖DirectDraw鎺ュ彛鏂规硶鐨凜绋嬪簭琛屻
Ddrval = lpDD->lpVtbl->SetDisplayMode( lpDD, ScreenX, ScreenY, ScreenBpp );
绋嬪簭鐢ㄤ簡SetDisplayMode鏂规硶鏉ヨ缃樉绀烘ā寮忥紝杩斿洖鍊艰〃绀烘垚鍔熸垨澶辫触銆傚湪姝ら噸瑕佺殑涓鐐规槸濡備綍鍙栧緱鎸囧悜鏂规硶鐨勬寚閽堬紝涓嶈兘鐩存帴璁块棶IDirectDraw鎺ュ彛鏂规硶銆傚綋涓瀵硅薄瀹炰緥鍖栨椂锛屽畠鐢熸垚涓涓櫄鍑芥暟琛紝绉颁负vtable锛屽畠鍖呭惈浜嗘寚鍚戣瀵硅薄鎺ュ彛鏂规硶鐨勬墍鏈夋寚閽堛傚湪涓婁緥涓紝鎸囧悜DirectDraw瀵硅薄鐨勬寚閽堬紙lpDD锛夋寚鍚戜簡鎸囧悜vtable鐨勬寚閽堬紙lpVtbl锛夛紝vtable涓寘鍚簡瀵硅薄鎵鏈夋柟娉曠殑鎸囬拡锛屽叿浣撳湴璇达紝鏈緥涓寚鍚戜簡SetDisplayMode鏂规硶銆傚簲鐢ㄥ拰鏂规硶鎺ュ彛闂寸殑鑱旂郴鍙互娓呮鍦扮湅鎴愯繖鏍凤細
涓嬩竴涓緥瀛愮湅鐪嬪浣曠敤C++鏉ュ仛锛




发表于 2009-1-5 19:48
| 











