锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 涓銆?span> 璺ㄥ鉤鍙?/span>妗嗘灦鐨勫熀紜璁炬柦 (緇勪歡鍥?/span>) 1. MySQL鏁版嵁搴撴搷浣滅粍浠?/span> 2. 綰跨▼姹?/span> 鍙?/span> 璇誨啓閿?/span> 3. 鍩虹鏁版嵁綾誨瀷錛屽鍣紝鍐呭瓨姹狅紝鐜艦緙撳啿鍖?/span> 4. IOCP鍙?/span>Epoll璺ㄥ鉤鍙扮殑闈㈠悜瀵硅薄閫氫俊妗嗘灦 5. 闆嗘垚LuaTinker鑴氭湰浜や簰妯″潡絳?/span> 浜屻?span> 寮鍙戞柟寮忎笌璋冭瘯鐜 鏈鏋剁殑鍒濇璁炬兂鏄墠鏈熷湪Windows涓嬩嬌鐢?/span>VS.net 2008榪涜寮鍙戣皟璇曪紝浜夊彇鍦?/span>Windows涓嬭В鍐?/span>80%宸﹀彸鐨勯昏緫閿欒銆備箣鍚庣敱涓葷▼搴忓憳鎶婁唬鐮佺Щ妞嶅埌Linux錛屽茍浣跨敤Eclipse CDT鍙鍖栧紑鍙戠幆澧冭繘琛屽悗鏈熺殑璋冭瘯宸ヤ綔銆傝繖鏍蜂篃澶уぇ闄嶄綆鎷涜仒浜哄憳鐨勭煡璇嗚姹?/span>(涓嶇敤鎳?/span>Linux)錛屽湪鏌愪竴紼嬪害闄嶄綆浜嗕漢鍛樻垚鏈拰鍔犲揩浜嗗紑鍙戞晥鐜囥?br> 1. LoginApp 鍗崇櫥褰曟湇鍔″櫒, 瀹冧富瑕佸畬鎴愮帺瀹跺笎鍙風(fēng)殑楠岃瘉, 鍚屾椂瀹冮氳繃BaseAppMgr騫跺悜鐜╁鍙戦佷竴涓?/span>SessionKey浣滀負(fù)鍩虹鏈嶅姟鍣?/span>(BaseApp)鐨勭櫥褰曞瘑閽ワ紱鍚屾椂LoginServer榪樺悜鐜╁鍙戦佹湇鍔″櫒鍒楄〃淇℃伅銆?/span> 2. BaseApp 鍗沖熀紜鏈嶅姟鍣紝 涔熺О榪炴帴鏈嶅姟鍣紝瀹冭繕緇存寔鐫涓涓鎴風(fēng)榪炴帴鍒楄〃(鐢ㄦ埛鍒楄〃), 榪欐牱瀹冨彲浠ュ疄鐜板尯鍩熸秷鎭箍鎾強(qiáng)閫氳繃BaseAppMgr瀹炵幇涓栫晫鑱婂ぉ, 鐜╁淇℃伅鏌ョ湅絳夊姛鑳斤紱瀹冭繕璐熻矗娑堟伅鐨勫垎鍙戝埌CellApp榪涜澶勭悊錛屽茍鎶婄粨鏋滆繑鍥炲埌瀹㈡埛绔?/span> 3. CellApp 鍗蟲父鎴忔湇鍔″櫒錛屽畠璐熻矗涓栫晫鏁版嵁鐨勫姞杞斤紝娓告垙閫昏緫鐨勫鐞嗗強(qiáng)涓栫晫瀵硅薄鐨勭鐞嗐傚湪鏈灦鏋勪腑褰撲負(fù)鏀嚎鏈嶅姟鍣ㄣ?/span> 4. DBMgr 鐢ㄦ埛鏈嶅姟鍣紝瀹冭礋璐g敤鎴風(fēng)浉鍏蟲暟鎹殑瀛樺彇銆備竴鑸槸鐢ㄦ埛鐧誨綍閫夋嫨瑙掕壊鍚庡氨鑾峰緱瑙掕壊鎵鏈夌浉鍏蟲暟鎹粰鍒?/span>MapServer, 騫剁敱MapServer瀹氭椂淇濆瓨瑙掕壊鐨勭浉鍏蟲暟鎹?/span> 5. BaseAppMgr 鍩虹鏈嶅姟鍣ㄧ鐞嗗櫒錛屼富瑕佽礋璐e垎閰嶅熀紜鏈嶅姟鍣ㄧ粰鍒板鎴風(fēng)榪炴帴錛屽悓鏃跺畠閲囩敤鏌愮絳栫暐鍙互瀹炵幇鐢ㄦ埛鐨勫潎琛¤礋杞界瓑銆?/span> 6. CellAppMgr 鏀嚎鏈嶅姟鍣ㄧ鐞嗗櫒, 瀹冧富瑕佹牴鎹敮綰?/span>ID涓哄熀紜浠g悊瀵硅薄鍒嗛厤鏀嚎鏈嶅姟鍣ㄥ疄浣?/span>, 榪欐牱灝卞彲浠ュ疄鐜頒笌瀹㈡埛绔殑閫氫俊浜嗐?/span> 7. DB 鏁版嵁搴撴湇鍔″櫒涓昏鍒嗕負(fù)涓変釜搴撴潵瀛樺彇錛?/span>AccountDB涓虹帺瀹惰處鎴蜂俊鎭紝CharacterDB涓虹帺瀹惰鑹茬浉鍏充俊鎭紝WorldDB涓烘墍鑳$殑涓栫晫鏁版嵁銆?/span> Esc閿叧闂綋鍓嶇殑闈炴ā寮忕獥鍙?(姣旀柟璇?鏌ユ壘紿楀彛, 鍒囪鐢?Alt + F4, 榪欐牱浼?xì)杩濾S.net2005閮藉叧鎺? F5: 鍚姩璋冭瘯 Shift+F5: 鍋滄璋冭瘯 F7: 鐢熸垚瑙e喅鏂規(guī) F11: 鐙彞璋冭瘯 F9: 鎵撴柇鐐?鎴?鍙栨秷鏂偣 F12: 瀹氫綅鍒板嚱鏁扮殑瀹炵幇浣?br>???: 瀹氫綅鍒板嚱鏁扮殑澹版槑, 鍙兘鐢ㄥ彸閿?-->閫夋嫨A Shift+Alt+Enter: 鍒囨崲鍏ㄥ睆緙栬緫 Ctrl+F: 鏌ユ壘 F3: 鏌ユ壘涓嬩竴涓?br>Shift+F3: 鏌ユ壘涓婁竴涓?/p>
Ctrl+H: 鏇挎崲 Ctrl+宸﹀彸綆ご閿? 涓嬈″彲浠ョЩ鍔ㄤ竴涓崟璇?br>Ctrl+涓婁笅綆ご閿? 婊氬姩浠g爜灞忓箷錛屼絾涓嶇Щ鍔ㄥ厜鏍囦綅緗?/p>
Ctrl+L: 鍒犻櫎褰撳墠琛?/p>
Ctrl+G: 杞埌鎸囧畾琛?br>Shift+Alt+綆ご閿? 閫夋嫨鐭╁艦鏂囨湰 //鏈夌偣闅懼害鐨? Ctrl+Shift+A: 娣誨姞鏂伴」 Windows閿?E 鎵撳紑璧勬簮綆$悊鍣ㄣ?br>Windows閿?D 鏄劇ず妗岄潰銆?br>Windows閿?M 鏈灝忓寲鎵鏈夎鎵撳紑鐨勭獥鍙c?br>Alt+Tab 鍒囨崲浠誨姟鏍忎腑鐨勬縺媧葷獥鍙?/p>
鍦↙inux涓婏紝鍙よ佺殑Linux C紼嬪簭鍛樹竴鑸細(xì)閲囩敤涓涓枃鏈紪杈戝伐鍏鳳紝姣斿錛歏I絳夛紝鐢變簬鎴戜互鍓嶆槸鍦╳indows涓嬬敓媧葷殑錛屽VS.net榪欎竴綾葷殑宸ュ叿棰囦負(fù)鍠滅埍錛屽畠鐨勫紑鍙戞柟渚垮揩鎹鳳紝鍙堟湁寮鍙戣緟鍔╂彃浠剁殑鏀寔錛屼嬌浣犲彲浠ュ敖鎯呬嬌鐢ㄦ櫤鑳芥彁紺猴紝蹇嵎閿紝浠g爜妯℃澘絳夐珮鏁堢敓浜т唬鐮併傚彲浠ヨ緙栫爜鏇村鐨勬槸渚濋潬鍙鍖栧伐鍏鋒煡閿欙紝蹇熻煩杞唬鐮佺瓑銆傚弽姝f垜鐨勬剰鎬濆氨鏄紑鍙戠浉褰撴剦鎮(zhèn)︺備絾Linux涓嬬殑C紼嬪簭鍛樺垯涓嶇劧錛屾垜涔熸浘緇忛棶榪囦粬浠負(fù)浠涔堣閲囩敤VI絳夌紪杈戝伐鍏鋒潵緙栦唬鐮侊紝棣栧厛錛屼粬浠粰鍒版垜鐨勭涓絳旀鏄?涓撲笟", 鍏跺疄鎴戜篃涓嶅お鎳備粬浠鐨勪笓涓氭槸浠涔堬紝鏄紶緇熸剰涔変笂鐨勶紝榪樻槸涔?fàn)鎯у繀欏葷殑錛涚劧鍚庝粬浠錛?#8220;浣跨敤makefile鏂囦歡鏉ョ紪璇戜唬鐮佸緢鐖斤紝閫熷害寰堝揩”錛岃繖涓鐐規(guī)垜鏄禐鍚岀殑錛屼絾鏈変釜闂鏄▼搴忓憳鐨勫叆闂ㄩ棬妲涙瘮杈冮珮錛岃姹傚ぇ瀹墮兘瑕佷細(xì)榪欎笢瑗匡紝榪樻槸楹葷儲錛屼粠HR鎷涜仒澶勫彲浠ョ湅鍒幫紝鏈潵鎶旵++紼嬪簭鍛樼殑浜哄氨姣旇緝?yōu)畱浜嗗Q屽洜涓篊++搴旂敤鐨勯鍩熷熀紜鏄簲鐢ㄨ蔣浠訛紝娓告垙鍟婏紝鐢?shù)淇″晩锛寴q樻槸涓浜汳FC鐣岄潰鎬х殑涓滆タ錛岃屼笖瑕佹眰鍔熷簳姣旇緝濂斤紝紜疄鏈夋椂鍊欐嫑浜鴻繕鏄尯闅劇殑錛屾洿涓嶇敤璇磋繕瑕佹湁Linux寮鍙戠粡楠岀殑浜轟簡銆傛渶鍚庯紝鎴戦棶浜唋inux寮鍙戜笉鍛樿閭d綘浠殑璋冭瘯鐢ㄤ粈涔堝伐鍏鳳紝浠栦滑璇達(dá)細(xì)“gdb”, 鍙堟槸涓涓?鎵嬫墦鐗涜倝涓?錛岃嚜鎴戞劅瑙夊緢鐥涜嫤錛屽績閲屾兂“涓轟粈涔堟湁閭d箞鍏堣繘鐨勫伐鍏鳳紝姣旀柟璇達(dá)細(xì)Eclipse CDT錛?浣犱滑涓嶇敤鍛?”錛屽叾瀹炰粬浠績涓篃鏄湁絳旀鐨勶紝“緙栫爜瑕佸吇鎴愪竴縐嶅ソ涔?fàn)鎯Q岃屼笉鏄緷闈犱簬鏌愮宸ュ叿”錛屾樉鐒禠inux紼嬪簭鍛樺湪緙栫爜涓婂ぇ浣撹姣攚indows涓婄殑紼嬪簭鍛樻潵寰椾弗鏍鹼紝涔熸劅瑙夊埌浠栦滑鐨勪唬鐮佹瘮杈冩湁璐ㄩ噺銆備絾寰堟樉鐒剁殑錛岀敱浜庡紑鍙戠幆澧冪殑甯冪講姣旇緝楹葷儲錛屽浜庡ぇ瑙勬ā鐢熶駭鏄惁鑳藉姣忎釜浜洪兘鏈夐偅涔堥珮绱犺川鐨勭紪紼嬭兘鍔涳紝閭e氨鏄釜"璋?錛?----- “鐚滀笉鍑?”
閽堝涓婇潰鐨勬儏鍐碉紝鎴戜篃鑷繁鍒嗘瀽浜嗕竴涓嬶紝杞歡寮鍙戠殑涓夊ぇ瑕佺礌鏄粈涔堬紝鎴愭湰錛岃川閲忥紝榪涘害錛?鍙湁榪欎笁欏逛笢瑗挎帶鍒跺緱濂斤紝閭f墠鑳芥帶鍒跺ソ欏圭洰銆?br>閭h蔣浠剁紪紼嬬殑鍩虹鏄粈涔堬紵 褰撶劧鏄皟鐢ㄦ搷浣滅郴緇熺殑API浜嗭紝寰堟樉鐒剁殑錛?涓嶅悓鎿嶄綔緋葷粺鏈変笉鍚岀殑API錛岄櫎闈炰綘鏈変竴涓法騫沖彴鐨勫紑鍙戞鏋訛紝鎴栬呭彨綾誨簱涔熻銆?br>鎺ヤ笅鏉ヨ蔣浠舵灦鏋勫湪涓嶅悓棰嗗煙鏄惁閫氱敤錛熸瘮鏂硅錛氶氫俊妗嗘灦錛屽緢鏄劇劧鐨勶紝榪樻槸鏈夊尯鍒殑錛屾瘮鏂硅鐢?shù)淇【p葷粺涓庢父鎴忕郴緇燂紝閭f樉鐒惰繕鏄笉涓鏍風(fēng)殑銆?br>鏈鍚庯紝杞歡緙栫爜涓庢帴鍙?API)鏄笉鏄簲璇ユ洿澶氫漢甯哥敤鐨勶紝鑰屼笖瀹規(guī)槗涓婃墜鐨?鍙嬪ソ絎竴錛?錛岃繖鏍鋒墠鍙互鍑忓皯寮鍙戞垚鏈強(qiáng)鍗忚皟宸ヤ綔銆?br>
鎬葷粨涓涓嬶紝鎴戝績涓凡鏈夌瓟妗堜簡錛屽繀欏婚噰鐢ㄤ竴縐嶅ぇ澶氭暟紼嬪簭鍛樺彲浠ユ帴鍙楃殑錛岃屼笖鏄粬浠啛鎮(zhèn)夌殑錛堜笉瑕丏IY鐨勶級錛岃屼笖寮鍙戦熷害蹇熺殑寮鍙戞柟寮忛偅鎵嶆槸鐪熼亾鐞嗐?br>浠ヤ笅鏄垜鐨勫熀鏈柟妗堬細(xì)
]]>
]]>
Ctrl+Tab 鍒囨崲緙栬緫涓葷獥鍙d腑鐨勪唬鐮侀夐」欏?/p>
Ctrl+F5: 寮濮嬫墽琛?涓嶈皟璇?
Ctrl+Shift+F5: 閲嶅惎璋冭瘯
Ctrl+U: 鐢熸垚褰撳墠欏圭洰
F10: 榪囩▼璋冭瘯
Alt+F9: 鏄劇ず鏂偣紿楀彛
Ctrl+Shift+F: 鍦ㄦ枃浠朵腑鏌ユ壘
Ctrl+Shift+H: 鍦ㄦ枃浠朵腑鏇挎崲
Ctrl+M,M: 闅愯棌鎴栧睍寮褰撳墠宓屽鐨勬姌鍙犵姸鎬?br>Ctrl+M,L: 灝嗘墍鏈夎繃紼嬭緗負(fù)鐩稿悓鐨勯殣钘忔垨灞曞紑鐘舵?鎴栬?鍙抽敭 + L + O
Ctrl+M,P: 鍋滄澶х翰鏄劇ず 鎴栬呭啀鎸変竴嬈trl+M,L 鎴栬?鍙抽敭 + L + O
Alt+榧犳爣宸︽寜閽? 閫夋嫨鐭╁艦鏂囨湰
Ctrl+Shift+U: 鍏ㄩ儴鍙樹負(fù)澶у啓
Ctrl+U: 鍏ㄩ儴鍙樹負(fù)灝忓啓
Ctrl+K, Ctrl+C: 娉ㄩ噴
Ctrl+K, Ctrl+U: 瑙i櫎娉ㄩ噴
//----------------------------------------
VAssistX: 鎿嶄綔
1. 瀹氫箟鏍囧噯鐨勪唬鐮佹, 騫惰緗揩鎹烽敭
2. Alt+M, 鍐嶆墦涓婂嚱鏁板悕鐨勫墠鍑犱釜瀛楁瘝, 灝變細(xì)榪囨護(hù)鎺夊緢澶氬嚱鏁? 鏈鍚庢寜Enter瀹氫綅鍒板綋鍓嶆枃浠舵墍鏌ユ壘鐨勫嚱鏁頒綋
3. Shift+Alt+O, 鏌ユ壘鏂囦歡, 杈撳叆鏂囦歡鍚嶇殑鍓嶅嚑涓瓧姣? 灝變細(xì)榪囨護(hù)鎺夊緢澶氭枃浠? 鏈鍚庢寜Enter瀹氫綅鍒板綋鍓嶆枃浠舵墍鏌ユ壘鐨勬枃浠?br>4. Alt+O: 鍒囨崲鍒?h鍜?cpp鏂囦歡
5. 鍙抽敭+鏌ョ湅鎵鏈夊紩鐢?鎴?VassistX鑿滃崟涓殑Find References, Find References in Files : 鏌ョ湅鍑芥暟寮曠敤鐨勬墍鏈夊湴鏂?br>6. Shift+Alt+S: 鏌ユ壘鍏ㄥ眬鍙橀噺
//----------------------------------------
F7: 鏌ョ湅浠g爜
Shift+F7: 鏌ョ湅紿椾綋璁捐鍣?/p>
]]>
// 鐢ㄥ埌5寮犲浘鐗?
{
blendTexture = 0
layer0Texture = 1
layer1Texture = 2
layer2Texture = 3
layer3Texture = 4
}
!!ARBfp1.0
// 瀹氫箟甯擱噺:
PARAM c[1] = { { 1, 0.30000001, 0.69999999 } };
// 澹版槑3涓瘎瀛樺櫒:
TEMP R0;
TEMP R1;
TEMP R2;
// 寮濮嬫販鍚?
// 涓.絎?灞傚拰絎?灞備嬌鐢ㄧ4寮犲浘鐨剎閫氶亾浣滀負(fù)alpha榪涜娣峰悎:
TEX R1, fragment.texcoord[0], texture[0], 2D;
TEX R0, fragment.texcoord[1], texture[1], 2D;
ADD R2, R0, -R1;
// r2=Tex1-Tex0
TEX R0, fragment.texcoord[4], texture[4], 2D;
MAD R2, R0.x, R2, R1;
// r2 = Tex4.x*r2+Tex0
// 璇存槑:
// 鍏朵腑鐨凾ex4.x鏄搴旂1灞俛lpha鍊? 涓嬮潰鎶奣ex4.x褰揳1鐪?br>// 鍗?r2 = a1 * (Tex1-Tex0) + Tex0
// 杞崲涓涓嬪嵆鏄? Tex0*(1-a1)+a1*Tex1, 鍛靛懙,鐪嬪埌浜嗗惂,榪欏氨鏄販鍚堝叕寮?
// 浜?絎?灞傚拰鍓嶉潰緇撴灉浣跨敤絎?寮犲浘鐨剏閫氶亾浣滀負(fù)alpha榪涜娣峰悎:
TEX R1, fragment.texcoord[2], texture[2], 2D;
ADD R1, R1, -R2;
// r1=Tex2-r2
MAD R2, R0.y, R1, R2;
// r2 = Tex4.y*r1+r2, 鍗?a2*r1+r2 = a2*(Tex2-r2)+r2, 鍗硆2*(1-a2)+Tex2*a2, 鍏朵腑r2鍗蟲槸涓婃0鍜?灞傛販鍚堝悗鐨勭粨鏋?br>// 涓?絎?灞傚拰鍓嶉潰緇撴灉浣跨敤絎?寮犲浘鐨剒閫氶亾浣滀負(fù)alpha榪涜娣峰悎:
TEX R1, fragment.texcoord[3], texture[3], 2D;
ADD R1, R1, -R2;
// r1=Tex3-r2
MAD R1, R0.z, R1, R2;
// r1=a3*r1+r2 , 鍗?a3*r1+r2 = a3*(Tex3-r2)+r2, 鍗硆2*(1-a3)+Tex3*a3
// 榪欐牱r1灝變繚瀛樹簡鏈緇堢殑娣峰悎緇撴灉
// 鍥?璁╅槾褰卞湴琛ㄥ厜娉界郴鏁頒負(fù)0(Tex4.w鍗砤閫氶亾浠h〃鍦板艦鐨勯槾褰?0涓洪槾褰?1涓烘甯?鑰屾瘡灞傝創(chuàng)鍥句腑鐨刟閫氶亾鏄厜娉介氶亾,鎵浠1.w淇濆瓨鐨勬槸鏈緇堢殑鍏夋辰閫氶亾鍊?:
MUL R0.x, R1.w, R0.w;
// r0.x = r1.w(鍏夋辰)*Tex4.w(闃村獎(jiǎng)鍊? 鏄槾褰卞垯=0,鍚﹀垯=1)
// 璁$畻鍓婂噺緋繪暟?
MAD R0.w, R0, c[0].y, c[0].z; // r0涔樹笂0.3(鍓婂噺浜?0錛?鍐嶅姞涓婁竴涓父閲?.69999999
// 鍙嶅皠楂樺厜 = secondary_color(鍙嶅皠鍏?*鍏夋辰:
MUL R0.xyz, R0.x, fragment.color.secondary;
// 璐村浘鏈緇坈olor = 鏈緇堣創(chuàng)鍥炬販鍑虹殑color*鍓婂噺緋繪暟:
MUL R1.xyz, R1, R0.w;
// 璐村浘鏈緇坈olor * primary_color(鍏夌収鑹叉垨鏄《鐐硅壊) + 鍙嶅皠楂樺厜:
MAD result.color.xyz, R1, fragment.color.primary, R0;
// alpha:
MOV result.color.w, c[0].x;
END
鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛?a >http://blog.csdn.net/flipcode/archive/2008/03/03/2143452.aspx

2. 緇樺埗
pd3dDevice->SetRenderState(D3DRS_FILLMODE,D3DFILL_WIREFRAME);
DrawPrimitive()
DrawIndexedPrimitive()
DrawPrimitiveUP()
DrawIndexedPrimitiveUP()
3. 棰滆壊
4. 鐗囨嫻嬭瘯
(1) 娣卞害嫻嬭瘯
g_pDevice->SetRenderState(D3DRS_ZENABLE, TRUE); //glEnable(GL_DEPTH_TEST);
g_pDevice->SetRenderState(D3DRS_ZFUNC, D3DCMP_LESSEQUAL); //glDepthFunc(GL_LEQUAL);
//--------------------------------------------------------------------------------------------------------
g_pDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_CCW); //glEnable(GL_CULL_FACE);
(2) Alpha嫻嬭瘯
//--------------------------------------------------------------------------------------------------------
g_pDevice->SetRenderState(D3DRS_ALPHATESTENABLE, TRUE); //glEnable(GL_ALPHA_TEST);
g_pDevice->SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_GREATER); //glAlphaFunc(GL_GREATER, 0.1f);
g_pDevice->SetRenderState(D3DRS_ALPHAREF, 0.1 * 255); //鍙栧艱寖鍥?0 ~ 255
(3) 鍓嫻嬭瘯 (騫抽潰鍓垏)
//--------------------------------------------------------------------------------------------------------
// Enable clip plane for reflection map
CMatrix44f pWorldViewProjIT=m_pWorldViewProj;
//pWorldViewProjIT.Transpose();
pWorldViewProjIT.Invert();
// Transform plane to clip-space
float pClipSpacePlane[4];
float pClipPlane[]= { 0, 0, 1, 0};
// Check if camera is below water surface, if so invert clip plane
CVector3f pEye=(CVector3f)m_pCamera.GetPosition();
if(-pEye.m_fZ<0.0)
{
pClipPlane[2]=-pClipPlane[2];
}
MatrixTransformPlane(pClipSpacePlane, pClipPlane, pWorldViewProjIT);
// enable clip plane now
g_pDevice->SetClipPlane(0, pClipSpacePlane);
g_pDevice->SetRenderState(D3DRS_CLIPPLANEENABLE, 1);
(4) 妯℃澘嫻嬭瘯
//--------------------------------------------------------------------------------------------------------
g_pDevice->SetRenderState(D3DRS_STENCILENABLE, TRUE);
g_pDevice->SetRenderState(D3DRS_STENCILFUNC, 3DCMP_ALWAYS);
g_pDevice->SetRenderState(D3DRS_STENCILREF, 0x1); //鍙栧艱寖鍥?0 ~ 255
Device->SetRenderState(D3DRS_STENCILPASS, D3DSTENCILOP_KEEP);
5. 綰圭悊鎿嶄綔
g_pDevice->SetSamplerState( 0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
g_pDevice->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
g_pDevice->SetSamplerState( 0, D3DSAMP_MIPFILTER, D3DTEXF_LINEAR);
g_pDevice->SetSamplerState( 0, D3DSAMP_ADDRESSU, D3DTADDRESS_CLAMP);
g_pDevice->SetSamplerState( 0, D3DSAMP_ADDRESSV, D3DTADDRESS_CLAMP);
6. 緙撳啿鍖烘搷浣?br>
(1) 棰滆壊緙撳啿
//--------------------------------------------------------------------------------------------------------
g_pDevice->SetRenderState(D3DRS_COLORWRITEENABLE, D3DCOLORWRITEENABLE_ALPHA);
g_pDevice->SetRenderState(D3DRS_COLORWRITEENABLE, 0x000000F);
(2) 娣卞害緙撳啿
//--------------------------------------------------------------------------------------------------------
g_pDevice->SetRenderState(D3DRS_ZENABLE, TRUE); //glEnable(GL_DEPTH_TEST);
g_pDevice->SetRenderState(D3DRS_ZWRITEENABLE, TRUE); //glDepthMask(GL_TRUE);
(3) 妯℃澘緙撳啿
//--------------------------------------------------------------------------------------------------------
(4) 娓叉煋鍒扮汗鐞?br> //--------------------------------------------------------------------------------------------------------
// Render targets
IDirect3DSurface9 *m_plD3DBackbufferSurf,
*m_plD3DDepthStencilSurfAA,
*m_plD3DDepthStencilSurf;
CRenderTarget *m_pRTRefraction, *m_pRTReflection; //(鑷畾涔夌汗鐞嗙被)
//-----------------------------------------------------------------------------------
// Get backbuffer
g_pDevice->GetRenderTarget(0, &m_plD3DBackbufferSurf);
// Get depthstencil
g_pDevice->GetDepthStencilSurface(&m_plD3DDepthStencilSurfAA);
// Restore previous states
g_pDevice->SetRenderTarget(0, m_plD3DBackbufferSurf);
g_pDevice->SetDepthStencilSurface(m_plD3DDepthStencilSurfAA);
// (1)鎶樺皠鍥?-------------------------------------------------------------------------
//涓嬮潰鐨勮鍙ヨ皟鐢ㄤ簡 g_pDevice->CreateRenderTarget(iWidth, iHeight, (D3DFORMAT) iFormat, (D3DMULTISAMPLE_TYPE)iAASamples, 0, 0, &m_plD3Surf, 0));
if(FAILED(m_pRTRefraction->Create(m_fWidth>>1, m_fHeight>>1, D3DFMT_A8R8G8B8)))
{
return APP_ERR_INITFAIL;
}
// Create depthstencil withouth multisampling
g_pDevice->CreateDepthStencilSurface(m_fWidth, m_fHeight, D3DFMT_D24X8, (D3DMULTISAMPLE_TYPE)0, 0, 0, &m_plD3DDepthStencilSurf, 0);
g_pDevice->SetRenderTarget(0, m_pRTReflection->GetSurface());
g_pDevice->StretchRect(m_plD3DBackbufferSurf, 0, m_pRTRefraction->GetSurface(), 0, D3DTEXF_NONE);
// (2)鍙嶅皠鍥?----------------------------------------------------------------------------------
m_pRTReflection=new CRenderTarget;
if(FAILED(m_pRTReflection->Create(m_fWidth>>2, m_fHeight>>2, D3DFMT_A8R8G8B8)))
{
return APP_ERR_INITFAIL;
}
g_pDevice->SetRenderTarget(0, m_pRTReflection->GetSurface());
//-----------------------------------------------------------------------------------
g_pDevice->SetRenderTarget(0, m_pRTReflection->GetSurface());
g_pDevice->SetDepthStencilSurface(m_plD3DDepthStencilSurf);
g_pDevice->Clear(0, 0, D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER, D3DCOLOR_ARGB(255, 0, 0, 128), 1.0f, 0);
SetViewport(m_pRTReflection->GetWidth(), m_pRTReflection->GetHeight());
//-----------------------------------------------------------------------------------
D3DXSaveTextureToFile("imageTex.jpg",D3DXIFF_JPG,(IDirect3DTexture9*)m_pWavesBump->GetTexture(),NULL);
7. 娣峰悎鎿嶄綔
g_pDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, FALSE); //glDisable(GL_BLEND);
g_pDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA); //glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
g_pDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
8. 鐏厜涓庢潗璐?br> g_pDevice->SetRenderState(D3DRS_LIGHTING, FALSE); //glDisable(GL_LIGHTING);
D3DMATERIAL9 mtrl;
mtrl.Ambient = a;
mtrl.Diffuse = d;
mtrl.Specular = s;
mtrl.Emissive = e;
mtrl.Power = p;
Device->SetMaterial(&mtrl); //鍦ㄨ緗汗鐞嗗墠璁懼畾
//璁劇疆褰撳墠浣跨敤鐨勭汗鐞?br>