锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 鎽樿 鍙楃璐村浘錛?/span>Managed textures錛屼篃灝辨槸鎴戜滑閫氬父鎵璋撶殑“鑷姩綆$悊璐村浘”錛夛紝鍦?/span>DX6涓嬈¤寮曞叆錛岀粡榪囦竴緋誨垪鐨勬敼榪涘拰澧炲己錛屽湪DX9涓嚜鍔ㄧ鐞嗙殑璧勬簮綾誨瀷澧炲姞鍒拌創鍥撅紝欏剁偣緙撳啿錛岄《鐐圭儲寮曠紦鍐詫紝鎵鏈夎繖浜涜祫婧愪嬌鐢ㄧ粺涓鐨勫叕鍏辨帴鍙c傞氳繃浣跨敤D3D璧勬簮綆$悊鍣紝搴旂敤紼嬪簭鍙互杞繪澗鐨勫鐞嗚澶囦涪澶便佸鐞嗙◢寰繃閲忕殑鏄懼瓨浣跨敤銆?/span> 鏈夋椂寮鍙戣呭湪浣跨敤鍙楃璧勬簮浼氶亣鍒頒竴浜涘洶闅撅紝榪欓儴鍒嗗綊鍜庝笌緋葷粺鐨勬娊璞$壒鎬с傚湪澶у鏁版儏鍐典笅浣跨敤鍙?span class="GramE">綆″璞?/span>鏄笉閿欑殑閫夋嫨錛屼絾鏈夋椂鍑轟簬鎬ц兘鑰冭檻涔熶細浣跨敤闈炴墭綆¤祫婧愩傝繖綃囨枃绔犲皢璁ㄨ涓鑸儏鍐典笅濡備綍澶勭悊璧勬簮錛屽彈綆′笌闈炲彈綆¤祫婧愮殑琛屼負宸埆銆?/span> 鍐呭 l 鏄劇ず鍐呭瓨 l 鍙楃璧勬簮 l 椹卞姩綆″埗璧勬簮 l 榛樿璧勬簮 l 緋葷粺鍐呭瓨璧勬簮 l 涓鑸х殑寤鴻 鏄劇ず鍐呭瓨 涓轟簡浣垮緱璧勬簮鍙互鍒╃敤鏄懼瓨錛?/span>GPU闇瑕侀氳繃鍐呭瓨璁塊棶瀹氫綅浠栥?/span>GPU璁塊棶錛?/span>Local video memory錛夋樉瀛樻槸闈炲父楂樻晥鐨勶紝騫朵笖鏌愪簺璧勬簮錛堜緥濡?/span>RenderTarget錛屾繁搴︺佹ā鏉跨紦鍐詫級蹇呴』鍦ㄦ湰鍦版樉瀛橈紙Local video memory錛夊畾浣嶃傜敱浜?/span>AGP鐨勫嚭鐜幫紝GPU鍙互鐩存帴璁塊棶閮ㄥ垎緋葷粺鍐呭瓨錛岃岃繖閮ㄥ垎緋葷粺鍐呭瓨鍖哄煙灝辨槸鎵璋撶殑闈炴湰鍦版樉瀛橈紙non-local video memory錛夛紝褰撶劧榪欓儴鍒嗗唴瀛橈紙鏄懼瓨錛変篃鏄笉鑳芥尓鍋氬畠鐢ㄧ殑銆傞潪鏈湴鏄懼瓨浠呰兘琚?/span>GPU璁塊棶錛屼笌璁塊棶鏈湴鏄懼瓨鐩告瘮錛屽叾鏁堢巼浣庝竴浜涖傞渶瑕佹槑紜殑鏄紝鎵鏈?/span>AGP鍐呭瓨鍦ㄨ澶囦涪澶辨椂閮戒細澶辨晥錛岄兘闇瑕佸湪鎭㈠浠栦滑銆?/span> 涓浜涢泦鎴愭樉鍗′嬌鐢ㄧ粺涓鍐呭瓨緇撴瀯錛?/span>Unified Memory Architecture錛夛紝榪欐牱涓誨唴瀛樺彲浠ヨ緋葷粺浠諱綍涓涓澶囧鍧銆?/span>D3D鏀寔UMA鑰屼笉闇瑕佷慨鏀逛換浣曚唬鐮侊紝榪欐牱鎴戜滑鎶婄郴緇熷唴瀛橀厤緗負鏈湴鏄懼瓨錛岀‖浠剁‘淇濊祫婧愮殑瀹氫綅灝卞儚浼犵粺鐨勭粨鏋勪竴鏍瘋繘琛屽伐浣溿?/span> 鍙楃璧勬簮 澶ч儴鍒嗚祫婧愬簲璇ヤ嬌鐢?/span>POOL_MANAGED鏂瑰紡鍒涘緩錛屽嵆鍙楃璧勬簮銆傛墍鏈夊彈綆¤祫婧愬皢琚垱寤哄湪緋葷粺鍐呭瓨錛屽湪闇瑕佺殑鏃跺欏鍒跺埌鏄懼瓨銆傚綋鍙戠敓璁懼涓㈠け鏃朵細鑷姩copy緋葷粺鍐呭瓨鍒版樉瀛樸傛棦鐒朵笉鏄墍鏈夊彈綆¤祫婧愰兘闇瑕佷竴嬈¢佸叆鏄懼瓨錛岃繖鏍蜂綘鍙互鎻愪氦瓚呰繃娓叉煋姣忓撫鎵蹇呴』浣跨敤鐨勬渶灝忓唴瀛樺閲忥紝浣嗘槸榪欐牱浼氫嬌寰?span class="GramE">澶ч噺鏄懼瓨鍐呭鍥犱負鍒?span class="GramE">欏墊搷浣?/span>鑰屽啓鍒扮鐩樹笂錛岃繖鏄潪甯歌楁椂鐨勩傝繖涔熸槸涓轟粈涔堟仮澶嶈澶囧姝よ楁椂錛屽洜涓洪渶瑕佸皢澶ч噺紓佺洏鏁版嵁澶嶅埗鍒版樉瀛樸?/span> DX浼氫負姣忎喚璧勬簮鍦ㄦ渶鍚庝竴嬈′嬌鐢ㄦ椂鍔犱笂鏃墮棿鎴籌紝榪欐牱褰撴樉瀛樺垎閰?/span>澶辮觸鏃訛紝瀹冧細閲婃斁閭d簺鏈榪戞渶灝戜嬌鐢ㄧ殑璧勬簮錛?/span>LRU綆楁硶錛夈備嬌鐢?/span>SetPriority鍑芥暟鍙互鏍囪璧勬簮鐨勯噸瑕佺▼搴︼紝閲嶈鐨勮祫婧愪紭浜庢椂闂存埑鐨勫垽鏂紝鎵浠ラ偅浜涙瘮杈冨父鐢ㄧ殑璧勬簮搴旇璁劇疆楂樹紭鍏堢駭錛岃屼笉鐢ㄦ媴蹇冨洜涓烘椂闂存埑榪囨湡鑰屽鑷磋祫婧愯閲婃斁銆傚湪DX9涓紝椹卞姩紼嬪簭鎻愪緵鐨勬樉瀛樼鐞嗕俊鎭槸闈炲父鏈夐檺鐨勶紝榪愯鏃跺彲鑳戒笉寰椾笉娓呴櫎澶ч噺璧勬簮鐢ㄤ簬鍒嗛厤瓚沖鐨勫唴瀛樸傝緗傚悎鐨勪紭鍏堢駭鏄潪甯告湁鐢ㄧ殑錛岃繖鏍?/span>D3D涓嶄細娓呴櫎閭d簺椹笂鍙堥渶瑕佷嬌鐢ㄧ殑璧勬簮銆傚簲鐢ㄧ▼搴忓彲浠ュ己鍒惰皟鐢?/span>EvictManagedResources娓呴櫎鎵鏈夊彈綆¤祫婧愶紝浣嗘槸濡傛灉涓嬩竴甯у張闇瑕侀噸鏂板姞杞借繖浜涜祫婧愶紝榪欏皢鏄潪甯歌楁椂鐨勶紝涓嶈繃榪欎釜鍑芥暟鍦ㄩ偅浜涘満鏅槑鏄鵑渶瑕佹敼鍙橈紙姣斿榪涘叆涓嬩竴涓叧鍗★級鐨勬儏鍐典笅錛岃繕鏄潪甯告湁鐢ㄧ殑銆?/span> 濡傛灉“褰撳墠甯?#8221;鍐呴渶瑕侀潪甯稿璧勬簮鐢ㄤ簬娓叉煋錛岃繖灝嗘槸浠墮夯鐑︾殑浜嬫儏錛岀敤鍓嶉潰鐨?/span>LRU鏂瑰紡璋冨害璧勬簮鏁堢巼灝變笉澶悊鎯充簡錛岃繖涓椂鍊欎嬌鐢?/span>MRU璧勬簮璋冨害鏂瑰紡鍙栦唬錛屽嵆浼樺厛娓呯悊閭d簺姣旇緝媧昏穬鐨勮祫婧愩傛敞鎰忥紝榪欓噷“褰撳墠甯?#8221;鐨勬蹇墊槸鎸?/span>BeginScene鍜?/span>EndScene涔嬮棿鐨勯渶瑕佹覆鏌撶殑甯с?/span> 寮鍙戜漢鍛樺鏋滄兂寰楀埌鍏充簬鍙楃璧勬簮鐨勬洿澶氫俊鎭紝鍙互閫氳繃IDirect3DQuery9鎺ュ彛鏌ヨ錛屼絾鏄繖涓帴鍙d粎鑳界敤浜庤皟璇曟ā寮忥紙debug runtimes錛夛紝鍦ㄥ彂甯冪増鏈腑錛屽簲鐢ㄧ▼搴忎笉鑳戒緷闈犳敼鎺ュ彛鐨勪俊鎭仛浠諱綍鍋囧畾銆?/span> 浜嗚В璧勬簮綆$悊濡備綍宸ヤ綔鍙互甯姪鎴戜滑璋冭瘯銆佽皟鏁寸▼搴忥紝閲嶈鐨勬槸搴旂敤紼嬪簭涓嶈澶繃渚濊禆褰撳墠鐨勮繍琛屽簱錛堟垨鑰呴┍鍔ㄧ▼搴忥級鐨勮祫婧愮鐞嗘柟寮忥紝椹卞姩鏇存柊鏈夊彲鑳藉鑷村叾琛屼負鍙戠敓鍙樺寲錛屽皢鏉ョ殑D3D灝嗕細鏈夊涔呯粡鑰冮獙鐨勮祫婧愮鐞嗘柟寮忋?/span> 椹卞姩紼嬪簭綆$悊鐨勮祫婧?/span> D3D椹卞姩鍙互鑷敱鐨勫疄鐜?#8220;鐢遍┍鍔ㄧ鐞嗚創鍥?#8221;鐨勭壒鎬э紝閫氳繃D3DCAPS2_CANMANAGERESOURCE孌靛彲浠?/span>鏌ヨ紜歡椹卞姩鏄惁鏀寔榪欎釜鐗規э紝榪欐牱椹卞姩灝嗕唬鏇?/span>D3D榪愯搴撶鐞嗚祫婧愩?span class="GramE">瀵逛簬綰у皯鏁?/span>鐨勭‖浠舵槸鏀寔榪欎釜鐗規х殑錛屽浜庡ぇ澶氭暟紜歡鍒欎笉灝界浉鍚岋紝浣犲彲浠ュ挩璇綘鐨勪駭鍝佹彁渚涘晢鑾峰緱榪欐柟闈俊鎭備竴鑸儏鍐典笅錛屼綘鍙槸浣跨敤D3DCREATE_DISABLE_DRIVER_MANAGEMENT鏂瑰紡鍒涘緩璁懼錛岃繖鏍峰皢鐢?/span>D3D榪愯搴撴潵綆$悊璧勬簮銆?/span> 緙虹渷璧勬簮綆$悊錛堥潪鍙楃璧勬簮錛?/span> 铏界劧鍙楃璧勬簮闈炲父綆鍗曪紝瀹規槗浣跨敤錛岄珮鏁堬紝浣嗘槸鏈夋椂鎴戜滑甯屾湜鐩存帴寰鏄懼瓨閲?/span>鍐欎笢瑗匡紝榪欑鎯呭喌涓嬫垜浠渶瑕佷嬌鐢?/span>POOL_DEFAULT鏂瑰紡鍒涘緩璧勬簮銆備嬌鐢ㄨ繖縐嶆柟寮忎細澧炲姞紼嬪簭鐨勫鏉傛э紝浠g爜闇瑕佸簲浠樻墍鏈夎澶囦涪澶辯殑鎯呭喌錛屽茍闇瑕佽皚鎱庤冭檻浣曟椂澶嶅埗鏁版嵁鍒版樉瀛樸傞敊璇殑鎸囧畾USAGE_WRITEONLY鏍囪鎴栬呴攣瀹氭覆鏌撶洰鏍囷紙Render Target錛夊皢涓ラ噸褰卞搷鎬ц兘銆?/span> 閿佸畾POOL_DEFAULT綾誨瀷鐨勮祫婧愬緢鍙兘瀵艱嚧GPU鍋滄榪愯漿錛岃繖涓?/span>POOL_MANAGED綾誨瀷鐨勮祫婧愭槸涓嶅悓鐨勶紝闄ら潪浣跨敤涓浜涚壒鎬х殑鎸囩ず鏍囪銆傛牴鎹祫婧愬綋鍓嶇殑浣嶇疆涓嶅悓錛岄攣瀹氬悗寰楀埌鐨勬寚閽堜篃涓嶇浉鍚岋紝鍙兘鏄竴鍧椾復鏃剁殑緋葷粺鍐呭瓨錛屼篃鍙兘鐩存帴鎸囧悜AGP鍐呭瓨銆傚鏋滄槸涓存椂鐨勭郴緇熷唴瀛橈紝Unlock鍚庡皢鎶婅繖孌墊暟鎹佸叆鏄懼瓨錛岃繖鏄洜涓哄鏋滄樉鍗¤祫婧?/span>涓嶆槸鍙啓鐨勶紙write-only錛夛紝Lock鐨勬椂鍊欐暟鎹皢涓嶅緱涓嶈閫佸叆涓孌典復鏃剁殑鍐呭瓨錛涘鏋滄寚鍚戠殑AGP鍐呭瓨鍖哄煙錛屼復鏃剁殑鎷瘋礉鏄彲浠ラ伩鍏嶇殑錛屼絾鏄?/span>cache鐨勮涓哄皢浼氶檷浣庢ц兘銆?/span> 涓轟簡閬垮厤鍦ㄥ啓鍏ヤ竴鏁磋鏁版嵁錛?/span>a full cache line of data錛夎繘鍏?/span>AGP鍐呭瓨鍖哄鑷?/span>write-combing鎬ц兘涓嬮檷錛堜竴鑸槸鐢變簬鍙戠敓浜嗕竴嬈¤鍐欏懆鏈燂級錛岄『搴忕殑璁塊棶AGP鍐呭瓨鏄帹鑽愮殑鍋氭硶錛屽鏋滀綘鐨勭▼搴忛渶瑕侀殢鏈虹殑璁塊棶AGP鍐呭瓨錛岃屼綘鍙堜笉甯屾湜浣跨敤鍙楃璧勬簮錛岄偅涔堜綘鍙互浣跨敤緋葷粺鍐呭瓨浣滀負鏇夸唬鏂規錛岃繖鏍峰綋浣犵敓鎴愪簡鏁版嵁涔嬪悗錛屽彲浠?/span>lock鍚庢嫹璐濓紝榪欐牱涓嶄細甯︽潵澶ぇ鐨勬ц兘鎹熷け錛岃繖閲岀殑鎬ц兘鎹熷け涓鑸槸鐢辯紦鍐茬殑“鍐欐悳绱?#8221;鎿嶄綔寮曡搗銆?/span>(娉紝榪欓噷鍏充簬璇嶆眹cache write-combing璇戣呬篃涓嶇煡閬撳搴旂殑涓枃鍚箟錛屽彧鑳芥寜鐓у瓧闈㈡剰鎬濈炕璇戯紝瑙佽皡) 瀵逛簬鏌愪簺綾誨瀷鐨勮祫婧愶紝浣跨敤LOCK_NOOVERWRITE鏍囪浼氫嬌娣誨姞鏁版嵁姣旇緝鏈夋晥鐜囷紝浣嗘槸澶氭鐨?/span>Lock錛?/span>Unlock鍚屼竴璧勬簮榪樻槸闇瑕佸敖閲忛伩鍏嶇殑錛岄傚綋鐨勫埄鐢ㄥ縐嶄笉鍚岀殑閿佸畾鏍囪瀵逛簬鏁堢巼浼樺寲浣塊潪甯擱噸瑕佺殑錛屽氨鍍忓~鍏呴攣瀹氬唴瀛樺尯鍩熸渶濂戒嬌鐢?/span>cache鍙嬪ソ鐨勶紙cache-friendly錛夋暟鎹闂柟寮忎竴鏍楓?/span> 鍙楃璧勬簮鍜岀己鐪佽祫婧愭販鍚堜嬌鐢?/span> 鍙楃璧勬簮涓庨潪鍙楃璧勬簮鐨勬販鍚堝垎閰嶄嬌鐢ㄥ彲鑳藉鑷存樉瀛樼鍧楋紝騫朵笖鎵頒貢鍙楃璧勬簮浣跨敤鐨勫唴瀛樺尯鍩熴傛渶濂藉湪浣跨敤鍙楃璧勬簮鍓嶄嬌鐢ㄩ潪鍙楃璧勬簮錛屾垨鑰呬嬌鐢ㄥ彈綆¤祫婧愬悗浣跨敤EvictManagedResources鍑芥暟娓呴櫎閭d簺鍙楃璧勬簮鍐嶄嬌鐢ㄩ潪鍙楃璧勬簮銆傝浣忥紝鎵鏈夐潪鍙楃璧勬簮閮戒細甯擱┗鏄懼瓨錛岃繖鏍峰叾浠栧唴瀛橀渶姹傚氨涓嶈兘浣跨敤浜嗐?/span> 娉ㄦ剰錛屼笌浠ュ線鐨?/span>DX鐗堟湰涓嶅悓錛屽湪鏄?span class="GramE">瀛樼己涔?/span>鏃訛紝濡傛灉鍒嗛厤闈炲彈綆¤祫婧愬け璐ワ紝DX9浼氳嚜鍔?span class="GramE">娓呴櫎鍙?/span>綆¤祫婧愶紝榪欐湁鍙兘瀵艱嚧娼滃湪鐨勬樉瀛樼鍧楋紝鐢氳嚦鎶婅祫婧愭斁鍏ヤ笉閫傚綋鐨勫湴鏂癸紙姣斿闈炴湰鍦板唴瀛樼殑闈欐佽創鍥懼尯錛夈傛墍浠ワ紝鏈濂藉湪浣跨敤鍙楃璧勬簮涔嬪墠鍒嗛厤鍏ㄩ儴鐨勯潪鍙楃璧勬簮銆?/span> 鍔ㄦ佺己鐪佽祫婧?/span> 濡傛灉鏁版嵁闇瑕佸緢楂橀鐜囨洿鏂幫紝閭f渶濂戒嬌鐢ㄩ潪鍙楃璧勬簮錛屽茍浣跨敤USAGE_DYNAMIC鏍囪錛岃繖鏍烽┍鍔ㄤ細鍐沖畾鏈閫傚悎鐨勫湴鏂規斁緗繖浜涢渶瑕佺粡甯告洿鏂扮殑鏁版嵁銆傝繖閫氬父鎰忓懗鐫鏀劇疆鍦ㄩ潪鏈湴鏄懼瓨涓紝榪欐牱瀵逛簬GPU鏉ヨ錛岃闂熷害鍙兘鐩稿瑕佹參涓浜涖傝屽浜?/span>UMA鏋舵瀯錛岄┍鍔ㄥ皢浼氶夋嫨CPU璁塊棶鏁堢巼杈冮珮鐨勭壒孌婂湴鏂規斁緗繖浜涙暟鎹?/span> 榪欑鐢ㄦ硶錛堝姩鎬佺己鐪佽祫婧愮被鍨嬶級涓鑸敤浜庤蔣钂欑毊鍜屽熀浜?/span>CPU璁$畻鐨勭矑瀛愮郴緇熺殑欏剁偣/欏剁偣绱㈠紩鐨?/span>Buffer濉厖錛?/span>LOCK_DISCARD鏍囪鍙互淇濊瘉璧勬簮浠嶈浣跨敤鐨勬椂鍊欙紝閿佸畾鎿嶄綔涓嶄細瀵艱嚧緋葷粺鍋滄鏆傚仠宸ヤ綔銆傚湪榪欑鎯呭喌涓嬶紝浣跨敤鍙楃璧勬簮浼氭洿鏂扮郴緇熷唴瀛橈紝鐒跺悗鎷瘋礉鍒版樉瀛樸傚浜庣郴緇熺殑闈炴湰鍦板唴瀛橈紝澶氫綑鎷瘋礉鏄笉闇瑕佺殑銆?/span> 鏍囧噯鐨勮創鍥炬槸涓嶅厑璁擱攣瀹氱殑錛屼粎浠呭彲浠ラ氳繃UpdateSurface鍜?/span>UpdateTexture鍑芥暟鏇存柊銆備竴浜涚郴緇熸敮鎸佸姩鎬佽創鍥撅紝瀹冨彲浠ラ氳繃閰嶅悎浣跨敤LOCK_DISCARD鏍囪榪涜閿佸畾錛屼絾榪欓渶瑕佹鏌?/span>D3DCAPS2_DYNAMICTEXTURES紜歡鑳藉姏銆傚浜庨珮鍔ㄦ佽創鍥撅紙濡傝棰戙佺▼搴忕敓鎴愯創鍥撅級錛屾渶濂戒嬌鐢ㄩ潪鍙楃璧勬簮鍜岀郴緇熷唴瀛樿祫婧愶紝騫朵笖閫氳繃UpdateTexture鍑芥暟鏇存柊璐村浘銆傚浜庨珮棰戝害鐨勭矑瀛愭洿鏂幫紝UpdateTexture鍑芥暟鍙兘鏄渶濂界殑閫夋嫨銆?/span> 鍦ㄦ湁闄愮殑鎬葷嚎錛嶅唴瀛樺甫瀹戒笅錛岄潤鎬佽創鍥捐祫婧愬簲璇ヤ嬌鐢?/span>POOL_MANAGED鏂瑰紡錛岃繖鏍峰彲浠ョ‘淇濆畠鏈濂界殑鍒╃敤鏈湴鏄懼瓨錛屽茍鏈夎緝濂界殑鏁堢巼銆傚浜?#8220;鍗婇潤鎬?#8221;璧勬簮錛屼嬌鐢ㄥ姩鎬佺被鍨嬭祫婧愭湁鏃朵細鑾峰緱鏇村ソ鐨勬晥鐜囥?/span> 緋葷粺鍐呭瓨璧勬簮 璧勬簮鍙互浣跨敤POOL_SYSTEMMEM鏂瑰紡鍒涘緩銆備絾浠栦滑涓嶈兘鐢ㄤ簬鍥懼艦綆$嚎錛屼粬浠粎鑳?span class="GramE">鍋氫負婧愭暟鎹?/span>鐢ㄤ簬鏇存柊POOL_DEFAULT綾誨瀷鐨勮祫婧愶紝榪欐槸閫氳繃UpdateSurface鍜?/span>UpdateTexture鍑芥暟瀹屾垚鐨勩備粬浠殑閿佸畾鎿嶄綔涔熼潪甯哥畝鍗曪紝灝界浠栦滑鍚屾牱鍙兘鍥犱負鍓嶉潰鎻愬埌鐨勫師鍥犲鑷寸郴緇熷仠姝㈣繍杞?/span> 铏界劧鏄湪緋葷粺鍐呭瓨涓垱寤鴻祫婧愶紝浣?/span>POOL_SYSTEMMEM鎵鏀寔鐨勮祫婧愭牸寮忓拰鑳藉姏錛堟瘮濡傛渶澶у昂瀵革級鏄彈紜歡銆侀┍鍔ㄩ檺鍒剁殑銆傚悓鏍鋒槸鍦ㄧ郴緇熷唴瀛樹腑鍒涘緩璧勬簮鐨?/span>POOL_SCRATCH鍒欐病鏈夎繖鏂歸潰闄愬埗錛屽畠鏀寔鎵鏈夋牸寮忓拰鑳藉姏錛屼絾璁懼鍗翠笉鑳界洿鎺ヨ闂畠銆?/span>SCRATCH綾誨瀷璧勬簮涓鑸敤浜庡唴瀹瑰垱寤哄伐鍏楓?/span> 涓鑸х殑寤鴻 浜嗚В璧勬簮綆$悊鐨勬妧鏈疄鐜扮粏鑺傚杈炬垚浣犵殑紼嬪簭鐨勬ц兘鐩爣鏄湁闈炲父澶х殑甯姪鐨勶紝瑙勫垝浣犵殑璧勬簮濡備綍浜ょ粰D3D騫惰璁″ソ鐨勭粨鏋勪互渚胯兘鍙婃椂鍔犺澆蹇呰鐨勬暟鎹槸涓浠墮潪甯稿鏉傜殑宸ヤ綔錛屼負姝ゆ垜浠粰鍑轟竴浜涘ソ鐨勫疄璺電粡楠?span class="GramE">鍋氫負涓鑸х殑鍘熷垯錛?/span> l 棰勫鐞嗕綘鐨勮祫婧愩備笉瑕佸皢鑰楁椂鐨勫姞杞借祫婧愩佽祫婧愯漿鎹€佽祫婧愪紭鍖栦涪緇欑敤鎴峰幓鍋氾紝铏界劧榪欐牱渚夸簬寮鍙戯紝浣嗙‘璁╃敤鎴鋒棤娉曞繊鍙椼傞澶勭悊榪欎簺璧勬簮鍙互鍔犲揩鍔犺澆錛屾洿蹇嬌鐢紝浣犵殑鐢ㄦ埛涔熶細鍙戠幇浣犵殑紼嬪簭璺戠殑鏇村揩浜嗐?/span> l 閬垮厤鍦ㄦ瘡甯у垱寤鴻繃澶氱殑璧勬簮銆傚浜庤繃澶氱殑璧勬簮鍔犺澆錛屽彲浠ユ妸浠栦滑鍒嗗埌澶氬撫閲屽畬鎴?/span>鎴栬呬笉瑕佹ヤ簬閲婃斁閭d簺鏆傛椂涓嶇敤鐨勮祫婧愩?/span> l 紜繚鍦ㄤ竴甯х粨鏉熸椂宸茬粡鏂紑浜嗘墍鏈夎祫婧愰氶亾銆傦紙姣斿錛岄《鐐規祦錛?/span>texture stages錛岄《鐐圭儲寮曪級銆?/span> l 瀵逛簬璐村浘錛屽緩璁嬌鐢ㄥ帇緙╄創鍥撅紙DXTn錛夋牸寮忥紝寤鴻浣跨敤mip-map鎴栬呭皢灝忚創鍥炬嫾鎺ヤ負澶ц創鍥句嬌鐢ㄣ?/span> l 寤鴻浣跨敤欏剁偣绱㈠紩錛岃繖灝嗗噺灝戞暟鎹紶杈撻噺銆?/span> l 瀵逛簬榪囨浮鐨勪紭鍖栬祫婧愮鐞嗘槸闇瑕佽皚鎱庣殑銆傚鏋滀綘鐨勭▼搴忚繃鍒嗕緷璧栭┍鍔ㄣ佺‖浠跺拰鎿嶄綔緋葷粺鐨勬煇浜涚壒寰侊紝閭d箞榪欎簺紼嬪簭銆佺‖浠剁殑淇敼灝嗕細瀵艱嚧娼滃湪鐨勬ц兘闂銆?/span>
]]>
銆銆棣栧厛鎴戜滑寰楀0鏄庢墍闇瑕佺殑瀵硅薄銆傚綋鐒舵垜浠渶瑕佷竴寮犵敤鏉ユ覆鏌撶殑綰圭悊銆傛澶栵紝鎴戜滑榪橀渶瑕佷袱涓猄urface瀵硅薄銆備竴涓槸鐢ㄦ潵瀛樺偍鍚庡彴緙撳啿鍖猴紝涓涓敤鏉ュ綋綰圭悊鐨勬覆鏌撳璞°傚悗闈㈡垜鍐嶈緇嗕粙緇嶅畠浠傚彟澶栨垜浠繕闇瑕佷袱涓煩闃碉紝涓涓槸鐢ㄦ潵褰撶汗鐞嗙殑鎶曞獎鐭╅樀錛屽彟涓涓槸瀛樺偍鍘熸潵鐨勭煩闃點?br>銆銆LPDIRECT3DTEXTURE9 pRenderTexture = NULL;
銆銆LPDIRECT3DSURFACE9 pRenderSurface = NULL,pBackBuffer = NULL;
銆銆D3DXMATRIX matProjection,matOldProjection;
鐜板湪鎴戜滑鏉ュ垱寤虹汗鐞嗐傚墠涓や釜鍙傛暟鏄汗鐞嗙殑瀹藉害鍜岄珮搴︼紝絎笁涓弬鏁版槸綰圭悊鐨勫綰ф笎榪涚汗鐞嗗簭鍒楀弬鏁幫紝鍦ㄨ繖閲屾槸璁句負1錛岀鍥涗釜鍙傛暟闈炲父閲嶈鑰屼笖蹇呴』璁句負
D3DUSAGE_RENDERTARGET錛岃〃鏄庢垜浠墍鍒涘緩鐨勭汗鐞嗘槸鐢ㄦ潵娓叉煋鐨勩傚墿涓嬬殑鍙傛暟灝辨槸鎸囩汗鐞嗘牸寮忥紝欏剁偣緙撳啿鍖虹殑鍐呭瓨浣嶇疆錛屽拰涓涓寚鍚戠汗鐞嗙殑鎸?
閽堛傚綋綰圭悊鏄敤鏉ュ綋娓叉煋瀵硅薄鏃訛紝欏剁偣緙撳啿鍖虹殑鍐呭瓨浣嶇疆蹇呴』璁句負D3D_DEFAILT銆?br>銆銆g_App.GetDevice()->CreateTexture(256,256,1,D3DUSAGE_RENDERTARGET,D3DFMT_R5G6B5,D3DPOOL_DEFAULT,&pRenderTexture,NULL);
涓轟簡璁塊棶綰圭悊鍐呭瓨瀵硅薄錛屾垜浠渶瑕佷竴涓猄urface瀵硅薄錛屽洜涓篋3D涓殑綰圭悊鏄敤榪欐牱鐨勪竴涓猄urface鏉ュ瓨鍌ㄧ汗鐞嗘暟鎹殑銆備負浜嗗緱鍒扮汗鐞嗚〃闈㈢殑
Surface,鎴戜滑闇瑕佽皟鐢ㄦ柟娉旼etSurfaceLevel() 銆傜涓涓弬鏁版垜浠涓?錛岀浜屼釜鍙傛暟涓轟竴涓寚鍚憇urface瀵硅薄鐨勬寚閽堛?br>銆銆pRenderTexture->GetSurfaceLevel(0,&pRenderSurface);
銆銆涓嬩竴姝ュ氨鏄垱寤轟竴涓傚悎綰圭悊緇存暟鐨勬姇褰辯煩闃碉紝鍥犱負綰圭悊鐨勬í綰墊瘮鍜屽悗鍙扮紦鍐插尯鐨勪笉涓鏍楓?br>銆銆D3DXMatrixPerspectiveFovLH(&matProjection,D3DX_PI / 4.0f,1,1,100);
銆銆鍦ㄦ垜浠殑寰幆娓叉煋涔嬪墠錛屾垜浠繀欏諱繚瀛樺悗鍙扮紦鍐插尯鍜屽畠鐨勬姇褰辯煩闃點?br>銆銆g_App.GetDevice()->GetTransform(D3DTS_PROJECTION,&matOldProjection);
銆銆g_App.GetDevice()->GetRenderTarget(0,&pBackBuffer);
娓叉煋寰幆鍑芥暟鍙互鍒嗕負涓や釜閮ㄥ垎銆傜涓閮ㄥ垎鏄覆鏌撳埌綰圭悊鐨勮繃紼嬨傚洜姝わ紝娓叉煋瀵硅薄蹇呴』璁句負綰圭悊琛ㄩ潰銆傜劧鍚庢垜浠氨鍙互鎶婁笢瑗挎覆鏌撳埌榪欎釜瀵硅薄涓婁簡銆傛覆鏌撳埌鍙︿竴涓?
琛ㄩ潰涓婂拰姝e父鍦版覆鏌撳埌鍚庡彴緙撳啿鍖哄樊涓嶅銆傚彧鏈変竴鐐逛笉鍚岋紝閭e氨鏄厛涓嶈皟鐢≒rensent錛堬級鍑芥暟錛屽洜涓虹汗鐞嗕笂鐨勫唴瀹瑰茍涓嶉渶瑕佹樉紺哄湪灞忓箷涓娿傝薄騫蟲椂涓鏍鳳紝鎴?
浠厛瑕侀噸緗〃闈㈤鑹茬紦鍐插尯錛屽茍涓旇皟鐢˙eginSence()鍜孍ndSence()鏂規硶銆備負浜嗚兘澶熼傚綋鐨勬覆鏌擄紝鎴戜滑蹇呴』璁劇疆鍜岀汗鐞嗚〃闈㈢浉絎︾殑鎶曞獎鐭╅樀銆?
鍚﹀垯鏈鍚庣殑鍥捐薄鍙兘琚壄鏇?br>銆銆//render-to-texture
銆銆g_App.GetDevice()->SetRenderTarget(0,pRenderSurface); //set new render target
銆銆g_App.GetDevice()->Clear(0,NULL,D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,D3DCOLOR_X#646464,1.0f,0); //clear texture
銆銆g_App.GetDevice()->BeginScene();
銆銆g_App.GetDevice()->SetTexture(0,pPyramideTexture);
銆銆D3DXMatrixRotationY(&matRotationY,fRotation);
銆銆D3DXMatrixTranslation(&matTranslation,0.0f,0.0f,5.0f);
銆銆g_App.GetDevice()->SetTransform(D3DTS_WORLD,&(matRotationY * matTranslation));
銆銆g_App.GetDevice()->SetTransform(D3DTS_PROJECTION,&matProjection); //set projection matrix
銆銆g_App.GetDevice()->SetStreamSource(0,pTriangleVB,0,sizeof(D3DVERTEX));
銆銆g_App.GetDevice()->DrawPrimitive(D3DPT_TRIANGLELIST,0,4);
銆銆g_App.GetDevice()->EndScene();
銆銆娓叉煋寰幆鐨勭浜岄儴鍒嗗氨鏄覆鏌撴渶鍚庡満鏅殑榪囩▼錛堜篃灝辨槸鏄劇ず鍒板睆騫曚笂鐨勮繃紼嬶級銆傛覆鏌撳璞¢噸鏂拌涓哄悗鍙扮紦鍐插尯錛屾姇褰辯煩闃甸噸鏂拌涓哄師鏉ョ殑鎶曞獎鐭╅樀銆傜敱浜庣汗鐞嗗凡緇忓噯澶囧ソ浜嗭紝鎵浠ュ畠鍜岀汗鐞嗗眰0鐩稿叧鑱斻?br>銆銆//render scene with texture
銆銆g_App.GetDevice()->SetRenderTarget(0,pBackBuffer); //set back buffer
銆銆g_App.GetDevice()->Clear(0,NULL,D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,D3DCOLOR_X#000000,1.0f,0);
銆銆g_App.GetDevice()->BeginScene();
銆銆g_App.GetDevice()->SetTexture(0,pRenderTexture); //set rendered texture
銆銆g_App.GetDevice()->SetTransform(D3DTS_WORLD,&matTranslation);
銆銆g_App.GetDevice()->SetTransform(D3DTS_PROJECTION,&matOldProjection); //restore projection matrix
銆銆g_App.GetDevice()->SetStreamSource(0,pQuadVB,0,sizeof(D3DVERTEX));
銆銆g_App.GetDevice()->DrawPrimitive(D3DPT_TRIANGLESTRIP,0,2);
銆銆g_App.GetDevice()->EndScene();
銆銆g_App.GetDevice()->Present(NULL,NULL,NULL,NULL);
銆銆鏈鍚庢垜浠氳繃璋冪敤Release()鏂規硶閲婃斁Surface瀵硅薄銆?br>銆銆pRenderSurface->Release();
銆銆pRenderSurface = NULL;
銆銆pBackBuffer->Release();
銆銆pBackBuffer = NULL;
銆銆娓叉煋鍒扮汗鐞嗚兘璁╀綘鍋氬緢澶氫簨鎯咃紝浣嗘槸浣犲繀欏繪敞鎰忎竴浜涢檺鍒躲傞鍏堟繁搴︾紦鍐插尯蹇呴』鎬繪槸澶т簬鎴栫瓑浜庢覆鏌撳璞$殑澶у皬銆傛澶栵紝娓叉煋瀵硅薄鍜屾繁搴︾紦鍐插尯鐨勬牸寮忓繀欏諱竴鑷淬?img src ="http://www.shnenglu.com/richardhe/aggbug/63853.html" width = "1" height = "1" />
]]>
]]>