锘??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美激情一区二区三区高清视频,欧美日韩国产一区二区三区地区,欧美日韩abhttp://cppblog.com/heath/category/10986.htmlThere is no end, it is just the beginning! - A Game Developer's Noteszh-cnTue, 20 May 2014 11:13:00 GMTTue, 20 May 2014 11:13:00 GMT60鏂扮殑寮濮?/title><link>http://m.shnenglu.com/heath/archive/2014/05/20/207029.html</link><dc:creator>Heath</dc:creator><author>Heath</author><pubDate>Tue, 20 May 2014 05:06:00 GMT</pubDate><guid>http://m.shnenglu.com/heath/archive/2014/05/20/207029.html</guid><wfw:comment>http://m.shnenglu.com/heath/comments/207029.html</wfw:comment><comments>http://m.shnenglu.com/heath/archive/2014/05/20/207029.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/heath/comments/commentRss/207029.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/heath/services/trackbacks/207029.html</trackback:ping><description><![CDATA[    鍗氬寰堜箙娌℃湁鏇存柊浜嗭紝涓瀹氱▼搴︿笂璇存槑鑷繁鍙樻噿浜嗐傚洖欏捐繎涓騫達紝寮鍙戜簡5騫寸殑娓告垙涓婄嚎錛屾嬁浜嗗伐浣滃鐨?騫存湇鍔″錛岃嚜宸變篃灝遍『鐞嗘垚绔犵殑鍙樻垚浜嗚佷漢銆傚湪閭d簺娓呴棽鐨勬棩瀛愰噷錛屽仛寰楁渶鏈夋剰涔夌殑浜嬫儏灝辨槸姣忓ぉ鎺ラ佽佸﹩涓婁笅鐝紝絳夌潃瀹濆疂鐨勯檷鐢熴傚勾鍒濓紝緇堜簬鎶婃崲宸ヤ綔瀹ょ殑璁″垝鎻愪笂鏃ョ▼錛屾祦紼嬩竴鍗″氨鏄?涓湀錛岀瓑鍒?鏈堟湯鐨勬椂鍊欎篃灝卞樊涓嶅璇ヤ紤闄駭鍋囦簡錛屼篃灝辨槸璇存崲涓」鐩粍鑺變簡榪?涓湀鐨勬椂闂達紝鏈熼棿闄や簡鑰侀」鐩殑闆舵槦鏉備簨澶栵紝榪樻槸鏈変笉灝戞椂闂存潵瀛︿範鎵嬫父寮鍙戠煡璇嗙殑銆傝繘鍏ヤ簡鏂伴」鐩紝涓鍒囬兘鏄柊鐨勶紝鑷繁灝卞儚褰撳勾姣曚笟鐢熺殑鐘舵侊紝闄や簡鍏誨緋婂彛鐨勬媴瀛愩傚綋鐒訛紝鏈閲嶈鐨勮繕鏄柊鐢熷懡鐨勮癁鐢燂紝鐒﹁檻鍜屽叴濂嬪厖鏂ヨ繖鏁翠釜絳夊緟榪囩▼錛?鏈?鏃ュ甫鐫鍙岀溂鐨拰灝忛厭紿濈殑濂沖効鏉ュ埌浜嗕漢涓栵紝甯屾湜濂瑰揩涔愬仴搴峰湴鎴愰暱銆?img src ="http://m.shnenglu.com/heath/aggbug/207029.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/heath/" target="_blank">Heath</a> 2014-05-20 13:06 <a href="http://m.shnenglu.com/heath/archive/2014/05/20/207029.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Real-time Cutscene涓殑鎽勫儚鏈烘彃鍊肩爺絀?/title><link>http://m.shnenglu.com/heath/archive/2013/10/26/203921.html</link><dc:creator>Heath</dc:creator><author>Heath</author><pubDate>Sat, 26 Oct 2013 01:07:00 GMT</pubDate><guid>http://m.shnenglu.com/heath/archive/2013/10/26/203921.html</guid><wfw:comment>http://m.shnenglu.com/heath/comments/203921.html</wfw:comment><comments>http://m.shnenglu.com/heath/archive/2013/10/26/203921.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.shnenglu.com/heath/comments/commentRss/203921.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/heath/services/trackbacks/203921.html</trackback:ping><description><![CDATA[<p>     寰堝DCC宸ュ叿閮芥彁渚涗簡Curves Editor錛岄氳繃鎺у埗鐐規潵鏋勯犳彃鍊兼洸綰匡紝榪欐牱鍙互綺劇‘鍦版彃鍊艱建榪廣傚湪鎴戜滑娓告垙鐨勮繃鍦虹紪杈戝櫒涓紝鎴戜滑騫舵病鏈夊紑鍙戣繖綾誨伐鍏鳳紝涓鏂歸潰鐢變簬鏃墮棿浜哄姏鏈夐檺錛屽彟涓鏂歸潰甯屾湜鑳藉鎻愪緵涓縐嶇洿瑙傜畝渚跨殑鏂瑰紡杈懼埌鎯寵鐨勬晥鏋溿傚洜姝ゆ垜浠敮鎸佷袱縐嶆憚鍍忔満璺緞鍒涘緩鏂規硶錛?錛変互鎽勫儚鏈鴻瑙掔洿鎺ュ皢鎽勫儚鏈烘憜鍒版兂瑕佷綅緗紝淇濆瓨姝ゆ椂鎽勫儚鏈虹殑浣嶇疆涓庢棆杞紱2錛夊皢3DS Max涓殑璺緞瀵煎嚭涓烘父鎴忕殑榪囧満鏍煎紡銆傚墠鑰呭彲浠ユ弧瓚?0%鐨勮繃鍦虹紪杈戦渶姹傦紝鍚庤呮弧瓚充簡10%鐨勫鏉傝礬寰勭紪杈戦渶姹傘?<p>     涓嶇浣跨敤閭g鏂瑰紡錛岄兘闇瑕佸皢紱繪暎鐐硅繘琛屾彃鍊鹼紙interpolation錛変互渚垮緱鍒板鉤婊戣礬寰勩傝繖閲屽氨鐗墊秹鍒頒綅緗彃鍊煎拰鏈濆悜鎻掑箋?<p>     浠庢彃鍊煎嚱鏁頒笂鍙垎涓轟笁綾伙細1錛夌嚎鎬э紱2錛夊欏瑰紡錛?錛夋牱鏉°傞【鍚嶆濅箟錛岀嚎鎬ф彃鍊奸噰鐢ㄧ嚎鎬у嚱鏁幫紝澶氶」寮忔彃鍊奸噰鐢ㄥ欏瑰紡錛岃屾牱鏉℃彃鍊煎垯閲囩敤浜嗕竴緇勫欏瑰紡緇勬垚鐨勫垎孌靛嚱鏁般傜敱浜庢憚鍍忔満鐨勫叧閿礬寰勭偣閫氬父閮戒細澶т簬2涓紝鎵浠ユ彃鍊兼柟娉曚笂灝卞繀欏婚夊彇鏍鋒潯鏂規硶銆?<p><font size="4" face="Arial"><strong>涓銆佷綅緗彃鍊?/strong></font></p> <p><font size="3"><strong>1.1 鏍鋒潯綾誨瀷閫夋嫨</strong></font> <p>     鍦ㄨ繖閲屾垜浠粎鑰冭檻涓夋鏍鋒潯鎻掑鹼紝鍥犱負瀹冧滑鍙揪鍒癈2榪炵畫銆備笁嬈℃牱鏉′腑涓昏浠ezier銆丆atmull-Rom銆佸潎鍖B鏍鋒潯涓鴻冩煡瀵硅薄錛屽畠浠兘鍏鋒湁璁$畻寮閿灝忕殑浼樼偣銆傚彲浠ラ氳繃涓嬮潰鍏紡鏉ュ畾涔夊畠浠細 <p><a href="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/Real-time-Cutscene_7DED/Image(18)_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="Image(18)" border="0" alt="Image(18)" src="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/Real-time-Cutscene_7DED/Image(18)_thumb.png" width="500" height="117"></a> <p>     綆鍖栦負錛?<p><a href="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/Real-time-Cutscene_7DED/Image(19)_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="Image(19)" border="0" alt="Image(19)" src="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/Real-time-Cutscene_7DED/Image(19)_thumb.png" width="130" height="32"></a> <p>     涓嬮潰琛ㄦ牸鍒楀嚭浜嗕笁縐嶆彃鍊兼洸綰垮搴旂殑G鍜孧錛?<p><a href="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/Real-time-Cutscene_7DED/Image(20)_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="Image(20)" border="0" alt="Image(20)" src="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/Real-time-Cutscene_7DED/Image(20)_thumb.png" width="483" height="339"></a> <p>     濡備笅鍥炬墍紺猴紝瀵?涓偣榪涜Bezier鎻掑煎緱鍒扮殑鏇茬嚎鍙細鏈変袱涓偣琚洸綰跨┛榪囷紝鑰孊-Spline鎻掑煎緱鍒扮殑鏇茬嚎涓嶄細緇忚繃鎺у埗鐐癸紝鍙湁Catmull-Rom Spline鍙互寰楀埌絀胯繃闄よ搗鐐瑰拰緇堢偣涔嬮棿鐨勬墍鏈夋帶鍒剁偣銆傛鍥犱負Catmull-Rom鍏鋒湁榪欎釜鐗規э紝浣垮緱瀹冭騫挎硾鍦板簲鐢ㄥ湪鍏抽敭甯у鉤婊戞彃鍊間笂錛屽洜姝ゆ垜浠夋嫨浜咰atmull-Rom鏍鋒潯浣滀負鎽勫儚鏈轟綅緗偣鐨勬彃鍊肩畻娉曘?<p><a href="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/Real-time-Cutscene_7DED/Image(21)_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="Image(21)" border="0" alt="Image(21)" src="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/Real-time-Cutscene_7DED/Image(21)_thumb.png" width="400" height="917"></a> <p><font size="3"><strong>1.2 瀹炵幇</strong></font> <p><a href="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/Real-time-Cutscene_7DED/Image_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Image" border="0" alt="Image" src="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/Real-time-Cutscene_7DED/Image_thumb.jpg" width="759" height="732"></a> <p><font size="3"><strong>鍙傝冿細</strong></font> <p>[1] <a >Mathematics for 3D Game Programming and Computer Graphics 3e by Eric Lengyel</a> <p>[2] <a >http://en.wikipedia.org/wiki/Catmull-Rom_spline#Catmull.E2.80.93Rom_spline</a> <p>[3] <a >http://www.codeproject.com/Articles/30838/Overhauser-Catmull-Rom-Splines-for-Camera-Animatio</a> <p><font size="4"><strong>浜屻佹湞鍚戯紙鏃嬭漿錛夋彃鍊?/strong></font>   <p><font size="3"><strong>2.1 Euler Angles VS Quaternion</strong></font>         <p>     涓夌淮絀洪棿涓弿榪版棆杞殑涓昏鏂規硶鏈塃uler Angles鍜孮uaternion銆侲uler Angles鏈変笁涓槑鏄劇殑闂錛?錛変笁杞翠笂鐨勬棆杞『搴忔晱鎰燂紱2錛塆imbal Lock鐜拌薄瀵艱嚧鏃嬭漿鑷敱搴︿涪澶憋紱3錛夌嫭绔嬪湴瀵逛笁涓棆杞垎閲忚繘琛屾彃鍊鹼紝蹇界暐浜嗕笁杞翠箣闂寸殑渚濊禆鍏崇郴錛屽鑷存彃鍊肩粨鏋滀笉鐞嗘兂銆備笌Euler Angles涓嶅悓鐨勬槸錛孮uaternion娌℃湁灝嗘棆杞垎瑙e埌涓変釜杞村悜涓婏紝鑰屾槸鐢ㄤ竴涓棆杞醬鍜岀粫璇ヨ醬鐨勬棆杞搴︽潵鎻忚堪錛屾墍浠ヤ粠鏍規湰涓婃秷闄や簡Euler Angles鐨勪笁澶ч棶棰樸傛湁鍏砆uaternion鐨勮緇嗘弿榪板彲鍙傝僛1]錛屽湪姝や笉鍐嶇瘡榪般?<p><font size="3"><strong>2.2 LERP VS SLERP</strong></font> <p>     鍥涘厓鏁扮嚎鎬ф彃鍊鹼紙Linear Quaternion interpolation錛夌殑璁$畻鍏紡涓猴細 <p><a href="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/Real-time-Cutscene_7DED/Image(1)_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="Image(1)" border="0" alt="Image(1)" src="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/Real-time-Cutscene_7DED/Image(1)_thumb.jpg" width="510" height="306"></a> <p>     鍥涘厓鏁扮悆闈㈢嚎鎬ф彃鍊鹼紙Spherical Linear Quaternion interpolation錛夌殑璁$畻鍏紡涓猴細 <p><a href="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/Real-time-Cutscene_7DED/Image(2)_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="Image(2)" border="0" alt="Image(2)" src="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/Real-time-Cutscene_7DED/Image(2)_thumb.jpg" width="315" height="43"></a> <p><a href="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/Real-time-Cutscene_7DED/Image(3)_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="Image(3)" border="0" alt="Image(3)" src="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/Real-time-Cutscene_7DED/Image(3)_thumb.jpg" width="221" height="138"></a> <p>     鍏朵腑錛屛鎬負涓や釜鍥涘厓鏁扮殑澶硅銆?<p>     涓轟簡鏂逛究灞曠ず錛屾垜浠冭檻鍦?D鎯呭喌瀵硅搴榪涜涓ゆ鎻掑鹼紝涓ょ綆楁硶鍦ㄦ彃鍊兼晥鏋滀笂瀛樺湪鐨勫樊寮傦紝濡備笅鍥撅紙b涓篖ERP銆乧涓篠LERP錛夛細 <p><a href="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/Real-time-Cutscene_7DED/Image(4)_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="Image(4)" border="0" alt="Image(4)" src="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/Real-time-Cutscene_7DED/Image(4)_thumb.jpg" width="640" height="128"></a> <p>     浠庡浘涓彲浠ョ湅鍑篖ERP鍏跺疄鏄涓ゅ洓鍏冩暟鍦ㄥ渾涓婄殑寮﹁繘琛屼簡絳夊垎錛岃孲LERP鍒欐槸瀵瑰渾寮ц繘琛岀瓑鍒嗐傜敱姝ゅ緱鍑虹殑緇撹鏄紝SLERP寰楀埌浜嗘瘮LERP鏇村鉤婊戠殑鎻掑肩粨鏋溿?<p>     涓轟簡淇濊瘉鎻掑兼洸綰跨殑C2榪炵畫鎬э紝闇瑕佷嬌鐢ㄧ悆闈㈠洓杈瑰艦鎻掑鹼紙Spherical Quadrangle interpolation錛夋柟娉曘備緥濡傦紝瀵筿1鍜宷2鎻掑鹼紝棣栧厛瑕佺敤q0銆乹1銆乹2銆乹3璁$畻鍑轟袱涓帶鍒剁偣錛圛nner Quadrangle Point錛夛紝鍏紡濡備笅錛?<p><a href="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/Real-time-Cutscene_7DED/Image(5)_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="Image(5)" border="0" alt="Image(5)" src="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/Real-time-Cutscene_7DED/Image(5)_thumb.jpg" width="286" height="79"></a> <p>     鐒跺悗閫氳繃涓嬪紡寰楀埌鏈緇堟彃鍊肩粨鏋滐細 <p><a href="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/Real-time-Cutscene_7DED/Image(6)_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="Image(6)" border="0" alt="Image(6)" src="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/Real-time-Cutscene_7DED/Image(6)_thumb.jpg" width="760" height="41"></a> <p><font size="3"><strong>2.3 瀹炵幇</strong></font> <p><a href="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/Real-time-Cutscene_7DED/Image(7)_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Image(7)" border="0" alt="Image(7)" src="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/Real-time-Cutscene_7DED/Image(7)_thumb.jpg" width="696" height="1022"></a> <p>     涓婇潰浠g爜娌℃湁鑰冭檻涓や釜鍥涘厓鏁頒箣闂村す瑙掑ぇ浜?80擄鐨勬儏鍐點備緥濡傦紝鑰冭檻q1->q2鐨勬彃鍊艱搴ξ?gt;180擄錛屾垜浠彲浠ヨq1->q2鍙嶅悜鏃嬭漿2蟺-胃錛屽嵆鏃嬭漿-(2蟺-胃)錛屾牴鎹洓鍏冩暟鐨勫畾涔塠v*sin(胃/2) , cos(胃/2)]錛岄偅涔堝q2榪涜澶勭悊鍙樹負[-v*sin(胃/2) , -cos(胃/2)]銆傝繖涓鐞嗗彲浠ユ斁鍦ˋddSplinePoint涓潵鍋氾細 <p><a href="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/Real-time-Cutscene_7DED/Image(8)_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Image(8)" border="0" alt="Image(8)" src="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/Real-time-Cutscene_7DED/Image(8)_thumb.jpg" width="527" height="234"></a> <p><font size="3"><strong>鍙傝冿細</strong></font> <p>[1] <a >Quaternions, Interpolation and Animation by EB Dam - 1998</a> <p>[2] <a >Game Engine Architecture by Jason Gregory - 2009</a> <p>[3] <a >https://theory.org/software/qfa/writeup/node12.html</a><img src ="http://m.shnenglu.com/heath/aggbug/203921.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/heath/" target="_blank">Heath</a> 2013-10-26 09:07 <a href="http://m.shnenglu.com/heath/archive/2013/10/26/203921.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Windows騫沖彴涓嬮拡瀵笴/C++欏圭洰鐨勫唴瀛樻硠婕忔嫻嬫柟娉?/title><link>http://m.shnenglu.com/heath/archive/2013/10/26/203920.html</link><dc:creator>Heath</dc:creator><author>Heath</author><pubDate>Sat, 26 Oct 2013 00:55:00 GMT</pubDate><guid>http://m.shnenglu.com/heath/archive/2013/10/26/203920.html</guid><wfw:comment>http://m.shnenglu.com/heath/comments/203920.html</wfw:comment><comments>http://m.shnenglu.com/heath/archive/2013/10/26/203920.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://m.shnenglu.com/heath/comments/commentRss/203920.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/heath/services/trackbacks/203920.html</trackback:ping><description><![CDATA[<p>     鐢變簬璇█鍦ㄨ嚜鍔ㄥ唴瀛樼鐞嗕笂鐨勬瑺緙猴紝C/C++鍦ㄥ唴瀛樼鐞嗕笂浠庢潵閮芥槸闇瑕佺▼搴忓憳灝忓績澶勭悊鐨勪竴涓柟闈紝褰撻」鐩唬鐮佷笂浜嗕竴瀹氳妯★紝鍐呭瓨娑堣楀拰娉勬紡灝變細鎴愪負紼嬪簭紼沖畾榪愯鐨勭涓澶ф晫銆傚鏋滀笉鍦ㄩ」鐩箣鍒濆氨寤虹珛鍐呭瓨綆$悊鍜屾硠婕忔嫻嬫満鍒訛紝鍚庨潰铔嬬柤鐨勯棶棰樺氨浼氭帴韙佃屾潵銆傝繖綃囨枃绔犵潃閲嶈璁哄唴瀛樻硠婕忔嫻嬶紝鑰屽唴瀛樼鐞嗕笌鍏蜂綋欏圭洰綾誨瀷鍏崇郴瀵嗗垏錛屽悗闈㈡湁鏃墮棿鎴戜細鐫閲嶆父鎴忛」鐩潵璁ㄨ銆?<p>     鍐呭瓨娉勬紡媯嫻嬬殑鍩烘湰姝ラ鏄細1錛夊寘瑁咃紙閲嶈澆錛夊唴瀛樺垎閰?閲婃斁API錛?錛夎繘琛屽唴瀛樺垎閰嶆椂璁頒笅鐩稿叧淇℃伅錛氬湴鍧銆佸ぇ灝忋佽皟鐢ㄦ爤錛?錛夐噴鏀炬椂娓呴櫎涔嬪墠璁板綍鐨勫搴斾俊鎭紱4錛夌▼搴忛鍑烘椂錛堢‘淇濆湪鎵鏈夊唴瀛橀噴鏀炬搷浣滃畬鎴愪箣鍚庯級錛岃緭鍑哄墿涓嬬殑璁板綍銆傚叾涓紝瀵硅繘琛屽垎閰嶆搷浣滄槸鐨勮皟鐢ㄦ爤鍥炴函鏄釜閲嶇偣淇℃伅錛屽畠鑳藉甯姪鎴戜滑鎵懼嚭鍐呭瓨娉勬紡浠g爜銆?<p>     Windows涓殑Dbghelp搴撴彁渚涗簡涓板瘜鐨勮皟璇旳PI銆係tackWalk搴旇鏄繘琛屾爤鍥炴函鏈鐩存帴鐨勪竴縐嶆帴鍙d簡錛屼絾鏄畠涓嶅蹇傚鏋滆兘鍏堣褰曚笅璋冪敤鏍堜笂鐨凜ALL鎸囦護鍦板潃錛岀劧鍚庡湪杈撳嚭鏃ュ織鏃惰В鏋愬嚭絎﹀彿錛屽皢浼氬ぇ澶ч檷浣庢嫻嬫満鍒跺紼嬪簭鏈韓鎬ц兘鐨勫獎鍝嶃侱bghelp搴撲腑鎻愪緵浜哠ym*FromAddr緋誨垪API錛屽彲浠ラ氳繃鎸囦護鍦板潃鑾峰彇鍑芥暟絎﹀彿錛岄偅涔堝墿涓嬬殑灝辨槸濡備綍璁板綍鎸囦護鍦板潃鐨勯棶棰樹簡銆備粠緗戜笂鍊熶簡涓寮爔86璋冪敤鏍堢ず鎰忓浘錛屽涓嬶細 <p><a href="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/WindowsCC_7CB0/Image(12)_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="Image(12)" border="0" alt="Image(12)" src="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/WindowsCC_7CB0/Image(12)_thumb.png" width="263" height="458"></a> <p>     浠庡浘涓彲浠ョ湅鍑猴紝Callee鐨凟BP濮嬬粓鎸囧悜Caller鐨凟BP錛孍BP涓嬮潰鏄寚鍚慍aller涓嬩竴鏉℃寚浠わ紙娉ㄦ剰x86浣撶郴涓嬫爤鐨勫闀挎柟鍚戞槸灝忓湴鍧錛夛紝鍥犳閫氳繃EBP灝卞彲浠ュ洖婧暣涓皟鐢ㄦ爤浜嗐傞氳繃涓嬮潰浠g爜鍙互瀹炵幇姝ゅ姛鑳斤細 <p><a href="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/WindowsCC_7CB0/Image(13)_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Image(13)" border="0" alt="Image(13)" src="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/WindowsCC_7CB0/Image(13)_thumb.png" width="512" height="335"></a> <p>     瀹忓弬鏁癴rame鏄釜void*鎸囬拡鏁扮粍錛屾暟緇勭殑澶у皬鍙栧喅浜庢兂瑕佸洖婧殑鏍堟繁搴︺傚唴瀛樺垎閰嶅拰鍥炴敹鐨勫寘瑁呬唬鐮佸涓嬶細 <p><a href="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/WindowsCC_7CB0/Image(14)_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Image(14)" border="0" alt="Image(14)" src="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/WindowsCC_7CB0/Image(14)_thumb.png" width="768" height="311"></a> <p>     鎴戜滑鐪嬪埌錛屽唴瀛樼鐞嗙郴緇熷唴閮ㄧ粓絀惰繕鏄浣跨敤璇█鎻愪緵鐨勫唴瀛樺垎閰?閲婃斁API錛屽彧瑕侀厤瀵瑰疄鐜頒簡鍒嗛厤涓庨噴鏀劇鐞嗭紝緋葷粺鍐呴儴鐨勬棤娉勬紡鏄緢瀹規槗淇濊瘉鐨勩傚湪榪欓噷鐫閲嶈瑙e師鐞嗭紝灝變笉閲嶈澆new/delete operator浜嗐傛渶鍚庣湅涓涓嬭皟鐢ㄦ爤鍑芥暟絎﹀彿鐨勫洖婧唬鐮侊細 <p><a href="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/WindowsCC_7CB0/Image(15)_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Image(15)" border="0" alt="Image(15)" src="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/WindowsCC_7CB0/Image(15)_thumb.png" width="1236" height="868"></a> <p>     鎴戜滑鐢ㄤ笅闈唬鐮佸仛嫻嬭瘯鐢ㄤ緥錛?<p><a href="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/WindowsCC_7CB0/Image(16)_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Image(16)" border="0" alt="Image(16)" src="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/WindowsCC_7CB0/Image(16)_thumb.png" width="537" height="567"></a> <p>     娉勬紡媯嫻嬬粨鏋滐細 <p><a href="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/WindowsCC_7CB0/Image(17)_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Image(17)" border="0" alt="Image(17)" src="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/WindowsCC_7CB0/Image(17)_thumb.png" width="800" height="322"></a> <p>鍙傝冿細 <p>[1] <a >Using DbgHelp</a> <p>[2] <a >Intel x86 Function-call Conventions - Assembly View</a><img src ="http://m.shnenglu.com/heath/aggbug/203920.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/heath/" target="_blank">Heath</a> 2013-10-26 08:55 <a href="http://m.shnenglu.com/heath/archive/2013/10/26/203920.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>3DS Max鍧愭爣緋諱笌D3D宸︽墜緋葷殑綆鍗曡漿鎹㈡柟娉?/title><link>http://m.shnenglu.com/heath/archive/2013/06/08/200890.html</link><dc:creator>Heath</dc:creator><author>Heath</author><pubDate>Sat, 08 Jun 2013 14:31:00 GMT</pubDate><guid>http://m.shnenglu.com/heath/archive/2013/06/08/200890.html</guid><wfw:comment>http://m.shnenglu.com/heath/comments/200890.html</wfw:comment><comments>http://m.shnenglu.com/heath/archive/2013/06/08/200890.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/heath/comments/commentRss/200890.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/heath/services/trackbacks/200890.html</trackback:ping><description><![CDATA[     鎽樿:   <a href='http://m.shnenglu.com/heath/archive/2013/06/08/200890.html'>闃呰鍏ㄦ枃</a><img src ="http://m.shnenglu.com/heath/aggbug/200890.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/heath/" target="_blank">Heath</a> 2013-06-08 22:31 <a href="http://m.shnenglu.com/heath/archive/2013/06/08/200890.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>瑙e喅A*瀵昏礬涓竟緙樿璧伴棶棰?/title><link>http://m.shnenglu.com/heath/archive/2013/05/04/199973.html</link><dc:creator>Heath</dc:creator><author>Heath</author><pubDate>Sat, 04 May 2013 15:49:00 GMT</pubDate><guid>http://m.shnenglu.com/heath/archive/2013/05/04/199973.html</guid><wfw:comment>http://m.shnenglu.com/heath/comments/199973.html</wfw:comment><comments>http://m.shnenglu.com/heath/archive/2013/05/04/199973.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/heath/comments/commentRss/199973.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/heath/services/trackbacks/199973.html</trackback:ping><description><![CDATA[<p>     鐢ㄧ鎾炰綋鏉ョ害鏉熶笘鐣岃寖鍥村凡緇忕敤寰楀緢騫挎硾浜嗭紝鐜╁涓庝笘鐣岃竟緙樼殑浜や簰闂涔熷鏄撶敤紕版挒闈㈢殑娉曠嚎鍜岀帺瀹舵湞鍚戞潵瑙e喅銆傜劧鑰屽浜庝竴涓熀浜嶢* PathFinding鐨勬父鎴忥紝璨屼技榪樻病鏈変漢鍘昏冭檻鍜岃В鍐寵繖涓棶棰樸傛渶鍒濊冭檻榪欎釜闂錛屾槸鍥犱負娓告垙涓姞鍏ヤ簡AWSD鐨勭Щ鍔ㄦ柟寮忥紝褰撶鍒伴樆鎸″氨闈欐涓嶅姩浜嗭紝鍔犱笂鏈夋椂闃繪尅鍒峰緱涓庡満鏅笉澶創鍚堬紝閫犳垚鐜╁鍦ㄧЩ鍔ㄤ笂鐨勪笉鐖藉揩銆傝冭檻涓嬪浘鐨勬儏鍐碉紝钃濊壊涓夎鏄鑹詫紝綰㈣壊綰挎緇欏嚭浜嗗墠榪涙柟鍚戝拰緇堢偣錛堟父鎴忎腑閰嶇疆涓鴻鑹叉湞鍚戜笂5m澶勶級銆?<p><a href="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/988bf6b67b08_14D26/Image(9)%5B6%5D.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="Image(9)[6]" border="0" alt="Image(9)[6]" src="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/988bf6b67b08_14D26/Image(9)%5B6%5D_thumb.png" width="503" height="290"></a> <p>     鎴戞兂浜嗕袱縐嶆柟妗堬紝鏈鍒濈殑鏂規鐏墊劅鏉ヨ嚜鍏夌嚎鍙嶅皠錛屽涓嬪浘鎵紺恒?<p><a href="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/988bf6b67b08_14D26/Image(10)_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="Image(10)" border="0" alt="Image(10)" src="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/988bf6b67b08_14D26/Image(10)_thumb.png" width="516" height="282"></a> <p>     鍥犱負闃繪尅鏍煎瓙鏄醬瀵歸綈鐨勶紝閫氳繃娉曞悜閲弉鍙互寰楀埌b鐐圭殑鍙嶅皠鍚戦噺e'-o錛屽皢|e'-o|闄愬畾鍦ㄤ竴涓浐瀹氬鹼紝姝ゆ椂濡傛灉e'涓嶅湪闃繪尅閲岄潰錛屽氨灝嗗畠浣滀負鏂扮殑緇堢偣銆傝鏂規鐨勫疄楠岀粨鏋滀笉澶護浜烘弧鎰忥紝褰撹鑹茬闃繪尅杈冭繎鏃舵柇緇劅澶槑鏄撅紝鍥犱負|e' - b|鐨勯暱搴﹁緝鐭傚彟澶栧畠涓嶈兘澶勭悊e'鍦ㄩ樆鎸¢噷鐨勬儏鍐碉紝琚崱浣忎笉鍔ㄧ殑姒傜巼渚濈劧杈冨ぇ銆?<p>     絎簩縐嶆柟妗堟槸鏍規嵁縐誨姩瓚嬪悜鍦ㄤ竴涓醬鍚戞壘涓涓彲杈捐瘯鎺㈢偣錛岀劧鍚庣敤闄愬埗浜嗘悳绱㈢┖闂達紙鎼滅儲鑺傜偣鍦?0浠ュ唴錛夌殑A*綆楁硶鎵懼埌涓鏉″埌璇曟帰鐐圭殑璺緞錛屽涓嬪浘銆?<p><a href="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/988bf6b67b08_14D26/Image(11)_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="Image(11)" border="0" alt="Image(11)" src="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/988bf6b67b08_14D26/Image(11)_thumb.png" width="506" height="285"></a> <p>     璁綿iff_x = 緇堢偣x - 璧風偣x錛宒iff_y = 緇堢偣y - 璧風偣y錛屽綋diff_x > diff_y錛岃瀹氫負瓚嬪悜x鏂瑰悜涓婄Щ鍔紝鍦ㄨ繖縐嶆儏鍐典笅鍦ㄧ粓鐐箉杞村悜涓娐?0涓牸瀛愬唴鍘繪壘鍒頒竴涓渶鎺ヨ繎緇堢偣鐨勬棤闃繪尅鐐癸紙縐板畠涓哄彲杈捐瘯鎺㈢偣錛夈傜敱浜庤瘯鎺㈢偣涓庣帺瀹跺綋鍓嶇偣鏋佹湁鍙兘鏄洿綰夸笉榪為氱殑錛岃屼笖瀹冧滑涓嶅彲鑳藉お榪滐紝鎵浠ヤ嬌鐢ㄤ簡涓涓皢鎼滅儲鑺傜偣涓暟闄愬埗鍦?0浠ュ唴A*鏉ュ緱鍒頒竴鏉¤礬寰勩傝鏂規澶ч儴鍒嗘儏鍐甸兘鑳藉湪杈圭紭鎵懼埌鍚堢悊鐐癸紝浣嗗鏋滅帺瀹跺瀭鐩撮潰鏈濋樆鎸″唴縐誨姩涓斾笉鑳藉湪闄愬埗鎼滅儲鑼冨洿鍐呮壘鍒板彲杈劇偣錛岃鑹插氨浼氬崱浣忎笉鍔紝榪欑鎯呭喌灝卞彧鑳借鐜╁鑷繁璋冩暣涓涓嬫湞鍚戜簡銆?<img src ="http://m.shnenglu.com/heath/aggbug/199973.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/heath/" target="_blank">Heath</a> 2013-05-04 23:49 <a href="http://m.shnenglu.com/heath/archive/2013/05/04/199973.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>toLua++鐨勫鍑哄嚱鏁板浣曡闂甃ua Tablehttp://m.shnenglu.com/heath/archive/2013/02/12/197808.htmlHeathHeathTue, 12 Feb 2013 11:30:00 GMThttp://m.shnenglu.com/heath/archive/2013/02/12/197808.htmlhttp://m.shnenglu.com/heath/comments/197808.htmlhttp://m.shnenglu.com/heath/archive/2013/02/12/197808.html#Feedback0http://m.shnenglu.com/heath/comments/commentRss/197808.htmlhttp://m.shnenglu.com/heath/services/trackbacks/197808.html鏈変簺鍑芥暟闇瑕佸悜lua榪斿洖澶氫釜緇撴灉錛屽皢榪欎簺緇撴灉瀛樺湪table涓槸鐞嗘墍褰撶劧鐨勩傚洜涓簍oLua++宸茬粡鑷姩鐢熸垚浜嗗嚱鏁扮殑wrapper錛屾墍浠ユ病鍔炴硶鐩存帴灝嗘爤欏秚able榪斿洖緇橪ua銆傚ソ鍦╰oLua棰勭暀浜唋ua_Object榪欎釜綾誨瀷錛屽彲浠ヤ唬琛╨ua涓殑浠諱綍綾誨瀷錛屽叾瀹炲畠鍙槸int鐨則ypedef緗簡錛屼富瑕佹槸鍦╰oLua瑙f瀽紼嬪簭鏃朵綔涓烘爣璁頒駭鐢焧olua_tovalue璋冪敤銆傚湪C/C++鍑芥暟涓紝闇瑕佹鏌ヤ竴涓嬫爤欏舵槸鍚︿負table綾誨瀷錛岃繘琛宼able鍏冪礌鐨勬彃鍏ユ搷浣滐紝渚嬪瓙鍑芥暟濡備笅錛?pre class="code">void ActorMgr::GetPlayerEntityIDs( lua_Object lua_table ) { TEntityListIt tIt ; std::list <int> result; for(int i = 0; i < ACOTOR_BUCKET_LEN ; ++i) { for(tIt =mSceneEntities[i].mEntities.begin(); tIt != mSceneEntities[i].mEntities.end( ); ++tIt ) { TActorPtr tpActor = tIt->second->mpActor ; if(tpActor ->GetActorType() == LOCAL_PLAYER) { result.push_front(tpActor->GetEntityID()); } else if (tpActor-> GetActorType() == REMOTE_PLAYER ) { result.push_back(tpActor->GetEntityID()); } } } lua_State* L = LuaVM::GetInstPtr()->mLS ; assert(lua_istable (L , -1)); std::list <int>:: iterator iter = result. begin(); for(int i = 1; iter != result .end(); ++ iter , ++i ) { lua_pushinteger(L , *iter); lua_rawseti(L , -2 , i); } lua_pop(L , 1); }

闇瑕佹敞鎰忕殑鏄紝濡傛灉鏄涓弬鏁幫紝Lua鐨勫帇鏍堥『搴忔槸object pointer銆佸弬鏁頒粠宸﹀埌鍙籌紝鎵浠ユ爤欏跺厓绱犳槸鍑芥暟絳懼悕鏈鍙寵竟鐨勫弬鏁般?/p>

Heath 2013-02-12 19:30 鍙戣〃璇勮
]]>
綆鍗曟兂浜嗕竴涓嬨婃場娉¢緳銆嬬殑瀹炵幇http://m.shnenglu.com/heath/archive/2012/11/27/195752.htmlHeathHeathTue, 27 Nov 2012 15:43:00 GMThttp://m.shnenglu.com/heath/archive/2012/11/27/195752.htmlhttp://m.shnenglu.com/heath/comments/195752.htmlhttp://m.shnenglu.com/heath/archive/2012/11/27/195752.html#Feedback0http://m.shnenglu.com/heath/comments/commentRss/195752.htmlhttp://m.shnenglu.com/heath/services/trackbacks/195752.html         棰嗗鏈榪戝湪鐜╂場娉¢緳錛屾垜涔熸兂涓嶉氫負浠涔堢獊鐒跺張瀵硅繖涔堝彜鑰佺殑娓告垙鎰熷叴瓚d簡銆傛槰鏅氬湪鍦伴搧涓婏紝濂歸棶鎴戣繖縐嶆父鎴忚兘鍋氬悧錛熸垜涓嶅姞鎬濊冨洖絳旈亾錛氬綋鐒訛紝瓚呯畝鍗曘備粖澶╀粠娣卞ぇ鍦伴搧绔欏嚭鏉ワ紝榪欎釜闂紿佺劧鍐掍簡鍑烘潵錛屽埌鍏徃鐨勮礬涓婅姳浜嗗嚑鍒嗛挓鎬濊冧簡涓嬪疄鐜扮粏鑺傘備粠鏈綆鍗曠殑鐜╂硶寮濮嬶細鐩稿悓棰滆壊鐨勬場娉′笁涓互涓婂彲浠ユ秷闄ゃ?

         鏍稿績鏁版嵁緇撴瀯鎴戦噰鐢ㄩ摼琛ㄦ暟緇勶紝灝嗙浉鍚岄鑹蹭笖閭繪帴鐨勬場娉′覆鎴愪竴涓摼琛ㄣ傞噰鐢ㄨ繖縐嶆暟鎹粨鏋勶紝鏄熀浜庝笅闈㈣冭檻錛?錛夐氳繃棰滆壊鍒掑垎緙╁皬鎼滅儲鍖哄煙錛?錛夋病鏈夋帓搴忥紝娌℃湁涓棿鎻掑叆鑺傜偣鐨勯渶姹傦紱3錛夎妭鐪佸唴瀛樸傚綋鐒訛紝娓告垙鐣岄潰涓殑娉℃場榪樻槸鎶婂畠瀵瑰簲鍒頒竴涓簩緇存暟緇勪腑錛屾瘡涓厓绱犲瓨鍌ㄤ竴涓場娉″璞$殑鎸囬拡錛岃瀵硅薄涓嚦灝戝寘鍚細棰滆壊銆佸潗鏍囷紝鍒嗗箋傚涓嬪浘鎵紺猴細

Image(8)

         鍓╀笅闇瑕佽冭檻鐨勬槸鍙戝皠娉℃場棰滆壊濡備綍浜х敓錛熷鏋滀粠絀哄叧鍗″紑濮嬶紝鍓嶉潰鍙互鐢ㄩ殢鏈猴紝鍚庨潰灝辮浣跨敤緇熻淇℃伅浜嗐傚湪姣忎釜閾捐〃澶村彲浠ョ粺璁¤鍫嗘場娉″紑闂с佹暟閲忕瓑錛屽埄鐢ㄨ繖浜涗俊鎭彲浠ュ喅瀹氬彂灝勬場娉$殑棰滆壊銆?

Heath 2012-11-27 23:43 鍙戣〃璇勮
]]>
Window璋冭瘯涓殑絎﹀彿鏂囦歡涓庢簮浠g爜綆$悊http://m.shnenglu.com/heath/archive/2012/03/26/169068.htmlHeathHeathMon, 26 Mar 2012 15:10:00 GMThttp://m.shnenglu.com/heath/archive/2012/03/26/169068.htmlhttp://m.shnenglu.com/heath/comments/169068.htmlhttp://m.shnenglu.com/heath/archive/2012/03/26/169068.html#Feedback2http://m.shnenglu.com/heath/comments/commentRss/169068.htmlhttp://m.shnenglu.com/heath/services/trackbacks/169068.html    娓告垙寮濮嬭繘琛岀浜屾灝侀棴嫻嬭瘯錛岃繖嬈″弬涓庝漢鏁拌緝澶氾紝闅忎箣鑰屾潵鐨勪究鏄棤鏁扮殑宕╂簝dump銆傝櫧鐒跺湪鑷姩鏋勫緩嫻佺▼涓凡緇忓PDB鍜孍XE鎸夌増鏈彿榪涜浜嗕繚瀛橈紝浣嗙敱浜庢瀯寤烘搷浣滀漢鍛樻墜鍔ㄤ慨鏀規瀯寤哄彿錛屽嚭鐜板涓増鏈搴旂浉鍚岀増鏈彿鐨勯棶棰橈紝浠ュ強BUG鍗曞~鍐欎漢浠ュ熀綰跨増鏈彿鑰岄潪鐪熷疄鐗堟湰鍙鋒彁浜ょ殑鎯呭喌錛岀粡甯告氮璐瑰紑鍙戜漢鍛樼殑鏃墮棿鍜岀簿鍔涘幓鎵懼搴旂殑PDB錛岄檷浣庝簡宕╂簝瑙e喅鐨勫搷搴旈熷害銆傛墍浠ラ潪甯告湁蹇呰寤虹珛涓濂楄嚜鍔ㄥ寲鏂規錛屽緱鍒癲ump鏂囦歡鍚庡惎鍔╓inDbg榪涜鍒嗘瀽鏃惰兘澶熻嚜鍔ㄨ幏鍙栧搴旂殑PDB鍜屾簮浠g爜錛學inDbg灝辨彁渚涗簡榪欐牱涓濂楁柟渚垮疄鐢ㄧ殑宸ュ叿銆?/p>

1. 寤虹珛婧愪唬鐮佺儲寮?/font>

     WinDbg鎻愪緵浜嗕竴濂楃敤浜庣鐞唒db瀵瑰簲鐨勬簮浠g爜鐨勫伐鍏鳳紝浣嶄簬鍏跺畨瑁呯洰褰曠殑srcsrv涓嬶紝瀵筕SS銆丼VN銆丆VS銆丳erforce鎻愪緵浜嗘敮鎸侊紝鍒嗗埆瀵瑰簲vssindex.cmd銆乻vnindex.cmd銆乧vsindex.cmd銆乸4index.cmd榪欏洓涓猵erl鑴氭湰銆傚叾瀹烇紝ssindex.cmd鎵嶆槸鍏蜂綋瀹炵幇錛屽畠鏍規嵁浼犲叆鐨勭増鏈帶鍒剁郴緇熸爣璇嗭紝璋冪敤瀵瑰簲鐨刾erl module銆?

     svnindex.cmd閫氳繃/source鍜?symbols鍙傛暟鏉ユ寚瀹氭簮浠g爜鐩綍鍜孭DB鐩綍錛?debug鍙緭鍑哄鐞嗙殑璇︾粏淇℃伅錛?user鍜?pass鎻愪緵svn璐︽埛鍜屽瘑鐮併侾DB鏂囦歡涓湁涓鑺備笓闂ㄧ敤浜庡瓨鏀炬簮浠g爜鏂囦歡鍒楄〃鍙婂鐞嗗懡浠わ紝鍙氳繃pdbstr -r -p:PdbFileName -s:srcsrv鏌ョ湅銆?

 

     svnindex.cmd /debug /source="E:\CodeBase_SVN\Client\trunk\tools\CutSceneEditor" /symbols="E:\CodeBase_SVN\Client\trunk\bin\Release\CutSceneEditor" /user="user" /pass="pwd"

 

     鍦ㄦ墽琛屼笂闈㈠懡浠ゅ墠錛岀‘淇漃erl鍜孲ubversion宸茬粡琚畨瑁呬笖璁劇疆浜哖ATH鐜鍙橀噺銆傝鍛戒護灝嗘彁鍙杝ource code鐨勬湇鍔″櫒璺緞鍜屽綋鍓峈evision錛岀劧鍚庡啓鍏DB銆備笅闈㈡槸閫氳繃pdbstr鑾峰彇鐨勪俊鎭細

     Image(9)

     涓婇潰杈撳嚭鏄粡榪囨牸寮忓寲鐨勶紝鍘熷淇℃伅鍙互閫氳繃srctool -n鏌ョ湅錛?

     Image(10)

     鍙互鐪嬪嚭錛屽師濮嬩唬鐮佽礬寰勫悗闈㈣窡浜嗕竴鏉vn cat鎸囦護錛岀敱浜庢病鏈夋寚瀹歴ourcepath錛屾墍浠?targ%緙虹渷涓哄綋鍓嶈礬寰勶紙"C:\Program Files\Debugging Tools for Windows (x64)\srcsrv"錛夈?nbsp;

2. 鍒涘緩絎﹀彿鏈嶅姟鍣?/font>

    鎵璋撶鍙鋒湇鍔″櫒錛屾渶綆鍗曠殑褰㈠紡灝辨槸鏂囦歡鍏變韓鏈嶅姟鍣ㄣ傛垜浠嬌鐢?a target="_blank">symstore鍛戒護錛屽皢1涓駭鐢熺殑pdb娣誨姞鍒頒竴涓枃浠跺叡浜湇鍔″櫒涓婏紝濡傦細

 

     symstore.exe add /f "E:\CodeBase_SVN\Client\trunk\bin\Release\CutSceneEditor\*.pdb" /s "\\server.com\pub\Symbols" /t "CutSceneEditor" /v "Build 4171" /c "fix memory leak"

 

     璇ュ懡浠や細鏍規嵁PDB鐨剆ignature鍜宎ge浜х敓涓涓狦UID錛屽茍灝哖DB鏀劇疆浜庝互鏀笹UID涓哄悕瀛楃殑鐩綍涓嬶細

     Image8

    褰揹ebug鏃訛紝灝哢NC璺緞娣誨姞鍒癬NT_SYMBOL_PATH涓紙濡傦細_NT_SYMBOL_PATH=CACHE*F:\Symbols;SRV*http://msdl.microsoft.com/download/symbols;SRV*\\server.com\pub\Symbols錛夛紝璋冭瘯鍣ㄤ細鑷姩鍒版寚瀹氱殑絎﹀彿鏈嶅姟鍣ㄤ笂鍘繪悳绱㈠搴旂殑pdb鏂囦歡銆?

     symstore澶уぇ綆鍖栦簡絎﹀彿鐨勭増鏈鐞嗛棶棰橈紝鍏充簬瀹冪殑璇︾粏浠嬬粛鍙弬鑰?a target="_blank">symstore浠嬬粛銆?

     鍊煎緱娉ㄦ剰鐨勬槸錛宻ymstore娌℃湁閿佹満鍒訛紝騫朵笉鏀寔澶氫漢鍚屾椂鎿嶄綔銆傚疄闄呮儏鍐典腑錛屼篃鍙湁鑷姩鏋勫緩鏃舵墠浼氬仛姝ゆ搷浣溿?

3. 浣跨敤WinDbg鍒嗘瀽Dump鏂囦歡

      鎴戜滑鍦ㄤ唬鐮佷腑鍔犲叆鍙戠敓寮傚父鍐橫iniDump鐨勫姛鑳斤紝鍦ㄧ▼搴忓穿婧冩椂浜х敓dump鏂囦歡銆傚湪浣跨敤WinDbg鍒嗘瀽dump鏂囦歡鏃訛紝闇瑕佽緗甋ymbol File Path鍜孲ource File Path錛屼篃鍙互鐩存帴璁劇疆鐜鍙橀噺_NT_SYMBOL_PATH鍜宊NT_SOURCE_PATH銆傚湪璁劇疆_NT_SOURCE_PATH鏃朵嬌鐢?SRV*CachePath"灝嗚〃紺哄惎鐢ㄤ唬鐮佹彁鍙栧姛鑳斤紝鎵цsvn cat鍐欏叆鍒癈achePath鎸囧畾鐨勭洰褰曪紝鍚﹀垯灝嗕嬌鐢ㄥ師濮嬭礬寰勩傛鍚庯紝閫氳繃鐐瑰嚮Call Stack涓殑鍑芥暟璋冪敤渚夸細瑙﹀彂浠巗vn璇誨彇瀵瑰簲浠g爜鐨勬搷浣滐紙閫氬父浼氭湁涓涓畨鍏ㄨ鍛婄獥鍙e脊鍑猴級銆?

     瀵逛簬浣跨敤WinDbg榪涜璋冭瘯鍦ㄦ灝變笉澶氳浜嗭紝鎺ㄨ崘涓鏈笉閿欑殑涔︺夾dvanced Windows Debugging銆嬨?

 

鍙傝冭祫鏂?/strong>

[1] Source Indexing and Symbol Servers: A Guide to Easier Debugging

[2] Source Server Helps You Kill Bugs Dead In Visual Studio 2005



Heath 2012-03-26 23:10 鍙戣〃璇勮
]]>
Hierarchical Path-Findinghttp://m.shnenglu.com/heath/archive/2011/11/12/159984.htmlHeathHeathSat, 12 Nov 2011 04:50:00 GMThttp://m.shnenglu.com/heath/archive/2011/11/12/159984.htmlhttp://m.shnenglu.com/heath/comments/159984.htmlhttp://m.shnenglu.com/heath/archive/2011/11/12/159984.html#Feedback0http://m.shnenglu.com/heath/comments/commentRss/159984.htmlhttp://m.shnenglu.com/heath/services/trackbacks/159984.html     銆?a >Near Optimal Hierarchical Path-Finding銆嬩腑鎻愬嚭浜嗕竴縐嶅眰嬈*綆楁硶錛屾濂借兘澶熺敤浜庤В鍐抽」鐩ぇ鍦板浘瀵昏礬鐨勯棶棰樸傚ぇ鑷存濊礬鏄細1錛夐澶勭悊銆傚皢鍦板浘鍒掑垎涓簄xn澶у皬鐨勫尯鍧楋紝鎵懼嚭姣忎釜鍖哄潡涓庡懆鍥村洓涓尯鍧楀湪杈圭晫涓婄殑浜掗氱偣錛屽湪鍖哄潡涓嬌鐢ㄥ眬閮ˋ*瀵規壘鍑虹殑鐐瑰仛榪為氭ф祴璇曞茍灝嗗叾淇濆瓨涓嬫潵錛?錛夊璺椂錛屼嬌鐢ㄩ澶勭悊寰楀埌鐨勬暟鎹紙杈圭晫涓婄殑鍙氱偣涓庡尯鍧楀唴閮ㄧ殑浜掗氱偣錛夛紝鍏堝湪鍖哄潡灞傜駭涓婂仛涓嬈*錛屾牴鎹粨鏋滃啀鍦ㄦ瘡涓尯鍧椾腑浣跨敤灞閮ˋ*鎵懼埌鍖哄潡涓庡尯鍧椾箣闂寸殑璺緞錛屾渶緇堝緱鍒板畬鏁磋礬寰勩?

涓銆丄* Path-Finding

     A*綆楁硶灝變笉澶氳浜嗭紝鍙弬鑰冿細

     A*綆楁硶鐨勪紭鍖栧彲浠庢悳绱㈣妭鐐瑰偍瀛樺拰OpenList鎺掑簭涓ゆ柟闈㈠叆鎵嬨?

浜屻侀澶勭悊

     姣忎釜鐩擱偦鍖哄潡錛圕1鍜孋2錛夐兘鏈変竴鏉$敱鍏叡杈癸紝璇ヨ竟涓や晶灝忔牸緇勬垚L1鍜孡2錛屽垯榪為氱偣闆咵婊¤凍涓嬪垪鏉′歡錛?

  • E 鈯?L1 鈭?L2
  • 鈭t 鈭?L1 鈭?L2 : t 鈭?E 鈬?symm(t) 鈭?E 錛屽叾涓璼ymm(t)涓哄縐板叧緋?
  • E涓嶅惈涓嶅彲琛岃蛋鏍煎瓙
     瀵瑰湪E涓笖鍚岃竟鐨勮繛緇牸瀛愬彇鍏朵腑鐐癸紝濡備笅鍥炬墍紺猴細

Image(6)

    瀵逛笂闈㈠緱鍒扮殑浣嶄簬鍚屼竴鍖哄潡鐨勭偣闆嗗悎浣跨敤local A*鍋氳繛閫氭ф祴璇曪紝涓嬪浘鐢ㄧ洿綰胯繛鎺ユ潵琛ㄧず涓ょ偣浜掗氾細

Image(7)

涓夈佸璺?/font>

     浣跨敤鍖哄潡榪為氫俊鎭紝榪涜鍖哄潡綰*錛屽緱鍒板尯鍧椾箣闂寸殑榪炴帴鐐癸紝濡傛灉鍦ㄩ澶勭悊鏃朵繚瀛樹簡鍖哄潡鍐呬簰閫氱偣鐨勮礬寰勶紝灝變笉蹇呭啀榪涜鍖哄潡鍐呯殑local A*浜嗐?

     瀹為獙緇撴灉琛ㄦ槑錛屽湪鏈噰鐢ㄥ尯鍧楀唴棰勫瓨璺緞鐨勬儏鍐典笅錛屼腑闀胯窛紱誨璺嬌鐢ㄥ眰嬈*鍚庣殑騫沖潎鏁堢巼鏄櫘閫欰*鐨?鍊嶄互涓婏紝璺濈瓚婇暱鏁堢巼瀵規瘮瓚婃槑鏄俱?

image

     A* 93ms

image

HPA* 15ms

     浠庝笂鍥句腑鍙互鐪嬪嚭錛孒PA*寰楀埌鐨勮礬寰勫茍涓嶆槸鏈浼樼殑錛屽畠鏄湪鏈浼樺拰鏁堢巼涓婄殑鎶樹腑錛岄傚悎浣滀負闀胯窛紱誨璺殑涓縐嶄紭鍖栨柟妗堛?

鍥涖佷紭鍖栫偣

  • 鍙墿灞曚負澶氬眰鑰屼笉浠呴檺浜庝竴灞?
  • 棰勫瓨鍖哄潡鍐呰繛閫氱偣璺緞
  • 鍖哄潡杈圭晫鍙氶潰縐緝澶ф椂錛屼駭鐢熶笉鑷劧璺緞錛屽涓嬪浘鎵紺猴細

image

          涓涓敼榪涚殑鏂規硶鏄榪囬暱鐨勮竟鐣屽啀鍋氬垝鍒嗭細

Image(5)



Heath 2011-11-12 12:50 鍙戣〃璇勮
]]>
淇D3DXQuaternionSquad涓嶈兘姝g‘澶勭悊鍙嶅悜Quaternions鐨凚UGhttp://m.shnenglu.com/heath/archive/2011/08/21/154037.htmlHeathHeathSun, 21 Aug 2011 14:16:00 GMThttp://m.shnenglu.com/heath/archive/2011/08/21/154037.htmlhttp://m.shnenglu.com/heath/comments/154037.htmlhttp://m.shnenglu.com/heath/archive/2011/08/21/154037.html#Feedback0http://m.shnenglu.com/heath/comments/commentRss/154037.htmlhttp://m.shnenglu.com/heath/services/trackbacks/154037.html寰蔣DX搴撻噷鎻愪緵浜嗗Quaternion榪涜鐞冮潰鍥涜竟褰㈠唴鎻掔殑鎺ュ彛錛岃兘澶熷湪澶氫釜Quaternion涔嬮棿騫蟲粦鎻掑箋傝繖閲屾秹鍙婂埌涓や釜鎺ュ彛錛?/p>
void D3DXQuaternionSquadSetup(
  __out  D3DXQUATERNION *pAOut,
  __out  D3DXQUATERNION *pBOut,
  __out  D3DXQUATERNION *pCOut,
  __in   const D3DXQUATERNION *pQ0,
  __in   const D3DXQUATERNION *pQ1,
  __in   const D3DXQUATERNION *pQ2,
  __in   const D3DXQUATERNION *pQ3
);
D3DXQUATERNION* D3DXQuaternionSquad(
  __inout  D3DXQUATERNION *pOut,
  __in     const D3DXQUATERNION *pQ1,
  __in     const D3DXQUATERNION *pA,
  __in     const D3DXQUATERNION *pB,
  __in     const D3DXQUATERNION *pC,
  __in     FLOAT t
);
鍏朵腑錛孌3DXQuaternionSquadSetup鐢ㄤ簬榪斿洖鍐呮彃鐨勬帶鍒剁偣銆傚畠浠叿浣撶殑瀹炵幇鍏紡鍜岀敤娉曪紝鏈夊叴瓚g殑鍚屽鍙互鍙傝僊SDN銆傚湪姝ら渶瑕佽鏄庣殑鏄紝
D3DXQuaternionSquad浣跨敤浜哠lerp浣滀負鍐呴儴瀹炵幇錛屼細瀵艱嚧鍦ㄤ袱涓す瑙掍負180擄宸﹀彸鐨凲uaternion涔嬮棿鎻掑間細鍑虹幇鏂鐨勯棶棰樸備笅闈唬鐮侀氳繃
瀹炵幇涓涓冭檻浜嗕笂榪版儏鍐電殑Slerp鐗堟湰錛屽湪q1鍜宷2澶硅鍦?擄鎴栬?80擄鏃訛紝浣跨敤綰挎у唴鎻掕岄潪鐞冮潰錛屾潵瑙e喅璇ラ棶棰樸?/pre>
  1. Quaternion QuatSlerpNoInvert(const Quaternion& q1 , const Quaternion& q2 , float t)
  2. {
  3. 聽聽聽聽float cosAngle = DotProduct(q1, q2);
  4.  
  5. 聽聽聽聽float c1, c2;
  6. 聽聽聽聽// Linear interpolation for close orientations
  7. 聽聽聽聽if ((1.0f - fabs(cosAngle)) < 1e-5f)
  8. 聽聽聽聽{
  9. 聽聽聽聽聽聽聽聽c1 = 1.0f - t;
  10. 聽聽聽聽聽聽聽聽c2 = t;
  11. 聽聽聽聽}
  12. 聽聽聽聽else
  13. 聽聽聽聽{
  14. 聽聽聽聽聽聽聽聽// Spherical interpolation
  15. 聽聽聽聽聽聽聽聽float angle聽聽聽聽= acos(fabs(cosAngle));
  16. 聽聽聽聽聽聽聽聽float sinAngle = sin(angle);
  17. 聽聽聽聽聽聽聽聽c1 = sin(angle * (1.0f - t)) / sinAngle;
  18. 聽聽聽聽聽聽聽聽c2 = sin(angle * t) / sinAngle;
  19. 聽聽聽聽}
  20.  
  21. 聽聽聽聽Quaternion q = q1 * c1 + q2 * c2;
  22. 聽聽聽聽q.Normalize();
  23.  
  24. 聽聽聽聽return q;
  25. }
  26.  
  27. Quaternion QuatSquad(const Quaternion& p1 , const Quaternion& p2 , const Quaternion& p3 , const Quaternion& p4 , float t)
  28. {
  29. 聽聽聽聽static Quaternion a , b , c;
  30.  
  31. 聽聽聽聽D3DXQuaternionSquadSetup((D3DXQUATERNION*)&a , (D3DXQUATERNION*)&b , (D3DXQUATERNION*)&c ,
  32. 聽聽聽聽聽聽聽聽(D3DXQUATERNION*)&p1 , (D3DXQUATERNION*)&p2 , (D3DXQUATERNION*)&p3 , (D3DXQUATERNION*)&p4);
  33.  
  34. 聽聽聽聽return QuatSlerpNoInvert(QuatSlerpNoInvert(p2 , c , t) , QuatSlerpNoInvert(a , b , t) , 2 * t * (1-t));
  35. }

 

鍙傝冿細

[1] http://msdn.microsoft.com/en-us/library/bb205419(v=vs.85).aspx

[2] http://msdn.microsoft.com/en-us/library/bb205420(v=vs.85).aspx



Heath 2011-08-21 22:16 鍙戣〃璇勮
]]>涓涓猀TE鍘熷瀷妗嗘灦http://m.shnenglu.com/heath/archive/2011/08/13/153251.htmlHeathHeathSat, 13 Aug 2011 02:25:00 GMThttp://m.shnenglu.com/heath/archive/2011/08/13/153251.htmlhttp://m.shnenglu.com/heath/comments/153251.htmlhttp://m.shnenglu.com/heath/archive/2011/08/13/153251.html#Feedback4http://m.shnenglu.com/heath/comments/commentRss/153251.htmlhttp://m.shnenglu.com/heath/services/trackbacks/153251.html鏈枃涓昏鏍規嵁鑷繁鍦ㄩ」鐩腑寮鍙戠殑QTE緋葷粺錛屼粙緇嶄竴涓浉瀵規瘮杈冪畝鍗曠殑鍘熷瀷妗嗘灦銆?nbsp; 闃呰鍏ㄦ枃

Heath 2011-08-13 10:25 鍙戣〃璇勮
]]>
綆楁硶浼樺寲&mdash;&mdash;閫掑綊鍒板驚鐜?/title><link>http://m.shnenglu.com/heath/archive/2011/03/05/141160.html</link><dc:creator>Heath</dc:creator><author>Heath</author><pubDate>Sat, 05 Mar 2011 05:42:00 GMT</pubDate><guid>http://m.shnenglu.com/heath/archive/2011/03/05/141160.html</guid><wfw:comment>http://m.shnenglu.com/heath/comments/141160.html</wfw:comment><comments>http://m.shnenglu.com/heath/archive/2011/03/05/141160.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://m.shnenglu.com/heath/comments/commentRss/141160.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/heath/services/trackbacks/141160.html</trackback:ping><description><![CDATA[<p>     閫掑綊閫氬父寰堢洿鐧藉湴鎻忚堪浜嗕竴涓眰瑙h繃紼嬶紝鍥犳涔熸槸鏈瀹規槗琚兂鍒板拰瀹炵幇鐨勭畻娉曘傚驚鐜叾瀹炲拰閫掑綊鍏鋒湁鐩稿悓鐨勭壒鎬э紙鍗籌細鍋氶噸澶嶄換鍔★級錛屼絾鏈夋椂錛屼嬌鐢ㄥ驚鐜殑綆楁硶騫朵笉浼氶偅涔堟竻鏅板湴鎻忚堪瑙e喅闂姝ラ銆傚崟浠庣畻娉曡璁′笂鐪嬶紝閫掑綊鍜屽驚鐜茍鏃犱紭鍔d箣鍒傜劧鑰岋紝鍦ㄥ疄闄呭紑鍙戜腑錛屽洜涓哄嚱鏁拌皟鐢ㄧ殑寮閿錛岄掑綊甯稿父浼氬甫鏉ユц兘闂錛岀壒鍒槸鍦ㄦ眰瑙h妯′笉紜畾鐨勬儏鍐典笅銆傝屽驚鐜洜涓烘病鏈夊嚱鏁拌皟鐢ㄥ紑閿錛屾墍浠ユ晥鐜囦細姣旈掑綊楂樸傞櫎灝戞暟緙栫▼璇█瀵歸掑綊榪涜浜嗕紭鍖栧錛屽ぇ閮ㄥ垎璇█鍦ㄥ疄鐜伴掑綊綆楁硶鏃惰繕鏄崄鍒嗙鎷欙紝鐢辨甯︽潵浜嗗浣曞皢閫掑綊綆楁硶杞崲涓哄驚鐜畻娉曠殑闂銆傜畻娉曡漿鎹㈠簲褰撳緩绔嬪湪瀵規眰瑙h繃紼嬪厖鍒嗙悊瑙g殑鍩虹涓婏紝鏈夋椂鐢氳嚦闇瑕佸彟杈熻箠寰勩? <p>     鍓嶆鏃墮棿閬囧埌榪囪繖鏍風殑闂錛氬凡鐭ヤ竴2D鍦板浘鏍煎瓙鐨勯暱瀹斤紙w銆乭錛夊強姣忎釜鏍煎瓙鐨勮竟闀匡紙a錛屾牸瀛愪負姝f柟褰級錛岀粰瀹氱墿浣撶殑2D鍧愭爣錛坧os[x , y]錛夊強鍗婂緞錛坮錛夛紝姹傝В鐗╀綋鍦?D鍦板浘鏍煎瓙涓墍鍗犵殑鏍煎瓙錛屼粎鑰冭檻n*n鐨勬儏鍐點傚ぇ姒傜殑姹傝В榪囩▼濡備笅錛? <p>1錛夋牴鎹崐寰勶紝紜畾n*n涓殑n銆傚亣瀹氳綆楀叕寮忎負錛歯 = Round(2*r / a) <p>2錛夋牴鎹?D鍧愭爣寰楀埌鐗╀綋鐨勨滀腑蹇冩牸瀛愨濄傛牴鎹畁鐨勫鍋訛紝璁$畻鍏紡涓嶅悓錛屽涓嬪浘鎵紺恒? <p align="center"><a href="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/e7377895b269_9CB8/image_10.png"><img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/e7377895b269_9CB8/image_thumb_4.png" width="239" height="244"></a>                  <a href="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/e7377895b269_9CB8/image_12.png"><img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/e7377895b269_9CB8/image_thumb_5.png" width="240" height="244"></a></p> <p align="center">n涓哄伓鏁癧1]                                                                    n涓哄鏁癧2]</p> <p>[1]錛歡rid(x , y) = Round(pos / a) <p>[2]錛歡rid(x , y) = Floor(pos / a) <p>鍏朵腑錛屾牸瀛愬潗鏍噚 >= 0 , y >= 0銆? <p>3錛変互鈥滀腑蹇冩牸瀛愨濅負鍩虹錛屾眰鍑虹墿浣撳崰鎹殑鍏朵粬鏍煎瓙銆傝繖鏍風殑鎻忚堪錛岃浜哄鏄撴兂鍒伴掑綊錛屽氨鍍忕敤娣卞害浼樺厛鏂規硶閬嶅巻鏍戦偅鏍鳳紝浼唬鐮佺畻娉曞涓嬶細</p> <div style="padding-bottom: 0px; padding-left: 0px; width: 1032px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:866d37ab-87f1-4aea-9d49-b7235fcfb0e9" class="wlWriterEditableSmartContent"><pre style="background-color:#FFFFFF;white-space:-moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; white-space: pre-wrap; word-wrap: break-word;overflow: auto;"><span style="color: #0000FF;">if</span><span style="color: #000000;"> n is even { get the index of </span><span style="color: #800000;">'</span><span style="color: #800000;">center grid</span><span style="color: #800000;">'</span><span style="color: #000000;"> (row , col) ExtendHeldGrid(row , col , n) ExtendHeldGrid(row </span><span style="color: #000000;">-</span><span style="color: #000000;"> </span><span style="color: #800080;">1</span><span style="color: #000000;"> , col , n) ExtendHeldGrid(row </span><span style="color: #000000;">-</span><span style="color: #000000;"> </span><span style="color: #800080;">1</span><span style="color: #000000;"> , col </span><span style="color: #000000;">-</span><span style="color: #000000;"> </span><span style="color: #800080;">1</span><span style="color: #000000;"> , n) ExtendHeldGrid(row , col </span><span style="color: #000000;">-</span><span style="color: #000000;"> </span><span style="color: #800080;">1</span><span style="color: #000000;"> , n) } </span><span style="color: #0000FF;">else</span><span style="color: #000000;"> { get the index of </span><span style="color: #800000;">'</span><span style="color: #800000;">center grid</span><span style="color: #800000;">'</span><span style="color: #000000;"> (row , col) ExtendHeldGrid(row , col , n) } </span><span style="color: #0000FF;">function</span><span style="color: #000000;"> ExtendHeldGrid(row , col , level) { </span><span style="color: #0000FF;">if</span><span style="color: #000000;">(level </span><span style="color: #000000;"><=</span><span style="color: #000000;"> </span><span style="color: #800080;">0</span><span style="color: #000000;">) </span><span style="color: #0000FF;">return</span><span style="color: #000000;"> </span><span style="color: #0000FF;">if</span><span style="color: #000000;">((row </span><span style="color: #000000;">>=</span><span style="color: #000000;"> </span><span style="color: #800080;">0</span><span style="color: #000000;"> </span><span style="color: #0000FF;">and</span><span style="color: #000000;"> row </span><span style="color: #000000;"><</span><span style="color: #000000;"> MaxGridWidth) </span><span style="color: #0000FF;">and</span><span style="color: #000000;"> (col </span><span style="color: #000000;">>=</span><span style="color: #000000;"> </span><span style="color: #800080;">0</span><span style="color: #000000;"> </span><span style="color: #0000FF;">and</span><span style="color: #000000;"> col </span><span style="color: #000000;"><</span><span style="color: #000000;"> MaxGridHeight)) { mark the grid(row , col) ExtendHeldGrid(row , col , level </span><span style="color: #000000;">-</span><span style="color: #000000;"> </span><span style="color: #800080;">2</span><span style="color: #000000;">) </span><span style="color: #0000FF;">if</span><span style="color: #000000;">(level </span><span style="color: #000000;">-</span><span style="color: #000000;"> </span><span style="color: #800080;">2</span><span style="color: #000000;"> </span><span style="color: #000000;">></span><span style="color: #000000;"> </span><span style="color: #800080;">0</span><span style="color: #000000;">) { ExtendHeldGrid(row </span><span style="color: #000000;">+</span><span style="color: #000000;"> </span><span style="color: #800080;">1</span><span style="color: #000000;"> , col , level </span><span style="color: #000000;">-</span><span style="color: #000000;"> </span><span style="color: #800080;">2</span><span style="color: #000000;">) ExtendHeldGrid(row </span><span style="color: #000000;">-</span><span style="color: #000000;"> </span><span style="color: #800080;">1</span><span style="color: #000000;"> , col , level </span><span style="color: #000000;">-</span><span style="color: #000000;"> </span><span style="color: #800080;">2</span><span style="color: #000000;">) ExtendHeldGrid(row , col </span><span style="color: #000000;">+</span><span style="color: #000000;"> </span><span style="color: #800080;">1</span><span style="color: #000000;"> , level </span><span style="color: #000000;">-</span><span style="color: #000000;"> </span><span style="color: #800080;">2</span><span style="color: #000000;">) ExtendHeldGrid(row , col </span><span style="color: #000000;">-</span><span style="color: #000000;"> </span><span style="color: #800080;">1</span><span style="color: #000000;"> , level </span><span style="color: #000000;">-</span><span style="color: #000000;"> </span><span style="color: #800080;">2</span><span style="color: #000000;">) ExtendHeldGrid(row </span><span style="color: #000000;">+</span><span style="color: #000000;"> </span><span style="color: #800080;">1</span><span style="color: #000000;"> , col </span><span style="color: #000000;">+</span><span style="color: #000000;"> </span><span style="color: #800080;">1</span><span style="color: #000000;"> , level </span><span style="color: #000000;">-</span><span style="color: #000000;"> </span><span style="color: #800080;">2</span><span style="color: #000000;">) ExtendHeldGrid(row </span><span style="color: #000000;">-</span><span style="color: #000000;"> </span><span style="color: #800080;">1</span><span style="color: #000000;"> , col </span><span style="color: #000000;">+</span><span style="color: #000000;"> </span><span style="color: #800080;">1</span><span style="color: #000000;"> , level </span><span style="color: #000000;">-</span><span style="color: #000000;"> </span><span style="color: #800080;">2</span><span style="color: #000000;">) ExtendHeldGrid(row </span><span style="color: #000000;">+</span><span style="color: #000000;"> </span><span style="color: #800080;">1</span><span style="color: #000000;"> , col </span><span style="color: #000000;">-</span><span style="color: #000000;"> </span><span style="color: #800080;">1</span><span style="color: #000000;"> , level </span><span style="color: #000000;">-</span><span style="color: #000000;"> </span><span style="color: #800080;">2</span><span style="color: #000000;">) ExtendHeldGrid(row </span><span style="color: #000000;">-</span><span style="color: #000000;"> </span><span style="color: #800080;">1</span><span style="color: #000000;"> , col </span><span style="color: #000000;">-</span><span style="color: #000000;"> </span><span style="color: #800080;">1</span><span style="color: #000000;"> , level </span><span style="color: #000000;">-</span><span style="color: #000000;"> </span><span style="color: #800080;">2</span><span style="color: #000000;">) } } } </span></pre><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin. http://dunnhq.com --></div> <p>铏界劧錛岃綆楁硶寰楀埌浜嗘紜殑姹傝В緇撴灉錛屼絾鏄敱浜庢瘡涓牸瀛愰兘浼氭爣璁板懆鍥寸殑8涓牸瀛愶紝鎵浠ュ瓨鍦ㄥぇ閲忕殑閲嶅錛屽啀鑰呭鏋滀笂闈㈢殑榪囩▼姣忓撫閮借繘琛岀殑璇濓紝鍑芥暟璋冪敤寮閿涔熸槸鐩稿綋鍙銆?/p> <p>寰幆鑷劧鏄笉鍙伩鍏嶇殑錛屾秷闄ら噸澶嶄究鎴愪簡浼樺寲鐨勭洰鏍囥傚垎鏋愭牸瀛愬浘鍜宯涓?鍜?鐨勬儏鍐碉紝璇曞浘鎵懼嚭鐢ㄥ驚鐜唬鏇塊掑綊鐨勬柟娉曪紝鎴戝彂鐜頒簡涓嬮潰涓涓湁瓚g殑瑙勫緥錛?/p> <p align="center"><a href="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/e7377895b269_9CB8/image_16.png"><img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/e7377895b269_9CB8/image_thumb_7.png" width="239" height="244"></a>                <a href="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/e7377895b269_9CB8/image_18.png"><img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/e7377895b269_9CB8/image_thumb_8.png" width="240" height="244"></a></p> <p>浠庘滀腑蹇冩牸瀛愨濆嚭鍙戯紝欏烘椂閽堬紙鎴栭嗘椂閽堬級浠ヤ笂鍥炬柟寮忓彲浠ヨ蛋閬嶆墍姹傝В鐨勬瘡涓牸瀛愯屼笉閲嶅銆傚湪瀹炵幇涓婏紝姣忎釜杞涔熸槸鏈夎寰嬬殑錛屽彲浠ラ氳繃涓涓?*2鐨勮漿瑙掔煩闃墊潵鎺у埗錛?/p> <p align="center">[1 , 0][0 , -1]</p> <p align="center">[0 , 1][-1 , 0]</p> <p align="center">欏烘椂閽堟柟寮忕殑杞闃?/p> <p align="left"> </p> <p>鐭╅樀涓殑姣忎釜鍏冪礌浠h〃浠庡綋鍓嶆牸瀛愯蛋鍒頒笅涓牸瀛愬湪row鍜宑ol涓婄殑鍙樺寲銆傚姞涔嬶紝鍦ㄨ漿瑙掍箣闂寸殑璺暱錛堜互鏍煎瓙涓暟璁★級鏈夋瘡杞袱嬈¢掑鍗曚綅1鐨勮寰嬶紝綆楁硶灝變笉闅懼緱鍒頒簡錛屼笅闈㈠悓鏍蜂互浼唬鐮佺ず錛?/p> <div style="padding-bottom: 0px; padding-left: 0px; width: 1032px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:c1053f9b-292c-4f91-b901-a530b31c17c3" class="wlWriterEditableSmartContent"><pre style="background-color:#FFFFFF;white-space:-moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; white-space: pre-wrap; word-wrap: break-word;overflow: auto;"><span style="color: #000000;">conerMat </span><span style="color: #000000;">=</span><span style="color: #000000;"> { {</span><span style="color: #800080;">0</span><span style="color: #000000;"> , </span><span style="color: #000000;">-</span><span style="color: #800080;">1</span><span style="color: #000000;">} , {</span><span style="color: #000000;">-</span><span style="color: #800080;">1</span><span style="color: #000000;"> , </span><span style="color: #800080;">0</span><span style="color: #000000;">} , {</span><span style="color: #800080;">0</span><span style="color: #000000;"> , </span><span style="color: #800080;">1</span><span style="color: #000000;">} , {</span><span style="color: #800080;">1</span><span style="color: #000000;"> , </span><span style="color: #800080;">0</span><span style="color: #000000;">} } dir </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800080;">0</span><span style="color: #000000;"> </span><span style="color: #000000;">///</span><span style="color: #000000;"> 杞鎺у埗錛屽洓涓漿瑙掗『鏃墮拡0~</span><span style="color: #800080;">3</span><span style="color: #000000;"> span </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800080;">1</span><span style="color: #000000;"> </span><span style="color: #000000;">///</span><span style="color: #000000;"> 杞闂寸殑璺ㄥ害 count </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800080;">1</span><span style="color: #000000;"> </span><span style="color: #000000;">///</span><span style="color: #000000;"> 姣忎袱嬈″鍔犱竴涓法搴? rin </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800080;">1</span><span style="color: #000000;"> </span><span style="color: #000000;">///</span><span style="color: #000000;"> 涓嬩竴涓漿瑙掔殑寰幆绱㈠紩 </span><span style="color: #0000FF;">if</span><span style="color: #000000;"> n is even get the index of </span><span style="color: #800000;">'</span><span style="color: #800000;">center grid</span><span style="color: #800000;">'</span><span style="color: #000000;"> (row , col) </span><span style="color: #0000FF;">else</span><span style="color: #000000;"> get the index of </span><span style="color: #800000;">'</span><span style="color: #800000;">center grid</span><span style="color: #800000;">'</span><span style="color: #000000;"> (row , col) </span><span style="color: #0000FF;">for</span><span style="color: #000000;">(i </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800080;">0</span><span style="color: #000000;">; i </span><span style="color: #000000;"><</span><span style="color: #000000;"> n </span><span style="color: #000000;">*</span><span style="color: #000000;"> n; </span><span style="color: #000000;">++</span><span style="color: #000000;">i) { </span><span style="color: #0000FF;">if</span><span style="color: #000000;">((row </span><span style="color: #000000;">>=</span><span style="color: #000000;"> </span><span style="color: #800080;">0</span><span style="color: #000000;"> </span><span style="color: #0000FF;">and</span><span style="color: #000000;"> row </span><span style="color: #000000;"><</span><span style="color: #000000;"> MaxGridWidth) </span><span style="color: #0000FF;">and</span><span style="color: #000000;"> (col </span><span style="color: #000000;">>=</span><span style="color: #000000;"> </span><span style="color: #800080;">0</span><span style="color: #000000;"> </span><span style="color: #0000FF;">and</span><span style="color: #000000;"> col </span><span style="color: #000000;"><</span><span style="color: #000000;"> MaxGridHeight)) mark the grid(row , col) </span><span style="color: #0000FF;">if</span><span style="color: #000000;">(i </span><span style="color: #000000;">==</span><span style="color: #000000;"> rin) { dir </span><span style="color: #000000;">=</span><span style="color: #000000;"> (dir </span><span style="color: #000000;">+</span><span style="color: #000000;"> </span><span style="color: #800080;">1</span><span style="color: #000000;">) </span><span style="color: #000000;">%</span><span style="color: #000000;"> </span><span style="color: #800080;">4</span><span style="color: #000000;"> </span><span style="color: #0000FF;">if</span><span style="color: #000000;">(count </span><span style="color: #000000;">==</span><span style="color: #000000;"> </span><span style="color: #800080;">2</span><span style="color: #000000;">) { </span><span style="color: #000000;">++</span><span style="color: #000000;">span count </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800080;">1</span><span style="color: #000000;"> } </span><span style="color: #0000FF;">else</span><span style="color: #000000;"> </span><span style="color: #000000;">++</span><span style="color: #000000;">count rin </span><span style="color: #000000;">=</span><span style="color: #000000;"> i </span><span style="color: #000000;">+</span><span style="color: #000000;"> span } row </span><span style="color: #000000;">=</span><span style="color: #000000;"> row </span><span style="color: #000000;">+</span><span style="color: #000000;"> conerMat[dir][</span><span style="color: #800080;">0</span><span style="color: #000000;">] col </span><span style="color: #000000;">=</span><span style="color: #000000;"> col </span><span style="color: #000000;">+</span><span style="color: #000000;"> conerMat[dir][</span><span style="color: #800080;">1</span><span style="color: #000000;">] } </span></pre><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin. http://dunnhq.com --></div> <p>鐢∕FC紼嬪簭楠岃瘉浜嗕竴涓嬬畻娉曠殑姝g‘鎬э紝鏍囧彿灞曠ず浜嗗驚鐜殑璺嚎錛堟敞鎰廏DI鐨勫潗鏍囩郴涓璝鐨勬鏂瑰悜鏈濅笅錛夛細</p> <p><a href="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/e7377895b269_9CB8/image_20.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" src="http://m.shnenglu.com/images/cppblog_com/heath/Windows-Live-Writer/e7377895b269_9CB8/image_thumb_9.png" width="863" height="510"></a></p><img src ="http://m.shnenglu.com/heath/aggbug/141160.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/heath/" target="_blank">Heath</a> 2011-03-05 13:42 <a href="http://m.shnenglu.com/heath/archive/2011/03/05/141160.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Windows涓婸erforce Command Line澶勭悊涓枃鍙傛暟鐨勪袱縐嶆柟娉?/title><link>http://m.shnenglu.com/heath/archive/2010/11/15/133692.html</link><dc:creator>Heath</dc:creator><author>Heath</author><pubDate>Mon, 15 Nov 2010 09:58:00 GMT</pubDate><guid>http://m.shnenglu.com/heath/archive/2010/11/15/133692.html</guid><wfw:comment>http://m.shnenglu.com/heath/comments/133692.html</wfw:comment><comments>http://m.shnenglu.com/heath/archive/2010/11/15/133692.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://m.shnenglu.com/heath/comments/commentRss/133692.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/heath/services/trackbacks/133692.html</trackback:ping><description><![CDATA[<p>    Windows涓婥ommand Line涓殑涓枃瀛楃鏄噰鐢ˋNSI緙栫爜鏉ュ鐞嗙殑錛岃孭erforce command line瑕佹眰浼犲叆鐨勪腑鏂囧弬鏁幫紙鏂囦歡錛堝す錛夊悕錛変負UTF-8緙栫爜錛屾墍浠ラ渶瑕佸皢涓枃鍙傛暟杞崲涓篣TF-8鍚庡啀鍋氬鐞嗭紝涓嬮潰浠嬬粛涓ょ澶勭悊鏂規硶銆?/p> <p>涓銆佺郴緇熻皟鐢?/p> <p>    閫氳繃浣跨敤WinExec銆丼hellExecute鎴杝ystem錛屽錛?/p> <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:a202efe8-f955-49cf-8f11-16a2b3b1f36b" class="wlWriterEditableSmartContent"><pre style="background-color:#FFFFFF;white-space:-moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; white-space: pre-wrap; word-wrap: break-word;overflow: auto;"><span style="color: #008080;">_snprintf</span><span style="color: #000000;">(cmdbuf , </span><span style="color: #800080;">1024</span><span style="color: #000000;"> , </span><span style="color: #800000;">"</span><span style="color: #800000;">p4 -c %s add \</span><span style="color: #800000;">"</span><span style="color: #000000;">%</span><span style="color: #000000;">s\</span><span style="color: #800000;">""</span><span style="color: #000000;"> , argv[</span><span style="color: #800080;">1</span><span style="color: #000000;">] , ANSIToUTF8(path.c_str())); system(cmdbuf);</span></pre><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin. http://dunnhq.com --></div> <p>    姝ゆ柟娉曠殑铏界劧綆鍗曪紝浣嗗瓨鍦ㄦ晥鐜囬棶棰橈紝鍥犱負鏈夊垱寤鴻繘紼嬬殑宸ㄥぇ寮閿銆傛澶栦笉鍚岀増鏈殑Perforce涔熶細鍑虹幇涓嶅悓鐨勬墽琛岀粨鏋滐紝閽堝鐗瑰畾鐨勪腑鏂囦細鍑虹幇鎿嶄綔澶辮觸鐨勮寮傞棶棰樸?/p> <p>浜屻丳erforce SDK</p> <p>    Perforce鎻愪緵鏈塖DK鐢ㄤ互鎵╁睍鎴栭泦鎴愬埌鍏朵粬搴旂敤涓紝铏界劧娌℃湁璇︾粏鐨勬枃妗o紝浣嗗彲浠ラ氳繃瀛︿範SDK涓殑sample鏂囦歡鏉ュ涔狅紝姝ゆ柟娉曟渶紼沖畾銆?/p> <p>    涓嬮潰浠g爜灞曠ず浜嗛氳繃SDK涓瑿lientAPI鏉ラ掑綊娣誨姞鎸囧畾鏂囦歡澶逛笅鐨勬墍鏈夋枃浠訛細</p> <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:891e1b70-295a-4daf-9c0d-8f0ad2ef8b07" class="wlWriterEditableSmartContent"><pre style="background-color:#FFFFFF;white-space:-moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; white-space: pre-wrap; word-wrap: break-word;overflow: auto;"><span style="color: #000000;">#</span><span style="color: #000000;"> include </span><span style="color: #800000;">"</span><span style="color: #800000;">clientapi.h</span><span style="color: #800000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;">#</span><span style="color: #000000;"> include </span><span style="color: #800000;">"</span><span style="color: #800000;">i18napi.h</span><span style="color: #800000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;">#</span><span style="color: #000000;"> include </span><span style="color: #800000;">"</span><span style="color: #800000;">CharSetConvertUtil.h</span><span style="color: #800000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;">#</span><span style="color: #000000;"> include </span><span style="color: #000000;"><</span><span style="color: #000000;">string</span><span style="color: #000000;">></span><span style="color: #000000;"> </span><span style="color: #000000;">#</span><span style="color: #000000;"> include </span><span style="color: #000000;"><</span><span style="color: #000000;">vector</span><span style="color: #000000;">></span><span style="color: #000000;"> </span><span style="color: #000000;">#</span><span style="color: #000000;"> include </span><span style="color: #000000;"><</span><span style="color: #000000;">list</span><span style="color: #000000;">></span><span style="color: #000000;"> </span><span style="color: #000000;">#</span><span style="color: #000000;"> include </span><span style="color: #000000;"><</span><span style="color: #000000;">io.h</span><span style="color: #000000;">></span><span style="color: #000000;"> using namespace std; </span><span style="color: #000000;">//</span><span style="color: #000000;"> structure to hold a directory </span><span style="color: #0000FF;">and</span><span style="color: #000000;"> all its filenames. struct FILELIST { string path; vector</span><span style="color: #000000;"><</span><span style="color: #000000;">string</span><span style="color: #000000;">></span><span style="color: #000000;"> theList; }; void TransverseDirectory(string path, list</span><span style="color: #000000;"><</span><span style="color: #000000;">FILELIST</span><span style="color: #000000;">></span><span style="color: #000000;">& theList) { struct </span><span style="color: #008080;">_finddatai</span><span style="color: #000000;">64</span><span style="color: #008080;">_t</span><span style="color: #000000;"> data; string fname </span><span style="color: #000000;">=</span><span style="color: #000000;"> path </span><span style="color: #000000;">+</span><span style="color: #000000;"> </span><span style="color: #800000;">"</span><span style="color: #800000;">\\*.*</span><span style="color: #800000;">"</span><span style="color: #000000;">; long h </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #008080;">_findfirsti</span><span style="color: #800080;">64</span><span style="color: #000000;">(fname.c_str(),&data); </span><span style="color: #0000FF;">if</span><span style="color: #000000;">(h </span><span style="color: #000000;">>=</span><span style="color: #000000;"> </span><span style="color: #800080;">0</span><span style="color: #000000;">) { FILELIST thisList; theList.push_back(thisList); list</span><span style="color: #000000;"><</span><span style="color: #000000;">FILELIST</span><span style="color: #000000;">></span><span style="color: #000000;">::iterator it </span><span style="color: #000000;">=</span><span style="color: #000000;"> theList.</span><span style="color: #0000FF;">end</span><span style="color: #000000;">(); it</span><span style="color: #008000;">--</span><span style="color: #008000;">;</span><span style="color: #008000;"> </span><span style="color: #000000;"> (</span><span style="color: #000000;">*</span><span style="color: #000000;">it).path </span><span style="color: #000000;">=</span><span style="color: #000000;"> path; </span><span style="color: #0000FF;">do</span><span style="color: #000000;"> { </span><span style="color: #0000FF;">if</span><span style="color: #000000;">( (data.attrib & </span><span style="color: #008080;">_A_SUBDIR</span><span style="color: #000000;">) ) { </span><span style="color: #000000;">//</span><span style="color: #000000;"> make sure we skip </span><span style="color: #800000;">"</span><span style="color: #800000;">.</span><span style="color: #800000;">"</span><span style="color: #000000;"> </span><span style="color: #0000FF;">and</span><span style="color: #000000;"> </span><span style="color: #800000;">"</span><span style="color: #800000;">..</span><span style="color: #800000;">"</span><span style="color: #000000;">. Have to use strcmp here because </span><span style="color: #000000;">//</span><span style="color: #000000;"> some file names can start with a dot, so just testing </span><span style="color: #0000FF;">for</span><span style="color: #000000;"> the </span><span style="color: #000000;">//</span><span style="color: #000000;"> first dot is </span><span style="color: #0000FF;">not</span><span style="color: #000000;"> suffient. </span><span style="color: #0000FF;">if</span><span style="color: #000000;">( strcmp(data.name,</span><span style="color: #800000;">"</span><span style="color: #800000;">.</span><span style="color: #800000;">"</span><span style="color: #000000;">) !</span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800080;">0</span><span style="color: #000000;"> &&strcmp(data.name,</span><span style="color: #800000;">"</span><span style="color: #800000;">..</span><span style="color: #800000;">"</span><span style="color: #000000;">) !</span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800080;">0</span><span style="color: #000000;">) { </span><span style="color: #000000;">//</span><span style="color: #000000;"> We found a sub</span><span style="color: #000000;">-</span><span style="color: #000000;">directory, so get the files </span><span style="color: #0000FF;">in</span><span style="color: #000000;"> it too fname </span><span style="color: #000000;">=</span><span style="color: #000000;"> path </span><span style="color: #000000;">+</span><span style="color: #000000;"> </span><span style="color: #800000;">"</span><span style="color: #800000;">\\</span><span style="color: #800000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;">+</span><span style="color: #000000;"> data.name; </span><span style="color: #000000;">//</span><span style="color: #000000;"> recurrsion here! TransverseDirectory(fname,theList); } } </span><span style="color: #0000FF;">else</span><span style="color: #000000;"> { </span><span style="color: #000000;">//</span><span style="color: #000000;"> this is just a normal filename. So just add it to our vector (</span><span style="color: #000000;">*</span><span style="color: #000000;">it).theList.push_back(data.name); } }</span><span style="color: #0000FF;">while</span><span style="color: #000000;">( </span><span style="color: #008080;">_findnexti</span><span style="color: #800080;">64</span><span style="color: #000000;">(h,&data) </span><span style="color: #000000;">==</span><span style="color: #000000;"> </span><span style="color: #800080;">0</span><span style="color: #000000;">); </span><span style="color: #008080;">_findclose</span><span style="color: #000000;">(h); } } int main( int argc, char </span><span style="color: #000000;">**</span><span style="color: #000000;">argv ) { list</span><span style="color: #000000;"><</span><span style="color: #000000;">FILELIST</span><span style="color: #000000;">></span><span style="color: #000000;"> MyList; string path; ClientUser ui; ClientApi client; StrBuf msg; Error e; </span><span style="color: #0000FF;">if</span><span style="color: #000000;">(argc </span><span style="color: #000000;"><</span><span style="color: #000000;"> </span><span style="color: #800080;">4</span><span style="color: #000000;">) { fprintf( stderr , </span><span style="color: #800000;">"</span><span style="color: #800000;">P4 Transverse Add: Arguments Error!\n</span><span style="color: #800000;">"</span><span style="color: #000000;">); </span><span style="color: #0000FF;">return</span><span style="color: #000000;"> </span><span style="color: #000000;">-</span><span style="color: #800080;">1</span><span style="color: #000000;">; } client.SetPort(argv[</span><span style="color: #800080;">1</span><span style="color: #000000;">]); client.SetClient(argv[</span><span style="color: #800080;">2</span><span style="color: #000000;">]); client.SetTrans(CharSetApi::UTF_8 , CharSetApi::UTF_8 , CharSetApi::UTF_8, CharSetApi::UTF_8); TransverseDirectory(argv[</span><span style="color: #800080;">3</span><span style="color: #000000;">],MyList); </span><span style="color: #000000;">//</span><span style="color: #000000;"> Connect to server client.Init( &e ); </span><span style="color: #0000FF;">if</span><span style="color: #000000;">( e.Test() ) { e.Fmt( &msg ); fprintf( stderr, </span><span style="color: #800000;">"</span><span style="color: #800000;">%s\n</span><span style="color: #800000;">"</span><span style="color: #000000;">, msg.Text() ); </span><span style="color: #0000FF;">return</span><span style="color: #000000;"> </span><span style="color: #000000;">-</span><span style="color: #800080;">1</span><span style="color: #000000;">; } list</span><span style="color: #000000;"><</span><span style="color: #000000;">FILELIST</span><span style="color: #000000;">></span><span style="color: #000000;">::iterator it; </span><span style="color: #0000FF;">for</span><span style="color: #000000;">(it </span><span style="color: #000000;">=</span><span style="color: #000000;"> MyList.begin(); it !</span><span style="color: #000000;">=</span><span style="color: #000000;"> MyList.</span><span style="color: #0000FF;">end</span><span style="color: #000000;">(); it</span><span style="color: #000000;">++</span><span style="color: #000000;">) { vector</span><span style="color: #000000;"><</span><span style="color: #000000;">string</span><span style="color: #000000;">></span><span style="color: #000000;">::iterator its; </span><span style="color: #0000FF;">for</span><span style="color: #000000;">(its </span><span style="color: #000000;">=</span><span style="color: #000000;"> (</span><span style="color: #000000;">*</span><span style="color: #000000;">it).theList.begin(); its !</span><span style="color: #000000;">=</span><span style="color: #000000;"> (</span><span style="color: #000000;">*</span><span style="color: #000000;">it).theList.</span><span style="color: #0000FF;">end</span><span style="color: #000000;">(); its</span><span style="color: #000000;">++</span><span style="color: #000000;">) { path </span><span style="color: #000000;">=</span><span style="color: #000000;"> (</span><span style="color: #000000;">*</span><span style="color: #000000;">it).path </span><span style="color: #000000;">+</span><span style="color: #000000;"> </span><span style="color: #800000;">"</span><span style="color: #800000;">\\</span><span style="color: #800000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;">+</span><span style="color: #000000;"> (</span><span style="color: #000000;">*</span><span style="color: #000000;">its); char</span><span style="color: #000000;">*</span><span style="color: #000000;"> pText </span><span style="color: #000000;">=</span><span style="color: #000000;"> ANSIToUTF8(path.c_str()); client.SetArgv( </span><span style="color: #800080;">1</span><span style="color: #000000;"> , &pText); client.Run( </span><span style="color: #800000;">"</span><span style="color: #800000;">add</span><span style="color: #800000;">"</span><span style="color: #000000;"> , &ui ); } } </span><span style="color: #000000;">//</span><span style="color: #000000;"> Close connection client.Final( &e ); </span><span style="color: #0000FF;">if</span><span style="color: #000000;">( e.Test() ) { e.Fmt( &msg ); fprintf( stderr, </span><span style="color: #800000;">"</span><span style="color: #800000;">%s\n</span><span style="color: #800000;">"</span><span style="color: #000000;">, msg.Text() ); </span><span style="color: #0000FF;">return</span><span style="color: #000000;"> </span><span style="color: #000000;">-</span><span style="color: #800080;">1</span><span style="color: #000000;">; } </span><span style="color: #0000FF;">return</span><span style="color: #000000;"> </span><span style="color: #800080;">0</span><span style="color: #000000;">; }</span></pre><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin. http://dunnhq.com --></div> <p>    姝ゆ柟娉曠渷鍘諱簡鍒涘緩p4榪涚▼鐨勫紑閿錛屼換鍔℃墽琛屾晥鐜囦細鎻愰珮涓嶅皯錛岃屼笖涔熶笉浼氬嚭鐜版墽琛岀粨鏋滀笉紼沖畾鐨勯棶棰樸?nbsp;   </p> <p> </p> <p>闄勪竴錛歋DK涓嬭澆鍦板潃</p> <p><a title="ftp://ftp.perforce.com/perforce/" href="ftp://ftp.perforce.com/perforce/">ftp://ftp.perforce.com/perforce/</a></p> <p>闄勪簩錛氶檮涓夾NSI杞琔TF-8浠g爜</p> <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:de1a1357-3f18-424a-bec7-b29768d70f5f" class="wlWriterEditableSmartContent"><pre style="background-color:#FFFFFF;white-space:-moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; white-space: pre-wrap; word-wrap: break-word;overflow: auto;"><span style="color: #000000;"> wchar_t</span><span style="color: #000000;">*</span><span style="color: #000000;"> ANSIToUnicode( const char</span><span style="color: #000000;">*</span><span style="color: #000000;"> str ) { int textlen ; wchar_t </span><span style="color: #000000;">*</span><span style="color: #000000;"> result; textlen </span><span style="color: #000000;">=</span><span style="color: #000000;"> MultiByteToWideChar( CP_ACP, </span><span style="color: #800080;">0</span><span style="color: #000000;">, str,</span><span style="color: #000000;">-</span><span style="color: #800080;">1</span><span style="color: #000000;">, NULL,</span><span style="color: #800080;">0</span><span style="color: #000000;"> ); result </span><span style="color: #000000;">=</span><span style="color: #000000;"> (wchar_t </span><span style="color: #000000;">*</span><span style="color: #000000;">)malloc((textlen</span><span style="color: #000000;">+</span><span style="color: #800080;">1</span><span style="color: #000000;">)</span><span style="color: #000000;">*</span><span style="color: #000000;">sizeof(wchar_t)); memset(result,</span><span style="color: #800080;">0</span><span style="color: #000000;">,(textlen</span><span style="color: #000000;">+</span><span style="color: #800080;">1</span><span style="color: #000000;">)</span><span style="color: #000000;">*</span><span style="color: #000000;">sizeof(wchar_t)); MultiByteToWideChar(CP_ACP, </span><span style="color: #800080;">0</span><span style="color: #000000;">,str,</span><span style="color: #000000;">-</span><span style="color: #800080;">1</span><span style="color: #000000;">,(LPWSTR)result,textlen ); </span><span style="color: #0000FF;">return</span><span style="color: #000000;"> result; } char</span><span style="color: #000000;">*</span><span style="color: #000000;"> UnicodeToANSI( const wchar_t </span><span style="color: #000000;">*</span><span style="color: #000000;">str ) { char </span><span style="color: #000000;">*</span><span style="color: #000000;"> result; int textlen; </span><span style="color: #000000;">//</span><span style="color: #000000;"> wide char to multi char textlen </span><span style="color: #000000;">=</span><span style="color: #000000;"> WideCharToMultiByte( CP_ACP, </span><span style="color: #800080;">0</span><span style="color: #000000;">, str, </span><span style="color: #000000;">-</span><span style="color: #800080;">1</span><span style="color: #000000;">, NULL, </span><span style="color: #800080;">0</span><span style="color: #000000;">, NULL, NULL ); result </span><span style="color: #000000;">=</span><span style="color: #000000;">(char </span><span style="color: #000000;">*</span><span style="color: #000000;">)malloc((textlen</span><span style="color: #000000;">+</span><span style="color: #800080;">1</span><span style="color: #000000;">)</span><span style="color: #000000;">*</span><span style="color: #000000;">sizeof(char)); memset( result, </span><span style="color: #800080;">0</span><span style="color: #000000;">, sizeof(char) </span><span style="color: #000000;">*</span><span style="color: #000000;"> ( textlen </span><span style="color: #000000;">+</span><span style="color: #000000;"> </span><span style="color: #800080;">1</span><span style="color: #000000;"> ) ); WideCharToMultiByte( CP_ACP, </span><span style="color: #800080;">0</span><span style="color: #000000;">, str, </span><span style="color: #000000;">-</span><span style="color: #800080;">1</span><span style="color: #000000;">, result, textlen, NULL, NULL ); </span><span style="color: #0000FF;">return</span><span style="color: #000000;"> result; } wchar_t</span><span style="color: #000000;">*</span><span style="color: #000000;"> UTF8ToUnicode( const char</span><span style="color: #000000;">*</span><span style="color: #000000;"> str ) { int textlen ; wchar_t </span><span style="color: #000000;">*</span><span style="color: #000000;"> result; textlen </span><span style="color: #000000;">=</span><span style="color: #000000;"> MultiByteToWideChar( CP_UTF8, </span><span style="color: #800080;">0</span><span style="color: #000000;">, str,</span><span style="color: #000000;">-</span><span style="color: #800080;">1</span><span style="color: #000000;">, NULL,</span><span style="color: #800080;">0</span><span style="color: #000000;"> ); result </span><span style="color: #000000;">=</span><span style="color: #000000;"> (wchar_t </span><span style="color: #000000;">*</span><span style="color: #000000;">)malloc((textlen</span><span style="color: #000000;">+</span><span style="color: #800080;">1</span><span style="color: #000000;">)</span><span style="color: #000000;">*</span><span style="color: #000000;">sizeof(wchar_t)); memset(result,</span><span style="color: #800080;">0</span><span style="color: #000000;">,(textlen</span><span style="color: #000000;">+</span><span style="color: #800080;">1</span><span style="color: #000000;">)</span><span style="color: #000000;">*</span><span style="color: #000000;">sizeof(wchar_t)); MultiByteToWideChar(CP_UTF8, </span><span style="color: #800080;">0</span><span style="color: #000000;">,str,</span><span style="color: #000000;">-</span><span style="color: #800080;">1</span><span style="color: #000000;">,(LPWSTR)result,textlen ); </span><span style="color: #0000FF;">return</span><span style="color: #000000;"> result; } char</span><span style="color: #000000;">*</span><span style="color: #000000;"> UnicodeToUTF8( const wchar_t </span><span style="color: #000000;">*</span><span style="color: #000000;">str ) { char </span><span style="color: #000000;">*</span><span style="color: #000000;"> result; int textlen; </span><span style="color: #000000;">//</span><span style="color: #000000;"> wide char to multi char textlen </span><span style="color: #000000;">=</span><span style="color: #000000;"> WideCharToMultiByte( CP_UTF8, </span><span style="color: #800080;">0</span><span style="color: #000000;">, str, </span><span style="color: #000000;">-</span><span style="color: #800080;">1</span><span style="color: #000000;">, NULL, </span><span style="color: #800080;">0</span><span style="color: #000000;">, NULL, NULL ); result </span><span style="color: #000000;">=</span><span style="color: #000000;">(char </span><span style="color: #000000;">*</span><span style="color: #000000;">)malloc((textlen</span><span style="color: #000000;">+</span><span style="color: #800080;">1</span><span style="color: #000000;">)</span><span style="color: #000000;">*</span><span style="color: #000000;">sizeof(char)); memset(result, </span><span style="color: #800080;">0</span><span style="color: #000000;">, sizeof(char) </span><span style="color: #000000;">*</span><span style="color: #000000;"> ( textlen </span><span style="color: #000000;">+</span><span style="color: #000000;"> </span><span style="color: #800080;">1</span><span style="color: #000000;"> ) ); WideCharToMultiByte( CP_UTF8, </span><span style="color: #800080;">0</span><span style="color: #000000;">, str, </span><span style="color: #000000;">-</span><span style="color: #800080;">1</span><span style="color: #000000;">, result, textlen, NULL, NULL ); </span><span style="color: #0000FF;">return</span><span style="color: #000000;"> result; } char</span><span style="color: #000000;">*</span><span style="color: #000000;"> ANSIToUTF8(const char</span><span style="color: #000000;">*</span><span style="color: #000000;"> str) { wchar_t</span><span style="color: #000000;">*</span><span style="color: #000000;"> pUnicodeBuff </span><span style="color: #000000;">=</span><span style="color: #000000;"> ANSIToUnicode(str); char</span><span style="color: #000000;">*</span><span style="color: #000000;"> pUtf8Buff </span><span style="color: #000000;">=</span><span style="color: #000000;"> UnicodeToUTF8(pUnicodeBuff); free(pUnicodeBuff); </span><span style="color: #0000FF;">return</span><span style="color: #000000;"> pUtf8Buff; }</span></pre><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin. http://dunnhq.com --></div><img src ="http://m.shnenglu.com/heath/aggbug/133692.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/heath/" target="_blank">Heath</a> 2010-11-15 17:58 <a href="http://m.shnenglu.com/heath/archive/2010/11/15/133692.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>CruiseControl.NET for CI in Game developmenthttp://m.shnenglu.com/heath/archive/2010/08/09/122834.htmlHeathHeathMon, 09 Aug 2010 12:22:00 GMThttp://m.shnenglu.com/heath/archive/2010/08/09/122834.htmlhttp://m.shnenglu.com/heath/comments/122834.htmlhttp://m.shnenglu.com/heath/archive/2010/08/09/122834.html#Feedback0http://m.shnenglu.com/heath/comments/commentRss/122834.htmlhttp://m.shnenglu.com/heath/services/trackbacks/122834.html    鏈変釜欏圭洰浣跨敤浜咰ruiseControl.NET錛堜互涓嬬畝縐癈C.NET錛変綔涓烘寔緇泦鎴愬伐鍏鳳紝鍛ㄦ湯鎶界┖鐮旂┒浜嗕竴涓嬶紝鍙戠幇榪欐鐢?b>ThoughtWorks璐$尞鐨勫紑婧愬伐鍏峰姛鑳介潪甯稿己澶э紝涓昏浣撶幇鍦ㄤ笅闈笁涓柟闈細

1錛夌伒媧匯侀珮鍙厤緗э紝濡傦細澶氶噸緇勫悎鏉′歡瑙﹀彂銆佸浠誨姟闃熷垪絳栫暐錛?

2錛夊吋瀹圭洰鍓嶅嚑涔庢墍鏈夌殑嫻佽SCM宸ュ叿錛屼嬌寰楀縐嶅紓鏋勭郴緇熻兘澶熺敱CruiseControl.NET緇熶竴鐩戞帶鍜岀鐞嗭紱

3錛夊畬鍠勭殑浣跨敤鏂囨。錛屼嬌涓婃墜鍜岀淮鎶ゅ彉寰楀鏄擄紱

    鑰岃欏圭洰寮曚互鑷豹鐨勪唬鐮乧heck in瑙﹀彂鏋勫緩鐨勫姛鑳介氳繃CC.NET涔熷緢瀹規槗瀹炵幇銆備箣鍓嶄嬌鐢ㄨ繃Hudson錛岃緋葷粺閲囩敤涓諱粠寮忔灦鏋勶紝浣跨敤鑰呴氳繃緗戦〉璁㎝aster鎺у埗Slave鍔ㄤ綔錛岀敱浜嶮aster鐢卞埆鐨勯儴闂ㄧ鐞嗭紝鍑洪棶棰樺悗闇瑕佽仈緋葷浉鍏充漢瑙e喅錛屼細鏈変竴瀹氱殑澶勭悊寤惰繜錛岃屼笖瀹夎鍦ㄦ瀯寤烘満涓婄殑Slave鏈嶅姟緇忓父宕╂簝銆傝孋C.NET鐩存帴瀹夎鍦ㄦ瀯寤烘満涓婏紝閰嶇疆IIS鍚庡彲閫氳繃緗戦〉鐩存帴璁塊棶錛屾搷浣滅淮鎶ら兘杈冨墠鑰呭鏄撱傜敱浜庝箣鍓嶇殑鏋勫緩鑴氭湰鏄敤VisualBuild瀹炵幇鐨勶紝鎵浠ヤ笉鍙兘鍐嶈姳鏃墮棿鐢–C.NET鍐嶅啓涓閬嶃傝岄氳繃瀹為獙寰楃煡錛屽叾瀹濩C.NET鑳藉浠xecutableTask鐨勫艦寮忓緢濂藉湴涓嶸isualBuild闆嗘垚錛岀洰鍓嶆瘡灝忔椂瀹氭椂鏋勫緩銆丯ightBuild鍜屾瀯寤烘垚鍔熷悗瑙﹀彂鐨勮嚜鍔ㄦ祴璇曢兘宸茬粡鏀懼埌浜咰C.NET涓婁簡銆?

    ccnet.config Example:

<cruisecontrol xmlns:cb="urn:ccnet.config.builder">
  <queue name="Q1" duplicates="ApplyForceBuildsReAdd" />
  <queue name="Q2" duplicates="ApplyForceBuildsReAdd" />
  <project name="AgileBuild" queue="Q1" queuePriority="1">
    <category>AutoBuild</category>
    <triggers>
      <filterTrigger startTime="18:00" endTime="10:00">
        <trigger type="intervalTrigger" name="Continuous" seconds="1800" buildCondition="ForceBuild" />
        <weekDays>
          <weekDay>Monday</weekDay>
          <weekDay>Tuesday</weekDay>
          <weekDay>Wednesday</weekDay>
          <weekDay>Thursday</weekDay>
          <weekDay>Friday</weekDay>
        </weekDays>
      </filterTrigger>
    </triggers>
    <tasks>
      <exec>
        <executable>VisBuildCmd.exe</executable>
        <buildArgs>E:\GAMEDev\AgileBuilder.bld</buildArgs>
        <baseDirectory>D:\VisBuildPro7</baseDirectory>
        <buildTimeoutSeconds>3000</buildTimeoutSeconds>
      </exec>
    </tasks>
  </project>
  <project name="NightBuild" queue="Q2" queuePriority="1">
    <category>AutoBuild</category>
    <triggers>
      <scheduleTrigger time="23:00" buildCondition="ForceBuild" name="Scheduled">
        <weekDays>
          <weekDay>Monday</weekDay>
          <weekDay>Tuesday</weekDay>
          <weekDay>Wednesday</weekDay>
          <weekDay>Thursday</weekDay>
          <weekDay>Friday</weekDay>
        </weekDays>
      </scheduleTrigger>      
    </triggers>  
    <tasks>
      <exec>
        <executable>VisBuildCmd.exe</executable>
        <buildArgs>"BUILD_OPTION=clientworldeffect" "PACK_TYPE=RAR" E:\GAMEDev\NightBuilder.bld</buildArgs>
        <baseDirectory>D:\VisBuildPro7</baseDirectory>
        <buildTimeoutSeconds>0</buildTimeoutSeconds>
      </exec>
    </tasks>
  </project>
  <project name="NightAutoTest" queue="Q2" queuePriority="2">
    <category>AutoTest</category>
    <triggers>
      <projectTrigger serverUri="tcp://heath-builder:21234/CruiseManager.rem" project="NightBuild">
        <triggerStatus>Success</triggerStatus>
        <innerTrigger type="intervalTrigger" seconds="60" buildCondition="ForceBuild" />
      </projectTrigger>
    </triggers>
    <tasks>
      <exec>
        <executable>VisBuildCmd.exe</executable>
        <buildArgs>E:\GAMEDev\AutoTest.bld</buildArgs>
        <baseDirectory>D:\VisBuildPro7</baseDirectory>
        <buildTimeoutSeconds>0</buildTimeoutSeconds>
      </exec>
    </tasks>
  </project>  
</cruisecontrol>

References

[1] http://cruisecontrol.sourceforge.net/

[2] http://www.kinook.com/VisBuildPro/



Heath 2010-08-09 20:22 鍙戣〃璇勮
]]>
鍐欑潃鐜?2)&mdash;&mdash;WoW瑙掕壊璧勬簮璇誨彇http://m.shnenglu.com/heath/archive/2010/04/24/113423.htmlHeathHeathSat, 24 Apr 2010 04:31:00 GMThttp://m.shnenglu.com/heath/archive/2010/04/24/113423.htmlhttp://m.shnenglu.com/heath/comments/113423.htmlhttp://m.shnenglu.com/heath/archive/2010/04/24/113423.html#Feedback2http://m.shnenglu.com/heath/comments/commentRss/113423.htmlhttp://m.shnenglu.com/heath/services/trackbacks/113423.html闃呰鍏ㄦ枃

Heath 2010-04-24 12:31 鍙戣〃璇勮
]]>
Slerp or Lerphttp://m.shnenglu.com/heath/archive/2010/03/14/109689.htmlHeathHeathSun, 14 Mar 2010 09:54:00 GMThttp://m.shnenglu.com/heath/archive/2010/03/14/109689.htmlhttp://m.shnenglu.com/heath/comments/109689.htmlhttp://m.shnenglu.com/heath/archive/2010/03/14/109689.html#Feedback1http://m.shnenglu.com/heath/comments/commentRss/109689.htmlhttp://m.shnenglu.com/heath/services/trackbacks/109689.htmlUnderstanding Slerp, Then Not Using It瀵筍lerp鐨勮搗婧愬強鎬ц兘鍋氫簡璇︾粏鐨勮璁恒係lerp騫朵笉灞闄愪簬緇存暟錛屽洜鑰屼笉瑕佽涓哄彧瀵筈uaternion鏈夋晥銆備綔鑰呰涓篠lerp浼氬甫鏉ユ晥鐜囬棶棰橈紝鍗充究緇忚繃浼樺寲涔熷茍涓嶈兘杈懼埌鐞嗘兂鐨勯熷害(涓巐erp鍋氭瘮杈冭岃█)錛岃屼笖浼樺寲寰寰浼氶檷浣庝唬鐮佺殑鏄撹鎬с傛枃绔犵粰鍑轟簡涓涓粨璁猴細濡傛灉鎻掑艱繃紼嬩腑鐨勫父閲忛熷害涓嶆槸蹇呴』鐨勶紝閭d箞鏈濂戒嬌鐢ㄧ嚎鎬х殑lerp銆?/p>

Jason Gregory鍦ㄤ粬鐨勫紩鎿庢灦鏋勮璁′竴涔︿腑涔熺敤鈥淭o SLERP or Not to SLERP (That鈥檚 Still the Question)鈥濅竴灝忚妭浠嬬粛浜嗗紑鍙戣呭Slerp鐨勪簤璁猴紝騫朵粙緇嶄粬鍦∟aughty Dog鐨勫悓浜嬮拡瀵筆S3鐨勪紭鍖栨柟娉曪紝浣縎lerp鍙揪鍒?0鍛ㄦ湡/鍏寵妭錛岀浉姣擫erp鐨?6.25鍛ㄦ湡/鍏寵妭宸茬粡寰堜笉閿欎簡銆?/p>

涔嬪墠紜疄娌″Slerp鐨勬晥鐜囬棶棰樹綔榪囧鐨勮冭檻錛屽紩鎿庣殑Slerp鐩存帴浣跨敤鐨勬槸D3DXQuaternionSlerp錛孧S搴旇瀵瑰叾鍋氫簡浼樺寲錛屾晥鐜囨庝箞鏍瘋嫻嬩竴涓嬫墠鐭ラ亾浜嗐?/p>

Heath 2010-03-14 17:54 鍙戣〃璇勮
]]>
Script in Gamehttp://m.shnenglu.com/heath/archive/2010/01/29/106753.htmlHeathHeathFri, 29 Jan 2010 11:34:00 GMThttp://m.shnenglu.com/heath/archive/2010/01/29/106753.htmlhttp://m.shnenglu.com/heath/comments/106753.htmlhttp://m.shnenglu.com/heath/archive/2010/01/29/106753.html#Feedback0http://m.shnenglu.com/heath/comments/commentRss/106753.htmlhttp://m.shnenglu.com/heath/services/trackbacks/106753.html闃呰鍏ㄦ枃

Heath 2010-01-29 19:34 鍙戣〃璇勮
]]>
FMOD Event System&mdash;&mdash;浜嬩歡鏍戠瓥鐣ャ佸姞杞姐佸唴瀛樺垎閰?/title><link>http://m.shnenglu.com/heath/archive/2010/01/18/105976.html</link><dc:creator>Heath</dc:creator><author>Heath</author><pubDate>Mon, 18 Jan 2010 15:40:00 GMT</pubDate><guid>http://m.shnenglu.com/heath/archive/2010/01/18/105976.html</guid><wfw:comment>http://m.shnenglu.com/heath/comments/105976.html</wfw:comment><comments>http://m.shnenglu.com/heath/archive/2010/01/18/105976.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/heath/comments/commentRss/105976.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/heath/services/trackbacks/105976.html</trackback:ping><description><![CDATA[     鎽樿:   <a href='http://m.shnenglu.com/heath/archive/2010/01/18/105976.html'>闃呰鍏ㄦ枃</a><img src ="http://m.shnenglu.com/heath/aggbug/105976.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/heath/" target="_blank">Heath</a> 2010-01-18 23:40 <a href="http://m.shnenglu.com/heath/archive/2010/01/18/105976.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>濡備綍鍒╃敤VS鐨凮utput蹇熷畾浣峌nitTest Failed浠g爜http://m.shnenglu.com/heath/archive/2009/06/30/88889.htmlHeathHeathTue, 30 Jun 2009 06:08:00 GMThttp://m.shnenglu.com/heath/archive/2009/06/30/88889.htmlhttp://m.shnenglu.com/heath/comments/88889.htmlhttp://m.shnenglu.com/heath/archive/2009/06/30/88889.html#Feedback0http://m.shnenglu.com/heath/comments/commentRss/88889.htmlhttp://m.shnenglu.com/heath/services/trackbacks/88889.html寰堢畝鍗曪紝鍦≒roject鐨凱roperty Page璁劇疆Build Events涓殑Post-Build Event錛屾渶綆媧佺殑鍐欐硶灝辨槸灝咰ommand Line璁劇疆涓猴細$(TargetPath)銆傜敱浜嶶nitTest++鐨勮緭鍑烘牸寮忛伒鐓т簡VS鐨勬牸寮忥紝鎵浠ュ弻鍑婚敊璇彁紺鴻渚垮彲璺寵漿鍒版祴璇曞け璐ョ殑浠g爜琛屻?/p>

Heath 2009-06-30 14:08 鍙戣〃璇勮
]]>
鎴樻枟鏁板兼ā鎷熷櫒http://m.shnenglu.com/heath/archive/2009/06/24/88451.htmlHeathHeathWed, 24 Jun 2009 12:25:00 GMThttp://m.shnenglu.com/heath/archive/2009/06/24/88451.htmlhttp://m.shnenglu.com/heath/comments/88451.htmlhttp://m.shnenglu.com/heath/archive/2009/06/24/88451.html#Feedback0http://m.shnenglu.com/heath/comments/commentRss/88451.htmlhttp://m.shnenglu.com/heath/services/trackbacks/88451.html
   鐜╁灞炴у拰鎬墿灞炴ф牴鎹瓻XCEL鑷姩浜х敓錛屽彲鍔ㄦ佷慨鏀規暟鍊箋傚叾鏍稿績鏄昏緫鑴氭湰鐨勮璁★紝閫昏緫鑴氭湰寤虹珛鍦↙ua涔嬩笂錛屾敮鎸丩ua鎵鏈夌殑璇硶鐗規у拰鍑芥暟搴擄紝鍙橀噺鏀寔鐩存帴浣跨敤灞炴у悕瀛楋紙鍛靛懙錛屾湁鐐瑰惞浜嗗搱錛屽叾瀹炲氨鏄帺鏂囧瓧鏇挎崲娓告垙錛屽姞鍏ヤ簡鑷繁鐨勪竴浜涜娉曪級銆傜涓鐗堝彧鏀寔鍗曚竴PK錛岃繖褰撶劧涓嶈兘妯℃嫙鐪熷疄鍦烘櫙涓嬬殑鎴樻枟鎯呭喌錛屽彧鏄釜鍩虹錛屽悗緇姛鑳界戶緇紑鍙戙傘傘?br>    瀹炵幇鑴氭湰璇硶鐫鑹茬殑鏃跺欙紝鍦–odeGuru涓婃壘鍒頒簡涓浣嶅悓瀛﹀啓鐨凷yntaxColorize錛岀粡榪囨敼閫犱箣鍚庢垚鍔熸敮鎸丩ua錛岀劧鐢變簬涓枃鐨勫瓨鍦ㄤ笖娌℃湁浣跨敤Unicode錛屽鑷碦elease鐗堜笅Paste鍜孡oad鍑虹幇鐫鑹插紓甯革紝浠ュ墠瀵筥T("XXX")鍜孴CHAR涓嶄互涓虹劧錛岀幇鍦ㄦ亹鎬曡閲嶈璧鋒潵鍟︺?nbsp;
    鍋歍imer鐨勬椂鍊欙紝紿佺劧鎯沖埌涓縐嶄笉鐢╥f-else鐨勬洿綆鍗曞疄鐜幫細
void CCombatTimer::Forward()
{
    m_uMSec 
+= m_uStep;
    m_uSec  
+= m_uMSec / 1000;
    m_uMSec  
= m_uMSec % 1000;
    m_uMin  
+= m_uSec / 60;
    m_uSec   
= m_uSec % 60;
    m_uHour 
+= m_uMin / 60;
    m_uMin   
= m_uMin % 60;
    m_uHour  
= m_uHour % 24;
}



Heath 2009-06-24 20:25 鍙戣〃璇勮
]]>
鍐欏湪鍏ヨ亴涓騫?/title><link>http://m.shnenglu.com/heath/archive/2009/06/24/88434.html</link><dc:creator>Heath</dc:creator><author>Heath</author><pubDate>Wed, 24 Jun 2009 08:24:00 GMT</pubDate><guid>http://m.shnenglu.com/heath/archive/2009/06/24/88434.html</guid><wfw:comment>http://m.shnenglu.com/heath/comments/88434.html</wfw:comment><comments>http://m.shnenglu.com/heath/archive/2009/06/24/88434.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://m.shnenglu.com/heath/comments/commentRss/88434.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/heath/services/trackbacks/88434.html</trackback:ping><description><![CDATA[     鎽樿: 鍏ヨ亴涓騫達紝鏈変簺鎰熸叏錛屾垚鏂囥?nbsp; <a href='http://m.shnenglu.com/heath/archive/2009/06/24/88434.html'>闃呰鍏ㄦ枃</a><img src ="http://m.shnenglu.com/heath/aggbug/88434.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/heath/" target="_blank">Heath</a> 2009-06-24 16:24 <a href="http://m.shnenglu.com/heath/archive/2009/06/24/88434.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <a href="http://m.shnenglu.com/">青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品</a> <div style="position:fixed;left:-9000px;top:-9000px;"><font id="pjuwb"></font><button id="pjuwb"><pre id="pjuwb"></pre></button><sub id="pjuwb"></sub><tbody id="pjuwb"><var id="pjuwb"><address id="pjuwb"></address></var></tbody><listing id="pjuwb"><label id="pjuwb"><strong id="pjuwb"></strong></label></listing><wbr id="pjuwb"><small id="pjuwb"><tbody id="pjuwb"></tbody></small></wbr><ins id="pjuwb"><xmp id="pjuwb"></xmp></ins><style id="pjuwb"></style><label id="pjuwb"><em id="pjuwb"><li id="pjuwb"></li></em></label><samp id="pjuwb"></samp><menu id="pjuwb"><input id="pjuwb"></input></menu><pre id="pjuwb"><tbody id="pjuwb"><tfoot id="pjuwb"><button id="pjuwb"></button></tfoot></tbody></pre><form id="pjuwb"></form><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"><sup id="pjuwb"></sup></label></style></i><li id="pjuwb"><table id="pjuwb"><abbr id="pjuwb"></abbr></table></li><video id="pjuwb"></video><dfn id="pjuwb"></dfn><progress id="pjuwb"></progress><strong id="pjuwb"></strong><mark id="pjuwb"></mark><em id="pjuwb"></em><tbody id="pjuwb"><p id="pjuwb"><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike></p></tbody><option id="pjuwb"></option><strike id="pjuwb"></strike><u id="pjuwb"></u><td id="pjuwb"><center id="pjuwb"><tr id="pjuwb"></tr></center></td><em id="pjuwb"><mark id="pjuwb"><em id="pjuwb"><tt id="pjuwb"></tt></em></mark></em><strong id="pjuwb"></strong><wbr id="pjuwb"></wbr><s id="pjuwb"></s><strong id="pjuwb"></strong><legend id="pjuwb"></legend><nav id="pjuwb"></nav><dl id="pjuwb"><th id="pjuwb"><dl id="pjuwb"></dl></th></dl><noframes id="pjuwb"><ins id="pjuwb"></ins></noframes><font id="pjuwb"></font><strike id="pjuwb"><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"></label></style></i></strike><output id="pjuwb"></output><thead id="pjuwb"><pre id="pjuwb"></pre></thead><source id="pjuwb"></source><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem><pre id="pjuwb"><span id="pjuwb"><pre id="pjuwb"><big id="pjuwb"></big></pre></span></pre><cite id="pjuwb"><fieldset id="pjuwb"><s id="pjuwb"><rt id="pjuwb"></rt></s></fieldset></cite><big id="pjuwb"><progress id="pjuwb"><big id="pjuwb"></big></progress></big><samp id="pjuwb"><delect id="pjuwb"></delect></samp><dl id="pjuwb"></dl><strike id="pjuwb"><nav id="pjuwb"><dl id="pjuwb"><strong id="pjuwb"></strong></dl></nav></strike><tbody id="pjuwb"><b id="pjuwb"><optgroup id="pjuwb"><rp id="pjuwb"></rp></optgroup></b></tbody><em id="pjuwb"></em><xmp id="pjuwb"><blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote></xmp> <i id="pjuwb"><abbr id="pjuwb"><i id="pjuwb"><abbr id="pjuwb"></abbr></i></abbr></i><center id="pjuwb"><acronym id="pjuwb"><center id="pjuwb"></center></acronym></center><pre id="pjuwb"></pre><ul id="pjuwb"><thead id="pjuwb"></thead></ul><blockquote id="pjuwb"><pre id="pjuwb"><sup id="pjuwb"></sup></pre></blockquote><acronym id="pjuwb"></acronym><big id="pjuwb"><s id="pjuwb"></s></big><th id="pjuwb"></th><th id="pjuwb"></th><tbody id="pjuwb"></tbody><thead id="pjuwb"><strike id="pjuwb"></strike></thead><th id="pjuwb"><dl id="pjuwb"><wbr id="pjuwb"></wbr></dl></th><dl id="pjuwb"><strong id="pjuwb"></strong></dl><abbr id="pjuwb"><noframes id="pjuwb"><noscript id="pjuwb"></noscript></noframes></abbr><td id="pjuwb"><ol id="pjuwb"></ol></td><li id="pjuwb"><noscript id="pjuwb"><abbr id="pjuwb"></abbr></noscript></li><small id="pjuwb"><bdo id="pjuwb"><nav id="pjuwb"></nav></bdo></small><style id="pjuwb"></style><optgroup id="pjuwb"><table id="pjuwb"></table></optgroup><center id="pjuwb"><tr id="pjuwb"><dfn id="pjuwb"></dfn></tr></center><th id="pjuwb"></th><u id="pjuwb"></u><tfoot id="pjuwb"><legend id="pjuwb"><i id="pjuwb"></i></legend></tfoot><mark id="pjuwb"></mark><meter id="pjuwb"></meter><nav id="pjuwb"></nav><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><nobr id="pjuwb"></nobr><sub id="pjuwb"><th id="pjuwb"><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem></th></sub><thead id="pjuwb"><sub id="pjuwb"></sub></thead><ul id="pjuwb"><address id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></address></ul><dfn id="pjuwb"></dfn><pre id="pjuwb"></pre><input id="pjuwb"><cite id="pjuwb"><fieldset id="pjuwb"></fieldset></cite></input><u id="pjuwb"><form id="pjuwb"><u id="pjuwb"></u></form></u><kbd id="pjuwb"><em id="pjuwb"><mark id="pjuwb"></mark></em></kbd><tr id="pjuwb"></tr><del id="pjuwb"><form id="pjuwb"><address id="pjuwb"></address></form></del><tfoot id="pjuwb"><legend id="pjuwb"><ol id="pjuwb"><dl id="pjuwb"></dl></ol></legend></tfoot><menu id="pjuwb"><nobr id="pjuwb"><th id="pjuwb"><nobr id="pjuwb"></nobr></th></nobr></menu><fieldset id="pjuwb"></fieldset><pre id="pjuwb"><blockquote id="pjuwb"><samp id="pjuwb"></samp></blockquote></pre><xmp id="pjuwb"><sup id="pjuwb"><pre id="pjuwb"></pre></sup></xmp><span id="pjuwb"><progress id="pjuwb"></progress></span><font id="pjuwb"></font><var id="pjuwb"><abbr id="pjuwb"></abbr></var><strong id="pjuwb"><label id="pjuwb"><i id="pjuwb"><legend id="pjuwb"></legend></i></label></strong><tr id="pjuwb"><em id="pjuwb"><em id="pjuwb"><output id="pjuwb"></output></em></em></tr><thead id="pjuwb"><strike id="pjuwb"></strike></thead> <acronym id="pjuwb"></acronym><i id="pjuwb"></i><tt id="pjuwb"></tt><rt id="pjuwb"><source id="pjuwb"><rt id="pjuwb"></rt></source></rt><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike><del id="pjuwb"></del><font id="pjuwb"><output id="pjuwb"><ins id="pjuwb"><output id="pjuwb"></output></ins></output></font><kbd id="pjuwb"><tr id="pjuwb"><kbd id="pjuwb"></kbd></tr></kbd><pre id="pjuwb"><sup id="pjuwb"><delect id="pjuwb"><samp id="pjuwb"></samp></delect></sup></pre><samp id="pjuwb"></samp><track id="pjuwb"></track><tr id="pjuwb"></tr><center id="pjuwb"></center><fieldset id="pjuwb"></fieldset><i id="pjuwb"></i><td id="pjuwb"></td><rt id="pjuwb"></rt><object id="pjuwb"></object><pre id="pjuwb"><progress id="pjuwb"><sub id="pjuwb"><thead id="pjuwb"></thead></sub></progress></pre><kbd id="pjuwb"><tr id="pjuwb"><option id="pjuwb"></option></tr></kbd><output id="pjuwb"><ins id="pjuwb"></ins></output><ol id="pjuwb"></ol><source id="pjuwb"></source><strong id="pjuwb"></strong><ruby id="pjuwb"></ruby><sub id="pjuwb"><meter id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></meter></sub><pre id="pjuwb"></pre><center id="pjuwb"></center><tr id="pjuwb"><tbody id="pjuwb"><xmp id="pjuwb"><dd id="pjuwb"></dd></xmp></tbody></tr><video id="pjuwb"></video><pre id="pjuwb"></pre><form id="pjuwb"><optgroup id="pjuwb"></optgroup></form><samp id="pjuwb"></samp><kbd id="pjuwb"></kbd><strong id="pjuwb"><option id="pjuwb"></option></strong><object id="pjuwb"></object><abbr id="pjuwb"><noframes id="pjuwb"><abbr id="pjuwb"></abbr></noframes></abbr><ul id="pjuwb"><del id="pjuwb"><button id="pjuwb"><pre id="pjuwb"></pre></button></del></ul><abbr id="pjuwb"></abbr><strong id="pjuwb"><code id="pjuwb"><strong id="pjuwb"></strong></code></strong><option id="pjuwb"></option><optgroup id="pjuwb"><bdo id="pjuwb"><code id="pjuwb"></code></bdo></optgroup><mark id="pjuwb"><em id="pjuwb"><font id="pjuwb"></font></em></mark><acronym id="pjuwb"><code id="pjuwb"></code></acronym><dl id="pjuwb"></dl><em id="pjuwb"></em><object id="pjuwb"><input id="pjuwb"><object id="pjuwb"></object></input></object><output id="pjuwb"><dd id="pjuwb"></dd></output><option id="pjuwb"><button id="pjuwb"><option id="pjuwb"></option></button></option><small id="pjuwb"></small></div> <a href="http://119553.com" target="_blank">久热精品视频在线观看</a>| <a href="http://free18teen.com" target="_blank">国产香蕉久久精品综合网</a>| <a href="http://av2027.com" target="_blank">亚洲激情在线激情</a>| <a href="http://moonshile.com" target="_blank">久久久综合网</a>| <a href="http://zgztby.com" target="_blank">久久久综合网站</a>| <a href="http://csmgxun.com" target="_blank">欧美激情91</a>| <a href="http://17oooo.com" target="_blank">亚洲黄一区二区三区</a>| <a href="http://72avav.com" target="_blank">午夜久久久久</a>| <a href="http://www-438686.com" target="_blank">性欧美8khd高清极品</a>| <a href="http://filark.com" target="_blank">久久久精品一区二区三区</a>| <a href="http://jlhao123.com" target="_blank">久久精品中文字幕一区</a>| <a href="http://ccc3636.com" target="_blank">欧美一区二区视频网站</a>| <a href="http://119552.com" target="_blank">欧美在线关看</a>| <a href="http://sxhrdyb.com" target="_blank">久久久中精品2020中文</a>| <a href="http://56lin.com" target="_blank">久久久人成影片一区二区三区 </a>| <a href="http://www962aa.com" target="_blank">亚洲视频国产视频</a>| <a href="http://85995m.com" target="_blank">夜夜嗨av一区二区三区网页</a>| <a href="http://599107.com" target="_blank">99精品国产在热久久</a>| <a href="http://18cgh.com" target="_blank">亚洲免费在线观看视频</a>| <a href="http://haole081.com" target="_blank">欧美一区二区视频在线观看2020 </a>| <a href="http://59199m.com" target="_blank">99国内精品久久</a>| <a href="http://dy25777.com" target="_blank">中文有码久久</a>| <a href="http://nc04.com" target="_blank">欧美成人午夜激情视频</a>| <a href="http://hnluvlux.com" target="_blank">亚洲一区二区黄色</a>| <a href="http://05ec.com" target="_blank">欧美激情综合五月色丁香小说</a>| <a href="http://xiuren2021.com" target="_blank">国产精品xxxxx</a>| <a href="http://xpj694.com" target="_blank">亚洲成色999久久网站</a>| <a href="http://chaoporn97.com" target="_blank">亚洲综合成人婷婷小说</a>| <a href="http://senlin86.com" target="_blank">99人久久精品视频最新地址</a>| <a href="http://www99mmnn.com" target="_blank">欧美在线free</a>| <a href="http://wyy66.com" target="_blank">国产手机视频一区二区</a>| <a href="http://86808a.com" target="_blank">午夜精品久久久久久久久 </a>| <a href="http://710477.com" target="_blank">99re66热这里只有精品4</a>| <a href="http://dadepaimai.com" target="_blank">久久一区二区三区四区五区</a>| <a href="http://esdzu.com" target="_blank">亚洲欧美日韩国产成人</a>| <a href="http://136066.com" target="_blank">国产精品夫妻自拍</a>| <a href="http://lgcpvip888.com" target="_blank">亚洲免费中文</a>| <a href="http://www101804.com" target="_blank">先锋影音久久久</a>| <a href="http://666777v3.com" target="_blank">国产综合av</a>| <a href="http://e7w2.com" target="_blank">久久夜色精品国产噜噜av</a>| <a href="http://6aaee.com" target="_blank">久久久伊人欧美</a>| <a href="http://luobu520.com" target="_blank">在线精品亚洲</a>| <a href="http://226600b.com" target="_blank">亚洲国产视频a</a>| <a href="http://7ccdd.com" target="_blank">欧美日韩亚洲天堂</a>| <a href="http://11b29.com" target="_blank">欧美精品在线一区二区</a>| <a href="http://26cs.com" target="_blank">在线国产亚洲欧美</a>| <a href="http://qdpetlove.com" target="_blank">91久久国产综合久久</a>| <a href="http://152mu.com" target="_blank">国产精品播放</a>| <a href="http://tk99444.com" target="_blank">久久综合九色综合久99</a>| <a href="http://maokk77.com" target="_blank">欧美大香线蕉线伊人久久国产精品</a>| <a href="http://popowq.com" target="_blank">亚洲全黄一级网站</a>| <a href="http://by4425.com" target="_blank">亚洲国产精品成人va在线观看</a>| <a href="http://ww323.com" target="_blank">亚洲人在线视频</a>| <a href="http://xxtv123.com" target="_blank">国模精品一区二区三区色天香</a>| <a href="http://017492.com" target="_blank">亚洲黄色成人</a>| <a href="http://486be.com" target="_blank">国产一区二区精品</a>| <a href="http://xhtd688.com" target="_blank">亚洲视频大全</a>| <a href="http://sdsptl.com" target="_blank">亚洲高清视频的网址</a>| <a href="http://9a9u.com" target="_blank">午夜精品久久久久久久蜜桃app</a>| <a href="http://6767673.com" target="_blank">亚洲日本中文字幕区</a>| <a href="http://www-xj788.com" target="_blank">亚洲私人影院在线观看</a>| <a href="http://330310c.com" target="_blank">亚洲精品日韩综合观看成人91</a>| <a href="http://y8e8.com" target="_blank">亚洲尤物在线视频观看</a>| <a href="http://www-116036.com" target="_blank">日韩视频免费在线</a>| <a href="http://gzhachi.com" target="_blank">久久婷婷国产综合精品青草</a>| <a href="http://www333444123.com" target="_blank">午夜久久tv</a>| <a href="http://xingmaipet.com" target="_blank">欧美日韩国产另类不卡</a>| <a href="http://9885888.com" target="_blank">亚洲美洲欧洲综合国产一区</a>| <a href="http://4322333.com" target="_blank">亚洲精品一区二区三区婷婷月 </a>| <a href="http://seanzhau.com" target="_blank">亚洲精品乱码久久久久久黑人 </a>| <a href="http://26cs.com" target="_blank">91久久黄色</a>| <a href="http://340996.com" target="_blank">在线免费不卡视频</a>| <a href="http://954k.com" target="_blank">免费日韩av</a>| <a href="http://628155.com" target="_blank">亚洲毛片一区二区</a>| <a href="http://777177c.com" target="_blank">亚洲男人av电影</a>| <a href="http://musicshq.com" target="_blank">国产视频精品网</a>| <a href="http://3451215.com" target="_blank">午夜日韩福利</a>| <a href="http://436212.com" target="_blank">另类综合日韩欧美亚洲</a>| <a href="http://www-77663.com" target="_blank">国产婷婷色综合av蜜臀av</a>| <a href="http://8484vivo.com" target="_blank">久久精品亚洲精品</a>| <a href="http://59812mh.com" target="_blank">最新国产成人在线观看</a>| <a href="http://teloregen.com" target="_blank">日韩午夜激情av</a>| <a href="http://017455.com" target="_blank">欧美日韩在线播放一区二区</a>| <a href="http://jxchunlong.com" target="_blank">一区二区三区精品在线</a>| <a href="http://yiqipapa8.com" target="_blank">久久久久久久久久久久久久一区</a>| <a href="http://nebnb89.com" target="_blank">国产精品三级视频</a>| <a href="http://tk99444.com" target="_blank">欧美亚洲网站</a>| <a href="http://www-493049.com" target="_blank">在线欧美小视频</a>| <a href="http://rxbbei.com" target="_blank">欧美日韩国产美</a>| <a href="http://ylsnuha.com" target="_blank">欧美在线一级视频</a>| <a href="http://845821.com" target="_blank">亚洲视频在线看</a>| <a href="http://cp50088.com" target="_blank">欧美高潮视频</a>| <a href="http://d77dd.com" target="_blank">午夜日本精品</a>| <a href="http://my17677.com" target="_blank">一区二区三区成人</a>| <a href="http://cl6m.com" target="_blank">在线精品福利</a>| <a href="http://ddixx.com" target="_blank">国产亚洲成精品久久</a>| <a href="http://lovehefei.com" target="_blank">免费日韩成人</a>| <a href="http://wwmm9.com" target="_blank">蜜臀久久99精品久久久画质超高清</a>| <a href="http://318823.com" target="_blank">亚洲日韩第九十九页</a>| <a href="http://8410555.com" target="_blank">美女国产一区</a>| <a href="http://www-988900.com" target="_blank">久久久777</a>| <a href="http://9881600.com" target="_blank">久久久久久噜噜噜久久久精品</a>| <a href="http://7755cc.com" target="_blank">午夜精品福利一区二区蜜股av</a>| <a href="http://xinghejiuye.com" target="_blank">国产日韩欧美视频</a>| <a href="http://858185gg.com" target="_blank">欧美性大战久久久久久久</a>| <a href="http://www-699603.com" target="_blank">欧美成人激情视频</a>| <a href="http://nztd20.com" target="_blank">亚洲影院在线观看</a>| <a href="http://223533.com" target="_blank">亚洲欧美日韩国产成人精品影院 </a>| <a href="http://feiniao168.com" target="_blank">久久久福利视频</a>| <a href="http://www-65581.com" target="_blank">欧美亚洲在线播放</a>| <a href="http://lutube666.com" target="_blank">亚洲欧美日韩在线播放</a>| <a href="http://www123720a.com" target="_blank">亚洲自拍16p</a>| <a href="http://ez4444.com" target="_blank">欧美亚洲色图校园春色</a>| <a href="http://sapronlee.com" target="_blank">欧美在线视频导航</a>| <a href="http://fxsdcj.com" target="_blank">久久亚洲综合色</a>| <a href="http://www-87633.com" target="_blank">美女视频黄a大片欧美</a>| <a href="http://qdzhudai.com" target="_blank">久久免费午夜影院</a>| <a href="http://414670.com" target="_blank">亚洲激情在线观看视频免费</a>| <a href="http://223533.com" target="_blank">久久亚洲精品视频</a>| <a href="http://495177.com" target="_blank">欧美aaa级</a>| <a href="http://3644688.com" target="_blank">国产精品99久久不卡二区</a>| <a href="http://123hiba.com" target="_blank">亚洲永久免费</a>| <a href="http://521531.com" target="_blank">久久女同互慰一区二区三区</a>| <a href="http://edtxt.com" target="_blank">美女在线一区二区</a>| <a href="http://259758.com" target="_blank">久久精品网址</a>| <a href="http://6677ch.com" target="_blank">欧美伊人久久大香线蕉综合69</a>| <a href="http://gykfqzgpt.com" target="_blank">国产一区二区日韩精品</a>| <a href="http://jgj230230.com" target="_blank">老司机免费视频一区二区</a>| <a href="http://www31931.com" target="_blank">欧美一区综合</a>| <a href="http://337791.com" target="_blank">久久久精品国产免大香伊</a>| <a href="http://990288.com" target="_blank">久久成人资源</a>| <a href="http://876769.com" target="_blank">美日韩精品视频免费看</a>| <a href="http://305838.com" target="_blank">欧美日韩中文在线观看</a>| <a href="http://bjjxgcsxy.com" target="_blank">欧美日韩精品一区视频</a>| <a href="http://www19898.com" target="_blank">国产在线观看一区</a>| <a href="http://cqrebo.com" target="_blank">一区二区久久久久久</a>| <a href="http://caogb.com" target="_blank">久久精品国产久精国产思思</a>| <a href="http://8558585.com" target="_blank">免费久久99精品国产自在现线</a>| <a href="http://cm1-100.com" target="_blank">欧美国产另类</a>| <a href="http://pppp95.com" target="_blank">亚洲欧美日韩专区</a>| <a href="http://59812mh.com" target="_blank">欧美大秀在线观看</a>| <a href="http://77017w.com" target="_blank">黑人一区二区</a>| <a href="http://862924.com" target="_blank">一本久道综合久久精品</a>| <a href="http://wg246.com" target="_blank">久久久之久亚州精品露出</a>| <a href="http://bandycup.com" target="_blank">一区二区三区四区国产</a>| <a href="http://by2565.com" target="_blank">欧美+亚洲+精品+三区</a>| <a href="http://jivbus.com" target="_blank">国产精品区免费视频</a>| <a href="http://251aaa.com" target="_blank">在线视频你懂得一区</a>| <a href="http://www-662553.com" target="_blank">亚洲国产精品v</a>| <a href="http://6673328.com" target="_blank">久久久久久久97</a>| <a href="http://4123123.com" target="_blank">永久555www成人免费</a>| <a href="http://maoming365.com" target="_blank">久久精品国产综合</a>| <a href="http://eeii33.com" target="_blank">亚洲一区中文字幕在线观看</a>| <a href="http://airsixth.com" target="_blank">欧美久久久久中文字幕</a>| <a href="http://xsjj10.com" target="_blank">国内精品视频一区</a>| <a href="http://sdmsjd.com" target="_blank">老妇喷水一区二区三区</a>| <a href="http://www-35777.com" target="_blank">欧美成年人视频网站欧美</a>| <a href="http://www-800778.com" target="_blank">又紧又大又爽精品一区二区</a>| <a href="http://edtxt.com" target="_blank">久久久91精品国产一区二区三区 </a>| <a href="http://5773000.com" target="_blank">亚洲男人影院</a>| <a href="http://jiujiuri8.com" target="_blank">国产精品qvod</a>| <a href="http://r6r4.com" target="_blank">亚洲欧美日韩一区二区三区在线观看 </a>| <a href="http://tizenkorea.com" target="_blank">亚洲激情av在线</a>| <a href="http://holotu.com" target="_blank">欧美激情亚洲自拍</a>| <a href="http://8888590.com" target="_blank">欧美日韩亚洲系列</a>| <a href="http://481323.com" target="_blank">欧美一区二区三区四区在线观看 </a>| <a href="http://域名" target="_blank">欧美一站二站</a>| <a href="http://www-477499.com" target="_blank">久久乐国产精品</a>| <a href="http://lzklpc.com" target="_blank">亚洲视频一区</a>| <a href="http://www17bxbx.com" target="_blank">蜜臀91精品一区二区三区</a>| <a href="http://www-111111.com" target="_blank">亚洲三级色网</a>| <a href="http://trhht.com" target="_blank">久久成人综合视频</a>| <a href="http://8xn66w.com" target="_blank">日韩午夜剧场</a>| <a href="http://teloregen.com" target="_blank">久久99在线观看</a>| <a href="http://wwwq4yy.com" target="_blank">亚洲午夜精品国产</a>| <a href="http://jdss777.com" target="_blank">久久久夜夜夜</a>| <a href="http://ywy99.com" target="_blank">久久精品国产亚洲一区二区三区</a>| <a href="http://5gn4y.com" target="_blank">欧美一区日韩一区</a>| <a href="http://663747.com" target="_blank">亚洲一级影院</a>| <a href="http://xianqyd.com" target="_blank">欧美精品日韩一本</a>| <a href="http://3344xo.com" target="_blank">免费成人性网站</a>| <a href="http://710195.com" target="_blank">国产精品制服诱惑</a>| <a href="http://by1473.com" target="_blank">亚洲一区二区欧美</a>| <a href="http://apap77.com" target="_blank">亚洲一区久久久</a>| <a href="http://13789a.com" target="_blank">欧美性大战久久久久久久蜜臀</a>| <a href="http://cca22.com" target="_blank">米奇777在线欧美播放</a>| <a href="http://621767.com" target="_blank">国模大胆一区二区三区</a>| <a href="http://2061851.com" target="_blank">欧美在线高清</a>| <a href="http://nebnb89.com" target="_blank">久久精品在线观看</a>| <a href="http://anxingou365.com" target="_blank">国产综合亚洲精品一区二</a>| <a href="http://ycpeixun.com" target="_blank">午夜精品国产更新</a>| <a href="http://wanmajc.com" target="_blank">欧美在线不卡</a>| <a href="http://119552.com" target="_blank">精品动漫3d一区二区三区</a>| <a href="http://300644.com" target="_blank">欧美专区18</a>| <a href="http://jiyixitong.com" target="_blank">亚洲电影免费在线 </a>| <a href="http://wwwavtb2049.com" target="_blank">嫩草成人www欧美</a>| <a href="http://7777977.com" target="_blank">91久久精品国产91性色tv</a>| <a href="http://cmtqd.com" target="_blank">久久亚洲精品一区</a>| <a href="http://xiaofan123.com" target="_blank">欧美激情中文字幕一区二区</a>| <a href="http://gs-qintai.com" target="_blank">亚洲第一福利社区</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>