锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 寰蔣鐨凞irectX杞歡寮鍙戝伐鍏峰寘錛圫DK錛夋彁渚涗簡涓濂椾紭縐鐨勫簲鐢ㄧ▼搴忕紪紼嬫帴鍙o紙APIs錛夛紝榪欎釜緙栫▼鎺ュ彛鍙互鎻愪緵緇欎綘寮鍙戦珮璐ㄩ噺銆佸疄鏃剁殑搴旂敤紼嬪簭鎵闇瑕佺殑鍚勭璧勬簮銆侱irectX鎶鏈殑鍑虹幇灝嗘瀬澶х殑鏈夊姪浜庡彂灞曚笅涓浠e濯掍綋搴旂敤紼嬪簭鍜岀數鑴戞父鎴忋?/p> 鎬葷殑璇存潵錛屼嬌鐢―irectX鐨勪富瑕佹湁涓や釜濂藉錛?銆佷負杞歡寮鍙戣呮彁渚涚‖浠舵棤鍏蟲э紱2銆佷負紜歡寮鍙戞彁渚涚瓥鐣ャ? 1銆佷負杞歡寮鍙戣呮彁渚涚‖浠舵棤鍏蟲?/p> 寰蔣寮鍙慏irectX錛屽叾鏈涓昏鐨勭洰鐨勪箣涓鏄績榪涘湪Windows鎿嶄綔緋葷粺涓婄殑娓告垙鍜屽濯掍綋搴旂敤紼嬪簭鐨勫彂灞曘傚湪DirectX鍑虹幇浠ュ墠錛屼富瑕佺殑娓?
鎴忓紑鍙戝鉤鍙版槸MS-DOS錛屾父鎴忓紑鍙戣呬滑涓轟簡浣夸粬浠殑紼嬪簭鑳藉閫傚簲鍚勭鍚勬牱鐨勭‖浠惰澶囪岀粸灝借剳姹併傝嚜浠庢湁浜咲irectX錛屾父鎴忓紑鍙戣呬滑渚垮彲浠ヨ幏鐩婁簬
Windows騫沖彴鐨勮澶囨棤鍏蟲э紝鑰屽張涓嶅け鍘葷洿鎺ヨ闂‖浠剁殑鐗規с侱irectX涓昏鐨勭洰鐨勫氨鏄彁渚涜薄MS-DOS涓鏍風畝媧佺殑璁塊棶紜歡鐨勮兘鍔涳紝鏉ュ疄鐜板茍涓?
鎻愰珮鍩轟簬MS-DOS騫沖彴搴旂敤杞歡鐨勮繍琛屾晥鏋滐紝騫朵笖涓轟釜浜虹數鑴戠‖浠剁殑闈╂柊鎵櫎闅滅銆?/p> 鍙︿竴鏂歸潰錛屽井杞叕鍙稿紑鍙慏irectX鏄負浜嗗湪褰撳墠鎴栦粖鍚庣殑璁$畻鏈烘搷浣滅郴緇熶笂鎻愪緵緇欏熀浜嶹indows騫沖彴鐨勫簲鐢ㄧ▼搴忎互楂樿〃鐜板姏銆佸疄鏃剁殑璁塊棶紜歡鐨?
鑳藉姏銆侱irectX鍦ㄧ‖浠惰澶囧拰搴旂敤紼嬪簭涔嬮棿鎻愪緵浜嗕竴濂楀畬鏁翠竴鑷寸殑鎺ュ彛錛屼互鍑忓皬鍦ㄥ畨瑁呭拰閰嶇疆鏃剁殑澶嶆潅紼嬪害錛屽茍涓斿彲浠ユ渶澶ч檺搴︾殑鍒╃敤紜歡鐨勪紭縐鐗規с傞氳繃
浣跨敤DirectX鎵鎻愪緵鐨勬帴鍙o紝杞歡寮鍙戣呭彲浠ュ敖鎯呯殑鍒╃敤紜歡鎵鍙兘甯︽潵鐨勯珮鎬ц兘錛岃屼笉鐢ㄧ儲鎭間簬閭d簺澶嶆潅鑰屽張澶氬彉鐨勭‖浠舵墽琛岀粏鑺傘?/p> 涓涓珮琛ㄧ幇鍔涚殑鍩轟簬Windows騫沖彴鐨勬父鎴忓皢寰楃泭浜庝互涓嬪嚑縐嶆妧鏈細 涓撲負鎻愰珮鍥懼艦榪愮畻鍙婂揩閫熷弽搴旇兘鍔涜岃璁$殑鍔犻熷崱錛圓ccelerator cards錛? 2銆佷負紜歡寮鍙戞彁渚涚瓥鐣?/p> DirectX鐨勫彟澶栦竴涓噸瑕佺殑鐩殑鏄粰紜歡鍘傚晢鎻愪緵寮鍙戠瓥鐣ワ紝浠栦滑鍙互浠庨珮鎬ц兘紼嬪簭鐨勫紑鍙戣呭拰鐙珛鐨勭‖浠朵緵搴斿晢錛坕ndependent
hardware vendors IHVs錛夐偅閲屽緱鍒板弽棣堛傛墍浠ワ紝鍦―irectX
紼嬪簭鍛樺弬鑰冧功涓湁鏃跺彲鑳戒細鎻愪緵閭d簺榪樹笉瀛樺湪鐨勭‖浠跺姞閫熻澶囩殑鎶鏈粏鑺傘傚湪寰堝鏃跺欙紝杞歡鍙互妯℃嫙榪欎簺鐗規э紝鍦ㄥ彟澶栦竴浜涙儏鍐典笅錛岃蔣浠舵牴鎹‖浠剁殑鎸囨爣鍒ゆ柇鍑哄叾
鐗規э紝騫朵笖鍙互蹇界暐閭d簺紜歡騫朵笉鏀寔鐨勬ц兘銆?/p> 宸茬粡鍜屽皢瑕佸疄鐜扮殑鏄劇ず璁懼鐨勭壒鎬у寘鎷細 瑕嗙洊(Overlays)錛岀敱浜庡畠鐨勮鏀寔錛屽湪鍥懼艦璁懼鎺ュ彛涓紝紿楀彛涓殑鎹㈤〉錛坧age flipping錛夊皢鎴愪負鍙敤銆傛崲欏墊槸鐢ㄦ潵鍦ㄦ暣涓睆騫曚笂鏄劇ず鐢婚潰鐨勫弻緙撳啿錛坉ouble-buffer錛夋柟妗堛? 鏍囧噯2鍏嗘樉紺哄唴瀛橈紝榪欏湪3D娓告垙涓槸鏈灝忛渶姹傘? 灝嗚琚寘鎷殑澹伴煶璁懼鐨勬柊鐗規у寘鎷細 紜歡鍙婂叾澶栬鍙互鎻愪緵絀洪棿鐜粫绔嬩綋澹版晥鏋溿? 2銆丏irectX鐨勭粍浠?/p> DirectX SDK涓哄熀浜嶹indows騫沖彴鐨勫簲鐢ㄧ▼搴忔彁渚涗簡浠ヤ笅鍑犱釜緇勪歡銆? DirectDraw 錛氶氳繃鐩存帴璁塊棶鏄劇ず紜歡鏉ユ彁渚涢珮綰х殑鍥捐薄澶勭悊鑳藉姏銆? -------------------------------------------------------------------------------- 3銆佸叧浜嶥irectDraw DirectDraw鏄疍irectX
SDK澶у鏃忎腑鐨勪竴鍛橈紝涔熸槸鍏朵腑鏈涓昏鐨勪竴涓儴浠躲侱irectDraw鍏佽紼嬪簭鍛樼洿鎺ョ殑鎿嶄綔鏄懼瓨銆佺‖浠朵綅鍥炬槧灝勪互鍙婄‖浠惰鐩栧拰鎹㈤〉鎶鏈傚畠鍦ㄦ彁渚涜繖浜涘姛
鑳界殑鍚屾椂錛屼篃浣垮叾涓庣幇鍦ㄧ殑鍩轟簬Microsoft Windows鐨勫簲鐢ㄧ▼搴忓拰璁懼椹卞姩紼嬪簭鐩稿吋瀹廣? DirectDraw鏄竴涓蔣浠舵帴鍙o紝瀹冨湪鎻愪緵鐩存帴璁塊棶鏄劇ず璁懼鐨勫悓鏃訛紝涓嶹indows鍥懼艦璁懼鎺ュ彛錛圙DI錛夌浉鍏煎銆侱irectDraw涓嶆槸
涓涓珮灞傜殑鍥懼艦紼嬪簭緙栫▼鎺ュ彛錛屽畠涓烘父鎴忓拰Windows瀛愮郴緇熻蔣浠訛紙渚嬪錛?D鍥懼艦鍖呭拰鏁板瓧瑙嗛緙栫爜錛夋彁渚涗簡涓縐嶄笌璁懼鏃犲叧鐨勯斿緞錛屼互鑾峰緱璁塊棶鐗瑰畾鐨勬樉紺?
璁懼鐨勬煇浜涢珮綰х壒鎬х殑鑳藉姏銆?/p> DirectDraw閫傜敤浜庣綾諱紬澶氱殑鐨勬樉紺鴻澶囷紝浠庣畝鍗曠殑SVGA鏄劇ず鍣ㄥ埌鎻愪緵瑁佸壀銆佺緝鏀俱佸拰鏀寔闈濺GB棰滆壊鏍煎紡鐨勯珮綰х‖浠跺疄鐜拌澶囥傝璁¤繖鏍?
鐨勬帴鍙f槸涓轟簡璁╀綘鐨勫簲鐢ㄧ▼搴忚兘澶熷垪涓句綆灞傜‖浠剁殑鑳藉姏錛屽茍涓斿閭d簺鏀寔鐨勭‖浠跺姞閫熺壒鎬у姞浠ュ埄鐢ㄣ傞偅浜涘湪紜歡璁懼涓笉鑳藉疄鐜扮殑鐗規э紝DirectX灝嗕豢鐪熷嚭
鏉ャ? DirectDraw鎻愪緵浜嗕互涓嬪嚑涓紭鐐癸紝榪欎簺濂藉鍦ㄤ互鍓嶅彧鏈夐偅浜涗笓涓虹壒瀹氭樉紺鴻澶囨墍鍐欑殑杞歡鎵嶈兘鍒╃敤銆? 鏀寔鍙岀紦鍐插拰鎹㈤〉鍥懼艦 DirectDraw緇欒繍琛屼簬Windows 95鍜學indows NT 4.0鎴栨洿楂樼増鏈殑璁$畻鏈烘彁渚涗簡涓涓珮鎬ц兘鐨勭殑娓告垙鍥捐薄寮曟搸銆? 4銆佷負浠涔堣浣跨敤DirectDraw? 鏃犲焊緗枒錛屼漢浠箣鎵浠ュ埄鐢―irectDraw鏉ュ紑鍙戝悇縐嶆父鎴忎互鍙婂濯掍綋搴旂敤杞歡錛屾槸鍥犱負DirectDraw鍙互涓轟粬浠殑搴旂敤紼嬪簭甯︽潵璁稿寮哄ぇ鐨勫姛鑳芥彁鍗囥?/p> DirectDraw鍙互鍏呭垎璇勪及瑙嗛紜歡鐨勮兘鍔涳紝鍙鍙兘錛屽畠灝變細瀵瑰叾鏌愪竴鐗規у姞浠ュ埄鐢ㄣ備緥濡傦紝濡傛灉浣犵殑鏄懼崱鏀寔紜歡Blit錛?
DirectDraw灝變細灝嗕綅鍥炬槧灝勮繖涓鎿嶄綔鍒嗘淳緇欐樉鍗℃潵瀹屾垚錛屾瀬澶х殑鎻愬崌榪愯閫熷害銆傛澶栵紝褰撴煇紜歡涓嶆敮鎸佹煇欏圭壒鎬ф椂錛孌irectDraw榪樻彁渚涗簡紜歡
浠跨湡灞傦紙HEL錛変互瀹屾垚榪欓」鎿嶄綔銆? 5銆丏irectX 5.0鐨勬柊鐗規?/p> 棣栧厛錛孌irectDraw鏀寔Windows98鍜學indows NT
5.0鐨勫鏄劇ず鍣ㄧ郴緇熴備緥濡傦紝鍦ㄥ鏄劇ず鍣ㄧ幆澧冧笅錛屽悓涓鍙扮數鑴戜嬌鐢ㄤ袱濂椾笉鍚岀殑鏄劇ず璁懼鍜屾樉紺哄櫒錛岀敤鎴峰彲浠ュ皢涓嶅悓鐨勭敾闈㈡樉紺哄湪涓や釜鏄劇ず灞忓箷涓婏紝鐢氳嚦灝嗕竴涓獥鍙?
浠庝竴涓樉紺哄櫒鎷栨嫿鍒板彟涓涓樉紺哄櫒涓娿侱irectDraw5.0鏀寔榪欐牱涓涓郴緇燂紝鍏佽搴旂敤紼嬪簭鍦ㄨ繖鏍風殑鐜涓洿鎺ョ殑璁塊棶鍜屾搷綰電‖浠跺姞閫熺壒鎬с?/p> 鍏舵錛孌irectDraw宸茬粡浣胯棰戠鍙o紙Video-port錛夊叿鏈夋柊鐨勬ц兘錛屽畠鍏佽搴旂敤紼嬪簭鐩存帴鎺у埗鏁版嵁嫻佷粠涓涓‖浠惰棰戠鍙f祦鍚戜竴涓綅浜庢樉瀛樹腑鐨凞irectDraw欏甸潰涓娿傝繖鏍鳳紝浣垮緱瑙嗛鍥捐薄鐨勮緭鍏ュ拰杈撳嚭瀵笵irectDraw鏉ヨ閮藉彉寰楁瀬涓轟究鍒╁拰蹇熴?/p> 闄ゆ涔嬪錛孌irectDraw鐨凥EL錛堢‖浠朵豢鐪熷眰錛夌幇鍦ㄥ彲浠ュ厖鍒嗗埄鐢≒entium
MMX澶勭悊鍣ㄦ墍甯︽潵鐨勫濯掍綋鎬ц兘鐨勬彁鍗囥傚綋浣犵涓嬈″垱寤洪〉闈㈢殑鏃跺欙紝DirectDraw浼氭祴璇曚綘鐨勭數鑴戣姱鐗囨槸鍚︽敮鎸丮MX銆傝屽湪涓鍙伴潪Pentium
MMX綰у埆鐢佃剳涓婏紝榪欎釜嫻嬭瘯浼氬湪璋冭瘯紼嬪簭鐨勬椂鍊欑粰鍑轟竴涓壇鎬х殑寮傚父淇℃伅錛岃岃繖涓紓甯稿茍涓嶄細褰卞搷鍒頒綘鐨勫簲鐢ㄧ▼搴忔墽琛岀殑紼沖畾鎬с?/p> DirectDraw鎺ュ彛鐜板湪榪樻敮鎸佺灞忛〉闈㈢殑瀹藉害澶т簬涓婚〉闈㈢殑瀹藉害銆備綘鍙互鍒涘緩榪欎簺欏甸潰鑰屼笉鐢ㄩ【鍙婂畠鐨勫ぇ灝忥紝鑰屽湪浠ュ墠鐨勭増鏈腑錛屼綘緇忓父浼氫負浜嗕笉浣塊〉闈㈠搴﹀ぇ浜庝富欏甸潰鑰屽皢鍏跺垎鍓插紑鏉ャ?/p> DirectDraw鎺ュ彛鐜板湪宸茬粡鑳藉鏀寔楂樼駭鍥懼艦绔彛錛圓GP錛夋瀯鏋躲傚湪瑁呭浜咥GP鏄懼崱鐨勭郴緇熶腑錛孌irectDraw紼嬪簭寮鍙戣呭皢浠嶢GP鏄懼崱鐨勫ぇ瀹歸噺鍜岄珮浼犺緭閫熺巼涓幏鐩娿?/p> 6銆侀儴浠跺璞℃ā鍨嬶紙COM錛?/p> DirectX鏄熀浜嶤OM鐨勪竴濂楄蔣浠剁紪紼嬫帴鍙c?/p> 閮ㄤ歡瀵硅薄妯″瀷錛圕omponent Object Model, COM錛夋槸OLE 鐨勫熀紜銆侰OM
涓篛LE鎻愪緵浜嗙紪紼嬫ā鍨嬪拰浜岃繘鍒舵爣鍑嗐侰OM瀹氫箟騫跺疄鐜頒簡杞儴浠訛紙濡傚簲鐢ㄧ▼搴忋佹暟鎹璞°佹帶浠跺強鏈嶅姟錛夋満鍒訛紝騫舵妸瀹冧滑緇熺О涓衡滃璞♀濄傛瘡涓蔣閮ㄤ歡瀵硅薄鐢辨暟
鎹互鍙婅闂暟鎹殑鍑芥暟緇勬垚錛岃闂蔣閮ㄤ歡瀵硅薄鏁版嵁鐨勫嚱鏁扮殑闆嗗悎縐頒負鈥滄帴鍙b濄?/p> 浠庤繖閲屽彲浠ョ湅鍑猴紝COM
鐨勮璁′笌C++綾婚潪甯哥浉浼鹼紝鍗充竴涓蔣閮ㄤ歡瀵硅薄鍏鋒湁涓涓唴閮ㄦ暟鎹粨鏋勫拰涓緇勫閮ㄦ帴鍙e嚱鏁幫紝鍏佽閫氳繃鎺ュ彛鍑芥暟瀵規暟鎹繘琛岃闂傚洜姝icrosoft鍏徃鎶婃牴
鎹瓹OM鎵ц鐨勫璞$粺縐頒負Windows瀵硅薄銆備絾Windows瀵硅薄涓嶤++涓殑瀵硅薄鏈夋槑鏄劇殑宸埆錛學indows瀵硅薄涓病鏈夊叕鍏辨暟鎹紝涔熸病鏈夋垚鍛樺嚱鏁幫紝
鍥犳涓嶈兘鐩存帴璁塊棶鏁版嵁錛屼篃灝辨槸璇存暟鎹槸鍏ㄥ皝瑁呯殑銆?/p> 瀵硅薄鐨勬彁渚涜呮垨鏈嶅姟鍣ㄥ繀欏繪寚鏄庝竴涓垨澶氫釜鎺ュ彛鐨勫畾涔夛紝姣忎釜鎺ュ彛閮芥槸鐩鎬簰鍏寵仈鐨勪竴緇勫嚱鏁幫紝鎵ц瀵硅薄鐨勪竴涓壒鎬с傛瘡涓璞$殑涓涓敤鎴鳳紙鎴栫О涓衡滃鎴封濓級
蹇呴』鎷ユ湁涓涓帴鍙f寚閽堟墠鑳借闂璞°傚綋瀹㈡埛鏈変簡榪欎釜鎸囬拡鍚庯紝灝卞彲浠ヤ嬌鐢ㄨ繖涓璞¤屾棤闇鐭ラ亾瀵硅薄鐨勫惈涔夛紝鍗充嬌瀹㈡埛榪愯鍦ㄤ笉鍚岀殑榪涚▼銆佷笉鍚岀殑鏈哄櫒銆佷笉鍚岀殑鎿嶄綔
緋葷粺銆佺敱涓嶅悓鐨勮蔣浠跺紑鍙戣屼嬌鐢ㄤ笉鍚岀殑璇█錛屾垨鑰呯増鏈笉鍚屻?/p> DirectX
SDK鎺ュ彛琚垱寤哄湪COM緙栫▼灞傛琛ㄤ腑寰堝熀紜鐨勪竴灞傘傛瘡涓涓唬琛ㄨ澶囩殑瀵硅薄鐨勬帴鍙o紝姣斿IDirectDraw銆両DirectSound銆佸拰
IDirectPlay錛屾槸鐩存帴浠嶪Unknown
OLE鎺ュ彛涓淳鐢熶笅鏉ョ殑銆傝繖浜涘熀鏈璞$殑鍒涘緩琚搷浣滀簬鍦ㄨ瀵硅薄鐨勫姩鎬佽繛鎺ュ簱涓紝瑕佹瘮鐢╓in32涓笓闂ㄧ敤鏉ュ垱寤篊OM瀵硅薄鐨?
CoCreateInstance鍑芥暟瑕佸ソ寰楀銆? 鐗瑰埆鐨勬槸錛孌irectX
SDK瀵硅薄妯″瀷涓烘瘡涓涓澶囨彁渚涗竴涓富瑕佺殑瀵硅薄銆傚叾瀹冪殑璁懼瀵硅薄鏄敱榪欎釜涓昏瀵硅薄媧劇敓涓嬫潵鐨勩備緥濡傦紝DirectDraw瀵硅薄浠h〃鏄劇ず璁懼銆備綘鍙互鐢ㄥ畠鏉?
鍒涘緩浠h〃鏄懼瓨鐨勪富欏甸潰錛圖irectDrawSurface錛夊璞★紝鍜屼唬琛ㄧ‖浠惰皟鑹叉澘鐨勮皟鑹叉澘錛圖irectDrawPalette錛夊璞★紱鐩鎬技鐨勶紝
DirectSound瀵硅薄浠h〃澹板崱錛屽茍涓斿垱寤篋irectSoundbuffer瀵硅薄鏉ヤ唬琛ㄥ0鍗′笂鐨勫0闊蟲暟鎹?/p>
]]>
1.1 Surfaces涔嬪皝瑁匔XSurface
1銆丼urfaces鏄粈涔堬細
銆銆閫氫織鐨勮surfaces灝辨槸涓涓簩緇寸殑鐭╁艦騫抽潰銆傚湪DX9涓紝涓庡叾瀵瑰簲鐨刢om鎺ュ彛涓篒Direct3DSurface9錛孡PDIRECT3DSURFACE9銆?br />
2銆丼urfaces鐨勪綔鐢細
銆銆浣滀負涓涓煩褰㈠鉤闈紝surfaces鐢ㄦ潵鍦ㄥ睆騫曚笂鏄劇ず騫抽潰鍥捐薄錛屽嵆浠庢枃浠朵腑璇誨彇鍥捐薄鏁版嵁鍛堢幇緇欑敤鎴楓?br />
3銆両Direct3DSurface9鐨勪嬌鐢ㄤ竴鑸繃紼嬶細
銆銆澹版槑錛?LPDIRECT3DSURFACE9
銆銆鍒涘緩錛?CreateOffscreenPlainSurface(鈥?
銆銆鑾峰彇鍥捐薄淇℃伅錛?D3DXGetImageInfoFromFile(鈥?
銆銆瑁呰澆鍒皊urfaces涓細 D3DXLoadSurfaceFromFile(鈥?
銆銆鑾峰彇back buffer鍦板潃錛?GetBackBuffer(鈥?
銆銆鏄劇ず錛?UpdateSurface(鈥?
銆銆閲婃斁鍐呭瓨 Release()
浠g爜孌靛涓嬶細
LPDIRECT3DSURFACE9 g_Surface =NULL;
D3DXIMAGE_INFO Info;
D3DXGetImageInfoFromFile("D:\image.jpg", &Info);
g_pd3dDevice->CreateOffscreenPlainSurface(Info.Width, Info.Height,
Info.Format, &g_Surface, NULL);
D3DXLoadSurfaceFromFile(g_Surface, NULL, NULL, "D:\image.jpg", NULL,
D3DX_FILTER_NONE, 0xFF000000, NULL);
//--------------------------------------------------------------------------------------------------
LPDIRECT3DSURFACE9 BackBuffer = NULL;
g_pd3dDevice->GetBackBuffer(0,0,D3DBACKBUFFER_TYPE_MONO, &BackBuffer);
g_pd3dDevice->UpdateSurface(g_Surface, NULL, BackBuffer, NULL);
if(BackBuffer != NULL)
聽聽聽 BackBuffer->Release();
//---------------------------------------------------------------------------------------------------
if(g_Surface!= NULL)
聽聽聽 g_Surface ->Release();
銆銆鐢變笂榪拌繃紼嬪彲浠ョ湅鍒幫紝IDirect3DSurface9鐨勪嬌鐢ㄨ櫧鐒朵笉鍗佸垎澶嶆潅錛屼絾鏈夌偣涓嶆柟渚?
鈥斺斿垱寤哄拰閲婃斁鎬昏鎴愬鍑虹幇錛屼嬌鐢ㄨ繃紼嬩腑榪樼┛鎻掔潃LPDIRECT3DDEVICE9鎺ュ彛銆傝繖浜涜嫢鐢ㄤ竴涓被灝佽璧鋒潵錛屼嬌鐢ㄥ氨瑕佹柟渚跨殑澶氥?br />
4銆佸浣曞皝瑁咃細
銆銆鎸夌収surfaces鐨勫姛鑳斤紝鍒涘緩瀹冨氨鐢ㄦ潵鏄劇ず鍥捐薄銆傚洜姝よ鏈夎鍙栧浘璞$殑鎺ュ彛鍜屾樉紺哄浘璞$殑鎺ュ彛銆傚張瑕佷笌LPDIRECT3DDEVICE9璁懼鎺ュ彛鍏寵仈錛屽洜姝ら渶瑕佷竴涓緗澶囩殑鎺ュ彛銆傚涓嬫墍紺猴細
1銆佸0鏄庡強閲婃斁
銆銆澹版槑錛?LPDIRECT3DSURFACE9
銆銆閲婃斁鍐呭瓨 Release()
2銆佸叧鑱斿浘鍍忥細LoadFromFile
銆銆鑾峰彇鍥捐薄淇℃伅錛?D3DXGetImageInfoFromFile(鈥?
銆銆鍒涘緩錛?CreateOffscreenPlainSurface(鈥?
銆銆瑁呰澆鍒皊urfaces涓細 D3DXLoadSurfaceFromFile(鈥?
3銆佹樉紺哄浘璞?Render
銆銆鑾峰彇緙撳瓨鍦板潃錛?GetBackBuffer(鈥?
銆銆鏄劇ず錛?UpdateSurface(鈥?
4銆佸叧鑱旇澶囨帴鍙?SetDevice
鎵浠XSurface鐨勫畾涔夊涓嬶細
class CXSurface
{
protected:
聽聽聽 LPDIRECT3DSURFACE9 m_Surface;
聽聽聽
LPDIRECT3DSURFACE9 m_BackBuffer; //Back buffer
聽聽聽
LPDIRECT3DDEVICE9 m_pDevice; //Direct3D鐨勮澶囨寚閽?br />
public:
聽聽聽
CXSurface(LPDIRECT3DDEVICE9 pDevice);
聽聽聽
~CXSurface();
聽聽聽
HRESULT LoadFromFile(LPCSTR Path);
聽聽聽
void Render(void);
};
1.2 Textures & Sprite 涔嬪皝瑁匔XTexture & CXSprite
1銆佷綍涓篢extures
銆銆Textures鏄湪灞忓箷涓婃樉紺虹殑騫抽潰鍥懼艦錛屽畠鑳藉鎻愪緵姣?surface
鏇村鐨勫浘褰㈠鐞嗘晥鏋溾斺旂Щ鍔ㄣ佺緝鏀俱佹棆杞強浣滀負綰圭悊鐨偆綺樿創鍦?D妯″瀷涓娿傚湪Direct3D涓紝鍏跺皝瑁呯殑鎺ュ彛涓篒Direct3DTexture9銆?br />
2銆佷綍涓篠prite
銆銆IDirect3DTexture9鑳戒粠鏂囦歡涓鍙栫汗鐞嗘暟鎹紝浣嗙敱浜嶵extures涓嶈兘鐩存帴澶嶅埗鍒?back
buffer錛屽洜姝ゅ湪灞忓箷涓婄粯鍒禩extures涔嬪墠錛岄渶瑕佸彟涓涓帴鍙b斺擨D3DXSprite錛堢簿鐏碉級銆侷D3DXSprite鑳藉鎶婅嫢騫蹭釜Textures
澶嶅埗緇檅ack buffer錛屽洜姝ら渶瑕両D3DXSprite鐨勪竴涓疄渚嬪氨鍙互緇樺埗鎵鏈夌殑綰圭悊銆?br />
銆銆鎵浠ワ紝IDirect3DTexture9鐢ㄦ潵瀛樻斁紼嬪簭鎵闇鐨勭汗鐞嗭紝浣嗗畠鏈韓鍙堜笉鑳界粯鍒剁汗鐞嗭紝闇瑕佸熷姪鎺ュ彛ID3DXSprite銆?br />
3銆両Direct3DTexture9鍜孖D3DXSprite鐨勪嬌鐢ㄨ繃紼?br />
銆銆瀹氫箟錛殈
銆銆鍒涘緩錛欴3DXCreateTextureFromFile
銆銆銆銆銆D3DXCreateSprite
銆銆鍒涘緩鍙樻崲鐭╅樀錛?D3DXMatrixTransformation2D
銆銆鍙樻崲錛?SetTransform
銆銆緇樺埗鍥捐薄錛?Draw
銆銆閲婃斁鍐呭瓨錛?~
浠g爜濡備笅錛?br />
D3DXCreateTextureFromFile(g_pd3dDevice, "c:\\image.bmp鈥? &g_Texture);
D3DXCreateSprite(g_pd3dDevice, &g_Sprite);
//--------------------------------------------------------------------------
D3DXVECTOR2 Translation;
Translation.x = 500;
Translation.y = 500;
D3DXVECTOR2 Scaling;
Scaling.x = 1.0;f
Scaling.y = 1.0f;
D3DXMATRIX Mat;
D3DXMatrixTransformation2D(&Mat, NULL, 0, &Scaling, NULL, 0,
&Translation);
g_Sprite->Begin(0);
g_Sprite->SetTransform(&
g_Sprite->Draw(g_Texture,
g_Sprite->End();
4銆?濡備綍灝佽
銆銆浠庝互涓婄殑鍩烘湰榪囩▼鍙互鐪嬪埌錛孋XTexture闇瑕佸畬鎴愮殑鍔熻兘錛氭彁渚涗笌LPDIRECT3DDEVICE9鐨勬帴鍙o紝涓庣汗鐞嗘枃浠舵枃浠跺叧鑱旓紝瀵圭汗鐞嗚繘琛屽鐞嗭紙緙╂斁銆佹棆杞︹︼級銆?br />
class CXTexture
{
protected:
聽聽聽 LPDIRECT3DTEXTURE9 m_Texture;
聽聽聽
LPDIRECT3DDEVICE9 m_pDevice;
聽聽聽
D3DXVECTOR2 m_RotationCenter;
聽聽聽
D3DXVECTOR2 m_Translation;
聽聽聽
D3DXVECTOR2 m_Scaling;
聽聽聽
FLOAT m_Rotation;
聽聽聽
RECT m_SrcRect;
public:
聽聽聽
CXTexture(LPDIRECT3DDEVICE9 pDevice);
聽聽聽
~CXTexture();
聽聽聽
LPDIRECT3DTEXTURE9 GetTexture() const {return m_Texture;}
聽聽聽
void SetTexture(LPDIRECT3DTEXTURE9 Texture) const {m_Texture = Texture;}
聽聽聽
LPDIRECT3DDEVICE9 GetDevice() const {return m_pDevice;}
聽聽聽
void SetDevice(LPDIRECT3DDEVICE9 pDevice) const {m_pDevice = pDevice;}
聽聽聽
D3DXVECTOR2 GetRotationCenter() const {return m_RotationCenter;}
聽聽聽
void SetRotationCenter(D3DXVECTOR2 RotationCenter) {m_RotationCenter =
RotationCenter;}
聽聽聽
D3DXVECTOR2 GetTranslation() const {return m_Translation;}
聽聽聽
void SetTranslation (D3DXVECTOR2 Translation) const {m_Translation =
Translation;}
聽聽聽
D3DXVECTOR2 GetScaling() const {return m_Scaling;}
聽聽聽
void SetScaling(D3DXVECTOR2 Scaling) const {m_Scaling = Scaling;}
聽聽聽
FLOAT GetRotation() const {return m_Rotation;}
聽聽聽
void SetRotation (FLOAT Rotation) const {m_Rotation = Rotation;}
聽聽聽
RECT GetRect() const {return m_SrcRect;}
聽聽聽
void SetRect(RECT SrcRect) const {m_SrcRect = SrcRect;}
聽聽聽
HRESULT LoadFromFile(char* Path);
};
CXSprite鐨勪富瑕佸姛鑳藉氨鏄湪灞忓箷涓婃樉紺?CXTexture錛屽洜姝ら渶瑕佹湁涓?LPDIRECT3DDEVICE9 鎺ュ彛鍜?
CXTexture榪炴帴鐨勫嚱鏁般?br />
class CXSprite
{
protected:
聽聽聽
LPD3DXSPRITE m_Sprite;
聽聽聽
LPDIRECT3DDEVICE9 m_pDevice;
public:
聽聽聽
CXSprite (LPDIRECT3DDEVICE9 pDevice);
聽聽聽
~CXSprite ();
聽聽聽
LPD3DXSPRITE GetSprite() const {return m_Sprite;}
聽聽聽
void SetSprite(LPD3DXSPRITE Sprite) const {m_Sprite = Sprite;}
聽聽聽
LPDIRECT3DDEVICE9 GetDevice() const {return m_pDevice;}
聽聽聽
void SetDevice(LPDIRECT3DDEVICE9 pDevice) const {m_pDevice = pDevice;}
聽聽聽
HRESULT DrawTexture(CXTexture* Texture);
};
1.3 Keyboard & Mouse涔嬪皝瑁匔XKeyboard & CXMouse
1銆佷綍涓篕eyboard & Mouse
銆銆鈥滃湴鐞冧漢閮界煡閬撯濄侱X9鎻愪緵鐨勬帴鍙?IDirectInputDevice8銆?br />
2銆佷簩鑰呯殑鍔熻兘
銆銆Keyboard錛氳鍙栭敭鐩樼殑鎸夐敭淇℃伅
銆銆Mouse錛氳鍙栭紶鏍囩殑鎸夐敭銆佷綅緗俊鎭紝璁劇疆鍏夋爣灞炴?濡傜敤鍥劇墖琛ㄧず鍏夋爣)銆?br />
3銆佷嬌鐢ㄨ繃紼?br />
銆銆鍒涘緩 IDirectInput8 瀵硅薄 DirectInput8Create
銆銆鍒涘緩 IDirectInput8 璁懼錛堥敭鐩樸侀紶鏍囩瓑錛?CreateDevice
銆銆璁劇疆璁懼灞炴?SetCooperativeLevel
銆銆SetDataFormat
銆銆鑾峰彇璁懼浣跨敤鏉?Acquire
銆銆璇誨彇璁懼浼犲叆鐨勬暟鎹?GetDeviceState
銆銆閲婃斁璁懼鍙?IDirectInput8 Release
璁劇疆榧犳爣鍏夋爣榪囩▼錛?br />
銆銆鍒涘緩鍏夋爣鍥劇墖璧勬簮錛?鍙傜収surfaces
銆銆璁劇疆鍏夋爣涓烘寚瀹氱殑鍥劇墖 SetCursorProperties
銆銆璁劇疆鍏夋爣鐨勫垵濮嬩綅緗?SetCursorPosition
銆銆鏄劇ず鍏夋爣 ShowCursor
紼嬪簭孌靛涓嬶細
LPDIRECTINPUT8 g_lpDI;
LPDIRECTINPUTDEVICE8 g_Keyboard;
LPDIRECTINPUTDEVICE8 g_Mouse
//========================================================
HRESULT Result = DirectInput8Create(g_hInst, DIRECTINPUT_VERSION,
IID_IDirectInput8, (void**)&g_lpDI, NULL);
if(SUCCEEDED(Result))
{
聽聽聽 //鍒涘緩閿洏璁懼
聽聽聽 Result = g_lpDI->CreateDevice(GUID_SysKeyboard,
&g_lpDIDevice, NULL);
聽聽聽
if(SUCCEEDED(Result))
聽聽聽
{
聽聽聽聽聽聽聽
g_lpDIDevice->SetCooperativeLevel(g_hWnd, DISCL_FOREGROUND |
DISCL_NONEXCLUSIVE);
聽聽聽聽聽聽聽
g_lpDIDevice->SetDataFormat(&c_dfDIKeyboard);
聽聽聽
}
}
//-------------------------------------------------------------------------------------------
//鑾峰彇鎸夐敭淇℃伅
if(SUCCEEDED(g_Keyboard->Acquire())) //Acquire the device
{
聽聽聽
char KeyState[256];
聽聽聽
g_Keyboard->GetDeviceState(sizeof(KeyState),(LPVOID)&KeyState);
聽聽聽
//鏍規嵁KeyState榪斿洖鐨勬暟鎹氨鍙互鍒ゆ柇鎸変笅浣曢敭
}
//====================================================
//鍒涘緩榧犳爣
g_lpDI->CreateDevice(GUID_SysMouse, &g_Mouse, NULL);
g_Mouse->SetDataFormat(&c_dfDIMouse);
g_Mouse->SetCooperativeLevel(g_hWnd, DISCL_EXCLUSIVE |
DISCL_FOREGROUND);
//------------------------------------------------------------------------
//璁劇疆榧犳爣鍏夋爣
//鑾峰彇鍏夋爣鍥劇墖
D3DXIMAGE_INFO ImageInfo;
D3DXGetImageInfoFromFile("C:\\Cursor.jpg鈥? &ImageInfo);
g_pd3dDevice->CreateOffscreenPlainSurface(ImageInfo.Width,
ImageInfo.Height, ImageInfo.Format, D3DPOOL_DEFAULT, &g_MouseCursor,
NULL);
D3DXLoadSurfaceFromFile(g_MouseCursor, NULL, NULL, ("C:\\Cursor.jpg鈥?
NULL, D3DX_FILTER_NONE, 0xFF000000, NULL);
//璁劇疆鎴愭寚瀹氱殑鍏夋爣
g_pd3dDevice->SetCursorProperties(0,0, g_MouseCursor);
//鍒濊瘯浣嶇疆
g_pd3dDevice->SetCursorPosition(0,0,D3DCURSOR_IMMEDIATE_UPDATE);
//鏄劇ず鍏夋爣
g_pd3dDevice->ShowCursor(true);
//-------------------------------------------------------------------------
//鑾峰彇榧犳爣淇℃伅
if(SUCCEEDED(g_Mouse->Acquire()))
{
聽聽聽
DIMOUSESTATE State;
聽聽聽
g_Mouse->GetDeviceState(sizeof(DIMOUSESTATE),(LPVOID)&State);
聽聽聽
//淇℃伅淇濆瓨鍦?State涓?br />
}
//==============================================
//閲婃斁璁懼
if(g_lpDI != NULL)
聽聽聽
g_lpDI->Release();
4銆佸皝瑁?br />
銆銆CXKeyboard鐨勫皝瑁?br />
class CXKeyboard
{
private:
聽聽聽
LPDIRECTINPUTDEVICE8 m_pDevice;
聽聽聽
char m_KeyState[256];
public:
聽聽聽
CXKeyboard (LPDIRECTINPUT8 pInput, HWND hWnd);
聽聽聽
~ CXKeyboard();
聽聽聽
bool IsKeyPressed(int Key);
聽聽聽
HRESULT Update();
};
CXMouseSurface鐨勫皝瑁?br />
涓轟簡鑳藉埗浣滃嚭鍔ㄧ敾鏁堟灉鐨勫厜鏍囷紝鍥犳闇瑕佷竴涓猻urfaces鍒楄〃錛屽洜姝や粠CXSurface緇ф壙涓涓狢XMouseSurface綾伙紝浣夸箣鑳藉鎿嶄綔澶氫釜鍥劇墖銆?br />
class CXMouseSurface : public CXSurface
{
private:
聽聽聽
CXMouseSurface* m_pNext;
聽聽聽
int MouseSurfaceType;
聽聽聽
UINT HotSpotX;
聽聽聽
UINT HotSpotY;
public:
聽聽聽
CXMouseSurface* GetNext() {return m_pNext;}
聽聽聽
void SetNext(CXMouseSurface* Surf) {m_pNext = Surf;}
聽聽聽
int GetSurfaceType() {return MouseSurfaceType;}
聽聽聽
void SetSurfaceType(int Type) {MouseSurfaceType = Type;}
聽聽聽
UINT GetHotSpotX() {return HotSpotX;}
聽聽聽
UINT GetHotSpotY() {return HotSpotY;}
聽聽聽
void SetHotSpotX (UINT X) {HotSpotX = X;}
聽聽聽
void SetHotSpotY (UINT Y) {HotSpotY = Y;}
聽聽聽
CXMouseSurface(LPDIRECT3DDEVICE9 pDevice) : CXSurface(pDevice) {m_pNext
= NULL;}
聽聽聽
CXMouseSurface() : CXSurface() {m_pNext = NULL;}
}錛?br />
CXMouse鐨勫皝瑁?br />
class CXMouse
{
private:
聽聽聽
CXMouseSurface* m_Surface; //鎸囧悜鍏夋爣鍒楄〃
聽聽聽
CXMouseSurface* m_CurrentCursorSurface; //褰撳墠鍏夋爣
聽聽聽
LPDIRECTINPUTDEVICE8 m_pDevice;
聽聽聽
LPDIRECT3DDEVICE9 m_p3DDevice;
聽聽聽
DIMOUSESTATE m_State;
聽聽聽
LONG m_iX;
聽聽聽
LONG m_iY;
public:
聽聽聽
CXMouse (LPDIRECT3DDEVICE9 pDevice, LPDIRECTINPUT8 pInput, HWND hWnd,
bool Exclusive);
聽聽聽
~ CXMouse();
聽聽聽
HRESULT Update();
聽聽聽
LONG GetXPos();
聽聽聽
LONG GetYPos();
聽聽聽
bool IsButtonPressed(int Button);
聽聽聽
HRESULT SetCursorImage();
聽聽聽
HRESULT SetMouseCursor(char* FilePath, UINT HotSpotX, UINT HotSpotY, int
Type);
聽聽聽
void AddCursorSurface(CXMouseSurface* Surface);
聽聽聽
CXMouseSurface* GetFirstSurface() {return m_Surface;}
聽聽聽
bool SetCursor(int Type);
聽聽聽
CXMouseSurface* GetCurrentCursor() {return m_CurrentCursorSurface;}
聽聽聽
void SetCurrentCursor(CXMouseSurface* Surface) {m_CurrentCursorSurface =
Surface;}
聽聽聽
void SetCursorPosition(int X, int Y);
聽聽聽
HRESULT SetCursorVisible(bool Show);
};
]]>
1銆佷粈涔堟槸DirectX 錛?
鍗蟲彃鍗崇敤浠ュ強鍏跺畠Windows杞‖浠?
鍐呭緩浜嶹indows鐨勯氫俊鏈嶅姟, 鍖呮嫭DirectPlay
綺劇伒寮曟搸(Sprite engines)錛屼嬌綺劇伒錛堜笉瑙勫垯鍥懼艦錛夎鐩栨洿瀹規槗銆?
鎻掕ˉ寤跺睍(Stretching with interpolation)錛屽畠鍙互鏇存湁鏁堢殑淇濆瓨鏄劇ず鍐呭瓨錛屽洜涓哄畠鍙互浣垮皬騫呯敾闈㈠歡灞曞埌鏁翠釜灞忓箷銆?
Alpha 铻嶅悎(Alpha blending)錛屽畠鍙互鍦ㄧ‖浠跺儚绱犲眰錛坔ardware-pixel level)涓婃販鍚堥鑹層?
甯︽湁閫忚淇錛坧erspective-correct)璐村浘鐨?D鍔犻熷櫒錛屽畠鍏佽浣犲湪3D琛ㄩ潰涓婅創鍥俱傛瘮濡傦紝浣犲彲浠ュ湪鐢?D杞歡鍒朵綔鐨勫煄鍫$殑璧板粖閲岃創涓婄爾鍧楃殑浣嶅浘鏉ユ樉紺哄嚭閫忚鏁堟灉銆?
涓?D鍥捐薄榪涜鐨勪綅鎿嶄綔灝?Z 鏂瑰悜鑰冭檻鍦ㄥ唴銆?
鍘嬬緝鏍囧噯錛岃繖灝嗗厑璁鎬綘鍦ㄦ樉瀛樹腑鍌ㄥ瓨鏇村鐨勪俊鎭傝繖涓爣鍑嗕笉璁烘槸鍦ㄨ蔣浠惰繕鏄‖浠朵腑鎵ц閮戒細鐩稿綋蹇傚畠灝嗚鐢ㄥ湪璐村浘涓茍涓斿寘鍚忔槑鍘嬬緝銆?
澹板崱涓婂唴緗煶棰戝唴瀛樸?
闊抽-瑙嗛涓浣撳崱鍙叡浜叾涓婄殑鍐呭瓨銆?
鍙﹀錛岃棰戝洖鏀懼皢寰楃泭浜庝粖鍚庣殑涓嶥irectX鐩稿吋瀹圭‖浠跺姞閫熻澶囥備粖鍚庣殑DirectX鐗堟湰涓殑涓涓壒鎬ф槸灝嗘敮鎸佺‖浠跺姞閫焂UV瑙嗛瑙g爜銆?/p>
--------------------------------------------------------------------------------
DirectSound 錛氬畠鎻愪緵浜嗚蔣紜歡鐨勪綆寤惰繜澹伴煶娣烽錛坙ow_latency sound mixing錛夊拰鍥炴斁錛圥layback錛夛紝紜歡鍔犻燂紝浠ュ強鐩存帴璁塊棶闊抽璁懼鐨勮兘鍔涖?
DirectPlay 錛氬畠鏄庣‘鐨勬彁渚涗簡閫氱敤鐜榪炴帴鑳藉姏錛坓eneralized communication capabilities錛夛紝鏉ョ畝鍖栦綘搴旂敤紼嬪簭涔嬮棿鐨勯氳鏈嶅姟銆?
Direct3D 錛氬畠涓轟富嫻佺殑妗屼笂鍨嬭綆楁満鍜孖nternet鐢ㄦ埛鎻愪緵瀹炴椂鐨勩佷氦浜掔殑3D鎶鏈?
DirectInput 錛氬畠綆鍖栦綘鐨勫簲鐢ㄧ▼搴忚闂紶鏍囥侀敭鐩樺拰鎿嶇旱鏉嗚澶囩殑鑳藉姏銆?
DirectSetup 錛氫竴濂楃畝鍗曠殑API鍚戜綘鎻愪緵瀹夎DirectX閮ㄤ歡鐨勫姛鑳姐?
AutoPlay 錛氬畠涔熸槸Win95鎿嶄綔緋葷粺鐨勪竴涓壒鎬э紝褰撲綘鍦ㄥ厜椹卞唴鏀句笂鍏夌洏錛屾寚瀹氱殑搴旂敤紼嬪簭浼氳嚜鍔ㄦ墽琛屻?
璁塊棶銆佹帶鍒舵樉紺哄崱鐨勪綅鍥炬槧灝?
鏀寔3D z-buffers 錛坺緙撳瓨錛?
鏀寔z鏂瑰悜錛坺-ordering錛夌‖浠惰緟鍔╄鐩栥?
璁塊棶鍥懼艦緙╂斁紜歡
浠跨湡璁塊棶鏍囧噯鐨勫拰澧炲己鐨勬樉紺鴻澶囧唴瀛樼┖闂?
DirectDraw
鐨勪換鍔℃槸鐢ㄤ笌璁懼鏃犲叧鐨勯斿緞鏉ユ彁渚涗緷璧栦簬璁懼鐨勮闂樉紺哄唴瀛樼殑鏂規硶銆傛湰璐ㄤ笂錛孌irectDraw綆$悊鏄劇ず鍐呭瓨銆備綘鐨勫簲鐢ㄧ▼搴忓彧闇瑕佹噦寰楅偅浜涗竴鑸殑鍏充簬紜?
浠朵笌璁懼鏈夊叧鐨勭煡璇嗭紝姣斿RGB鍜孻UV鑹插僵鏍煎紡鍜屼袱鏉″厜鏍呯嚎涔嬮棿鐨刾itch錛堝璺濓級
銆傚湪闇瑕佸埄鐢ㄤ綅杞崲鎴栨搷浣滆皟鑹叉澘瀵勫瓨鍣ㄦ椂錛屼綘涓嶉渶瑕佷負璋冪敤榪囩▼涓殑緇嗚妭鑰岀儲鎭箋備嬌鐢―irectDraw錛屼綘鍙互鏂逛究鐨勬搷浣滄樉紺哄唴瀛橈紝鍏呭垎鐨勫埄鐢ㄤ笉鍚岀被鍨?
鐨勬樉紺鴻澶囩殑浣嶈漿鎹㈠拰棰滆壊鍘嬬緝鑳藉姏錛岃屼笉闇瑕佷緷璧栦簬鏌愪竴涓壒瀹氱殑紜歡銆?
--------------------------------------------------------------------------------
DirectDraw鐨勭‖浠舵娊璞″眰錛圚AL錛夋彁渚涗簡涓涓粺涓鐨勬帴鍙o紝閫氳繃瀹冿紝寮鍙戣呭彲浠ョ洿鎺ョ殑鎿嶄綔鏄劇ず瀛樺偍鍣ㄥ拰瑙嗛瀛樺偍鍣紝浠庣郴緇熺‖浠朵腑鑾峰彇鏈澶х殑琛ㄧ幇鑳藉姏銆?
DirectDraw榪愯浜嶹indows95鎿嶄綔緋葷粺涔嬩笂錛屼粠緋葷粺鎵鎻愪緵鐨?2浣嶅唴瀛樺鍧鍜屽鉤闈㈠唴瀛樻ā鍨嬩腑鑾風泭銆侱irectDraw灝嗚棰戝拰緋葷粺瀛樺偍鍣ㄨ涓烘暣鍧楃殑絀洪棿錛岃屼笉鏄鐗囩殑闆嗗悎銆傚鏋滀綘鏇句嬌鐢ㄨ繃鍖烘鍋忕Щ瀵誨潃錛屼綘灝嗗緢蹇氨鍠滅埍涓婅繖縐嶁滃鉤闈⑩濆唴瀛樻ā鍨嬨?
瀵逛簬鍏ㄥ睆妯″紡鐨勫簲鐢ㄧ▼搴忥紝DirectDraw浣垮緱澶氬悗鍙扮紦瀛樼殑鎹㈤〉鎿嶄綔鍙樺緱鏋佷負瀹規槗銆?
鏀寔紿楀彛鍜屽叏灞忔ā寮忓簲鐢ㄧ▼搴忕殑瑁佸噺銆?
鏀寔3-D z緙撳瓨銆?
鏀寔甯杞存柟鍚戠殑紜歡杈呭姪瑕嗙洊銆?
鍙闂浘璞$緝鏀劇‖浠躲?
鍙悓鏃惰闂爣鍑嗙殑鍜屽寮虹殑鏄劇ず璁懼鍐呭瓨鍖恒?
鍏跺畠鐨勭壒鎬э紝鍖呮嫭鍔ㄦ佹敼鍙樿皟鑹叉澘銆佺嫭鍗犺闂‖浠躲佸拰鍒嗚鯨鐜囧垏鎹㈢瓑絳夈?
鍚堢悊鍜屾湁鏁堢殑鍒╃敤DirectDraw鐨勮繖浜涚壒鎬у皢浣垮紑鍙戣呭緢瀹規槗灝辮兘澶熷啓鍑烘瘮鍩轟簬鏍囧噯鐨刉indows GDI搴旂敤紼嬪簭錛岀敋鑷矼S-DOS搴旂敤紼嬪簭榪樿浼樼鐨勪綔鍝併?/p>
--------------------------------------------------------------------------------
DirectX5.0鐗堟湰姣?.0鐗堟嫢鏈夋洿澶氱殑鍒涙柊鍜屾柊鐗規э紙娉ㄦ剰錛氬茍涓嶅瓨鍦?.0鐗堬級銆傚敖綆¤繖鏍鳳紝浣犵敤浠ュ墠鐗堟湰鍐欑殑DirectX搴旂敤紼嬪簭鍚屾牱鍙互涓嶅姞淇敼鐨勮繍琛屼簬DirectX5.0鐜涓備互涓嬪皢浠嬬粛鐨勬槸DirectX 5.0涓璂irectDraw鎺ュ彛鐨勬柊鐗規с?/p>
--------------------------------------------------------------------------------
]]>