锘??xml version="1.0" encoding="utf-8" standalone="yes"?>国产日韩欧美一区二区,亚洲精品视频在线观看免费,99精品国产高清一区二区http://www.shnenglu.com/mybios/category/3029.html娓告垙寮鍙?C++ Cocos2d-x OpenGL DirectX 鏁板 璁$畻鏈哄浘褰㈠ SQL Server <BR> <BR>zh-cnSun, 17 Jul 2016 21:45:47 GMTSun, 17 Jul 2016 21:45:47 GMT60鍏充簬CEGUI鐨凷tring鐨勮皟璇曢棶棰?/title><link>http://www.shnenglu.com/mybios/archive/2007/07/29/28914.html</link><dc:creator>鏉庨敠淇?mybios)</dc:creator><author>鏉庨敠淇?mybios)</author><pubDate>Sun, 29 Jul 2007 02:17:00 GMT</pubDate><guid>http://www.shnenglu.com/mybios/archive/2007/07/29/28914.html</guid><wfw:comment>http://www.shnenglu.com/mybios/comments/28914.html</wfw:comment><comments>http://www.shnenglu.com/mybios/archive/2007/07/29/28914.html#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://www.shnenglu.com/mybios/comments/commentRss/28914.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/mybios/services/trackbacks/28914.html</trackback:ping><description><![CDATA[CEGUI鐨凷tring涓嶆槸std::string鎴杝td::wstring錛岃屾槸鑷繁瀹炵幇鐨勪竴涓瓧絎︿覆綾伙紝浠栫殑鍔熻兘璺焥td鐨剆tring寰堟帴榪戙?br>浣嗘槸錛屼粬鏀寔unicode錛屽唴閮ㄥ瓨鍌ㄦ槸浣跨敤utf32緙栫爜瑙勮寖鏉ュ瓨鍌╱nicode瀛楃錛屼篃灝辨槸璇?nbsp;typedef  uint32 utf32; utf32*  d_buffer;鐢ㄨ繖涓?2浣嶆棤絎﹀彿鏁村瀷鐨勬暟緇勬潵淇濆瓨unicode瀛楃涓層備紭鐐規(guī)槸鏄捐屾槗瑙佺殑錛屽氨鏄笘鐣屼笂鎵鏈夊瓧絎﹂兘鍙互鍖呭泭榪涘幓錛屾瘯绔熸槸32浣嶅晩錛佷絾鏄紝緙虹偣涔熷嚭鏉ヤ簡錛屾湁涓ょ偣錛?br>絎竴銆佸唴瀛樺崰鐢ㄨ繃澶氾紝涓涓瓧絎﹀氨瑕佸崰4涓瓧鑺傦紝涔熷お嫻垂浜嗙偣錛?br>絎簩銆佽皟璇曚笉鏂逛究錛岀敱浜嶸S2005鐨勮皟璇曠獥鍙e彧鏀寔ansi鍜寀tf16鐨勬牸寮忥紝鎵浠ワ紝CEGUI鐨凷tring鍦ㄨ皟璇曞櫒涓彧鑳界湅鍒頒竴鍫嗘暟瀛楁暟緇勶紝鑰岀湅涓嶅埌瀛楃錛岃繖鏄緢閮侀椃鐨勶紝姣忔瑕佹煡鐪嬮兘瑕佺炕鍒板唴瀛橀偅閲岀湅錛岃屼笖榪樹竴鍫嗕貢鐮侊紝瓚呯駭楹葷儲銆?br><br>瑙e喅鍔炴硶錛氫慨鏀筍tring綾伙紝浣跨敤utf16鏉ヤ唬鏇緾EGUI鐨剈tf32銆?br>浼樼偣錛?br>瑙e喅浜嗗唴瀛樺崰鐢ㄨ繃澶氱殑闂錛屼竴涓瓧絎﹀彧瑕?涓瓧鑺傚氨鍙互浜嗭紱<br>瑙e喅浜嗚皟璇曢棶棰橈紝VS2005鐩存帴鏀寔utf16鐨勬樉紺恒?br>緙虹偣錛?br>鍙兘涓嶆敮鎸佸叏涓栫晫鐨勫瓧絎︼紝鍥犱負utf16涓嶈兘琛ㄧず瓚呰繃16浣嶇殑瀛楃錛屼絾鏄紝瀵逛簬澶у鏁板浗瀹剁殑瀛楃鏉ヨ錛屽凡緇忚凍澶熶簡錛屾瘯绔焪indows2000/xp涔熸槸鍩轟簬utf16緙栫爜鐨勩?br><br>鐒跺悗錛屼笅闈㈡槸淇敼鍚庣殑瀛楃涓茬被錛?a title=CEGUIString href="http://www.shnenglu.com/Files/mybios/CEGUIString.rar">CEGUIString</a><br> <img src ="http://www.shnenglu.com/mybios/aggbug/28914.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/mybios/" target="_blank">鏉庨敠淇?mybios)</a> 2007-07-29 10:17 <a href="http://www.shnenglu.com/mybios/archive/2007/07/29/28914.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍦╳indows涓嬩嬌鐢╬atch宸ュ叿鏇存柊婧愮爜http://www.shnenglu.com/mybios/archive/2007/07/28/28900.html鏉庨敠淇?mybios)鏉庨敠淇?mybios)Sat, 28 Jul 2007 09:09:00 GMThttp://www.shnenglu.com/mybios/archive/2007/07/28/28900.htmlhttp://www.shnenglu.com/mybios/comments/28900.htmlhttp://www.shnenglu.com/mybios/archive/2007/07/28/28900.html#Feedback4http://www.shnenglu.com/mybios/comments/commentRss/28900.htmlhttp://www.shnenglu.com/mybios/services/trackbacks/28900.html浣嗘槸錛屾垜浠笅杞藉埌鐨刾atch鏂囦歡錛岃矊浼兼槸linux/unix鐨刣iff宸ュ叿鐢熸垚鐨勶紝瑕佺敤linux/unix鐨刾atch宸ュ叿鎵嶈兘鎶婅ˉ涓佹枃浠舵洿鏂板埌婧愮爜涓?br />鍚庢潵錛屾垜鍙戠幇浜嗕釜windows涓嬪彲浠ヤ嬌鐢ㄧ殑patch宸ュ叿錛岀綉鍧濡備笅錛?a >http://gnuwin32.sourceforge.net/packages/patch.htm
浣跨敤鏄緢綆鍗曠殑錛岀敤鍛戒護琛屾柟寮忔墽琛岋細
patch 婧愭枃浠?琛ヤ竵鏂囦歡

渚嬪鎴戜滑鏈夋簮鏂囦歡test.cpp錛屼笅杞戒簡涓ˉ涓佹枃浠秚est.patch錛岄偅涔堟墽琛宲atch test.cpp test.patch錛屽氨浼氳嚜鍔ㄦ妸patch閲岀殑鍐呭鏇存柊鍒皌est.cpp涓幓浜嗐?br />
PS錛歝ygwin璨屼技涔熸湁榪欎釜宸ュ叿鍚с傘備互鍓嶇湅榪囬噷闈㈠ソ鍍忚繕鏈塪iff宸ュ叿錛屽彲浠ョ敓鎴恜atch鏂囦歡錛屽懙鍛點?br />

濡傛灉鏈枃瀵逛綘鐨勫紑鍙戞湁鎵甯姪錛屽茍涓斾綘鎵嬪ご鎭板ソ鏈夐浂閽便?/p>

涓嶅鎵撹祻鎴戜竴鏉挅鍟★紝榧撳姳鎴戠戶緇垎浜紭縐鐨勬枃绔犮?br />





鏉庨敠淇?mybios) 2007-07-28 17:09 鍙戣〃璇勮
]]>
鍏充簬GOOF鐨刡ug闂http://www.shnenglu.com/mybios/archive/2007/07/16/28157.html鏉庨敠淇?mybios)鏉庨敠淇?mybios)Mon, 16 Jul 2007 14:53:00 GMThttp://www.shnenglu.com/mybios/archive/2007/07/16/28157.htmlhttp://www.shnenglu.com/mybios/comments/28157.htmlhttp://www.shnenglu.com/mybios/archive/2007/07/16/28157.html#Feedback10http://www.shnenglu.com/mybios/comments/commentRss/28157.htmlhttp://www.shnenglu.com/mybios/services/trackbacks/28157.html浣跨敤浜嗗嚑澶〨OOF錛屽彂鐜頒粬瀛樺湪寰堝bug鍟婏紝浠涔堢紦瀛樻孩鍑猴紝鏁扮粍瓚婄晫涔嬬被鐨勩傘傚緢鏄庢樉榪欎釜妗嗘灦娌℃湁鐪熸鐢ㄥ湪涓涓」鐩笂鐨勩傛垜鍒椾婦鍑犱釜澶ч棶棰樺惂銆傚ソ璁╁ぇ瀹跺埆鍒板紕板銆?br />bool EnvironmentGameSystem::save(DataElementPtr element)榪欎釜鍑芥暟娌℃湁瀹炵幇錛屾墍浠ユ棤娉曚繚瀛樼幆澧冧俊鎭?br />
榪樻湁
 void GridPartition::enumerateConnectedPartitions(vector<CorePartition*>& connected)
 {
  //get surrounding grid cells within a certain radius
  float loadRadius = mGridPartitionMgr->getGridCellLoadRadius();

  //enumerate partitions
  vector<CorePartition*> partitions;
  mGridPartitionMgr->enumeratePartitions(partitions);

  //iterate through and check distance
  for(vector<CorePartition*>::iterator itr = partitions.begin(); itr != partitions.end(); ++itr)
  {
   float distance = Vector3(getWorldPosition() - (*itr)->getWorldPosition()).length();
   // add by 鏉庨敠淇?2007-7-16
   // 涓嶈榪斿洖鑷繁浣滀負閭誨眳錛屼細浜х敓bug
   if(distance < loadRadius && *itr != this)
    connected.push_back(*itr);
  }
 }

鍐嶇粰鍑轟竴涓瘮杈冧弗閲嶇殑bug
GOOFTranslationManipulator.h涓殑
  // add by 鏉庨敠淇?2007-7-12
  // 涓嶈鐢ㄩ瓟鏈暟錛屾悶鍒扮紦瀛樻孩鍑?br />  SceneNode* mNode[AT_LAST];
  Entity* mEnt[AT_LAST];
  Entity* mConeEnt[AT_LAST];
  CollisionShapePtr mCol[AT_LAST];
  AxisManipulatorHandle* mHandle[AT_LAST];

鍙﹀錛孋orePartition涓殑setSkyboxMaterial銆乻etGlobalAmbient涔嬬被鐨勪唬鐮佽矊浼兼病鐢ㄣ傚噯澶囧純涔嬨?br />


    // add by 鏉庨敠淇?2007-7-16
    // 榪欎釜綆楁硶鏆傛椂鏈夐棶棰橈紝鍏堝睆钄斤紝浠ュ悗鍐嶆參鎱㈣В鍐?br />    //disable static geometry until it is fixed
    if(false)// getStaticGeometryRule() == SGR_ALWAYS || (getStaticGeometryRule() == SGR_WHEN_NOT_PROX_IMMEDIATE && getPartition()->getProximity() != CorePartition::PROX_IMMEDIATE))
    {
     willConvertToStaticGeometry = true;
     getPartition()->addObjectToConvertToStaticGeometry(this);
    }

鏉庨敠淇?mybios) 2007-07-16 22:53 鍙戣〃璇勮
]]>
VS2003涓嬬紪璇慦indows璁$畻鍣?/title><link>http://www.shnenglu.com/mybios/archive/2006/12/02/15889.html</link><dc:creator>鏉庨敠淇?mybios)</dc:creator><author>鏉庨敠淇?mybios)</author><pubDate>Sat, 02 Dec 2006 08:10:00 GMT</pubDate><guid>http://www.shnenglu.com/mybios/archive/2006/12/02/15889.html</guid><wfw:comment>http://www.shnenglu.com/mybios/comments/15889.html</wfw:comment><comments>http://www.shnenglu.com/mybios/archive/2006/12/02/15889.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.shnenglu.com/mybios/comments/commentRss/15889.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/mybios/services/trackbacks/15889.html</trackback:ping><description><![CDATA[宸ョ▼宸茬粡鏀句笂錛?a href="http://www.shnenglu.com/Files/mybios/calc.rar">涓嬭澆鍥炲幓緙栬瘧灝辮</a>錛屾斁涓創(chuàng)鍥撅細<br /><br /><img height="309" alt="Calc.JPG" src="http://www.shnenglu.com/images/cppblog_com/mybios/ArticlePics/Calc.JPG" width="480" border="0" /><img src ="http://www.shnenglu.com/mybios/aggbug/15889.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/mybios/" target="_blank">鏉庨敠淇?mybios)</a> 2006-12-02 16:10 <a href="http://www.shnenglu.com/mybios/archive/2006/12/02/15889.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>浠婂ぉ閬囧埌浜嗛儊闂風殑C鍑芥暟錛屽垢濂介亣鍒伴珮鎵嬪府蹇欒В鍐充簡http://www.shnenglu.com/mybios/archive/2006/11/30/15817.html鏉庨敠淇?mybios)鏉庨敠淇?mybios)Thu, 30 Nov 2006 08:30:00 GMThttp://www.shnenglu.com/mybios/archive/2006/11/30/15817.htmlhttp://www.shnenglu.com/mybios/comments/15817.htmlhttp://www.shnenglu.com/mybios/archive/2006/11/30/15817.html#Feedback0http://www.shnenglu.com/mybios/comments/commentRss/15817.htmlhttp://www.shnenglu.com/mybios/services/trackbacks/15817.html
char sChar[MAX_PATH];
const WCHAR wChar[] = L"鎴戠殑鏈嬪弸";
// 鎶妛Char榪欎釜Unicode瀛楃涓茶漿鎹㈡垚ANSI瀛楃涓詫紝淇濆瓨鍒皊Char錛屽茍涓旇繑鍥濧NSI鐨勫瓧絎︿覆澶у皬錛屽鏋滃け璐ワ紝鍒欒繑鍥?1
聽 wcstombs(sChar, wChar, MAX_PATH);

榪欐牱鏄繍琛屼笉榪囦笉鍘葷殑錛屾繪槸榪斿洖-1銆?br />
鍚庢潵緇忎漢鎻愰啋錛岄渶瑕佸湪璋冪敤wcstombs涔嬪墠瑕佸厛璁劇疆浠g爜欏碉細

char sChar[MAX_PATH];
const WCHAR wChar[] = L"鎴戠殑鏈嬪弸";

// 璁劇疆浠g爜欏典負榛樿浠g爜欏?br />聽 _tsetlocale(LC_ALL,_T(""));
// 鎶妛Char榪欎釜Unicode瀛楃涓茶漿鎹㈡垚ANSI瀛楃涓詫紝淇濆瓨鍒皊Char錛屽茍涓旇繑鍥濧NSI鐨勫瓧絎︿覆澶у皬錛屽鏋滃け璐ワ紝鍒欒繑鍥?1
聽 wcstombs(sChar, wChar, MAX_PATH);


榪欐牱灝卞彲浠ヤ簡錛佷笉鐢ㄨ皟鐢ㄧ儲浜虹殑WideCharToMultiByte錛佸濂藉晩錛?br />鐩稿弽鐨勫嚱鏁幫細mbstowcs錛屽彲浠ヤ粠ANSI杞崲鍒癠nicode

鏉庨敠淇?mybios) 2006-11-30 16:30 鍙戣〃璇勮
]]>
銆愯漿璐淬慍璇█楂樻晥緙栫▼鐨勫嚑鎷?/title><link>http://www.shnenglu.com/mybios/archive/2006/11/21/15514.html</link><dc:creator>鏉庨敠淇?mybios)</dc:creator><author>鏉庨敠淇?mybios)</author><pubDate>Tue, 21 Nov 2006 09:26:00 GMT</pubDate><guid>http://www.shnenglu.com/mybios/archive/2006/11/21/15514.html</guid><wfw:comment>http://www.shnenglu.com/mybios/comments/15514.html</wfw:comment><comments>http://www.shnenglu.com/mybios/archive/2006/11/21/15514.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.shnenglu.com/mybios/comments/commentRss/15514.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/mybios/services/trackbacks/15514.html</trackback:ping><description><![CDATA[寮曡█錛?br />銆銆緙栧啓楂樻晥綆媧佺殑C璇█浠g爜錛屾槸璁稿杞歡宸ョ▼甯堣拷姹傜殑鐩爣銆傛湰鏂囧氨宸ヤ綔涓殑涓浜涗綋浼氬拰緇忛獙鍋氱浉鍏崇殑闃愯堪錛屼笉瀵圭殑鍦版柟璇峰悇浣嶆寚鏁欍?br /><br />絎?鎷涳細浠ョ┖闂存崲鏃墮棿<br /><br />銆銆璁$畻鏈虹▼搴忎腑鏈澶х殑鐭涚浘鏄┖闂村拰鏃墮棿鐨勭煕鐩撅紝閭d箞錛屼粠榪欎釜瑙掑害鍑哄彂閫嗗悜鎬濈淮鏉ヨ冭檻紼嬪簭鐨勬晥鐜囬棶棰橈紝鎴戜滑灝辨湁浜嗚В鍐抽棶棰樼殑絎?鎷涒斺斾互絀洪棿鎹㈡椂闂淬?br />渚嬪錛氬瓧絎︿覆鐨勮祴鍊箋?br />鏂規(guī)硶A錛岄氬父鐨勫姙娉曪細<br />#define LEN 32<br />char string1 [LEN];<br />memset (string1,0,LEN);<br />strcpy (string1,鈥淭his is a example!!鈥濓級;<br />鏂規(guī)硶B錛?br />const char string2[LEN] =鈥淭his is a example!鈥?<br />char * cp;<br />cp = string2 ;<br />(浣跨敤鐨勬椂鍊欏彲浠ョ洿鎺ョ敤鎸囬拡鏉ユ搷浣溿?<br /><br />銆銆浠庝笂闈㈢殑渚嬪瓙鍙互鐪嬪嚭錛孉鍜孊鐨勬晥鐜囨槸涓嶈兘姣旂殑銆傚湪鍚屾牱鐨勫瓨鍌ㄧ┖闂翠笅錛孊鐩存帴浣跨敤鎸囬拡灝卞彲浠ユ搷浣滀簡錛岃孉闇瑕佽皟鐢ㄤ袱涓瓧絎﹀嚱鏁版墠鑳藉畬鎴愩侭鐨勭己鐐瑰湪浜庣伒媧繪ф病鏈堿濂姐傚湪闇瑕侀綣佹洿鏀逛竴涓瓧絎︿覆鍐呭鐨勬椂鍊欙紝A鍏鋒湁鏇村ソ鐨勭伒媧繪э紱濡傛灉閲囩敤鏂規(guī)硶B錛屽垯闇瑕侀瀛樿澶氬瓧絎︿覆錛岃櫧鐒跺崰鐢ㄤ簡澶ч噺鐨勫唴瀛橈紝浣嗘槸鑾峰緱浜嗙▼搴忔墽琛岀殑楂樻晥鐜囥?br /><br />銆銆濡傛灉緋葷粺鐨勫疄鏃舵ц姹傚緢楂橈紝鍐呭瓨榪樻湁涓浜涳紝閭f垜鎺ㄨ崘浣犱嬌鐢ㄨ鎷涙暟銆?br /><br />銆銆璇ユ嫑鏁扮殑鍙樻嫑鈥斺斾嬌鐢ㄥ畯鍑芥暟鑰屼笉鏄嚱鏁般備婦渚嬪涓嬶細<br />鏂規(guī)硶C錛?br />#define bwMCDR2_ADDRESS 4<br />#define bsMCDR2_ADDRESS 17<br />int BIT_MASK(int __bf)<br />{<br />return ((1U << (bw ## __bf)) - 1) << (bs ## __bf);<br />}<br />void SET_BITS(int __dst, int __bf, int __val)<br />{<br />__dst = ((__dst) & ~(BIT_MASK(__bf))) | \<br />(((__val) << (bs ## __bf)) & (BIT_MASK(__bf))))<br />}<br /><br />SET_BITS(MCDR2, MCDR2_ADDRESS, RegisterNumber);<br />鏂規(guī)硶D錛?br />#define bwMCDR2_ADDRESS 4<br />#define bsMCDR2_ADDRESS 17<br />#define bmMCDR2_ADDRESS BIT_MASK(MCDR2_ADDRESS)<br />#define BIT_MASK(__bf) (((1U << (bw ## __bf)) - 1) << (bs ## __bf))<br />#define SET_BITS(__dst, __bf, __val) \<br />((__dst) = ((__dst) & ~(BIT_MASK(__bf))) | \<br />(((__val) << (bs ## __bf)) & (BIT_MASK(__bf))))<br /><br />SET_BITS(MCDR2, MCDR2_ADDRESS, RegisterNumber);<br /><br />銆銆鍑芥暟鍜屽畯鍑芥暟鐨勫尯鍒氨鍦ㄤ簬錛屽畯鍑芥暟鍗犵敤浜嗗ぇ閲忕殑絀洪棿錛岃屽嚱鏁板崰鐢ㄤ簡鏃墮棿銆傚ぇ瀹惰鐭ラ亾鐨勬槸錛屽嚱鏁拌皟鐢ㄦ槸瑕佷嬌鐢ㄧ郴緇熺殑鏍堟潵淇濆瓨鏁版嵁鐨勶紝濡傛灉緙栬瘧鍣ㄩ噷鏈夋爤媯鏌ラ夐」錛屼竴鑸湪鍑芥暟鐨勫ご浼氬祵鍏ヤ竴浜涙眹緙栬鍙ュ褰撳墠鏍堣繘琛屾鏌ワ紱鍚屾椂錛孋PU涔熻鍦ㄥ嚱鏁拌皟鐢ㄦ椂淇濆瓨鍜屾仮澶嶅綋鍓嶇殑鐜板満錛岃繘琛屽帇鏍堝拰寮規(guī)爤鎿嶄綔錛屾墍浠ワ紝鍑芥暟璋冪敤闇瑕佷竴浜汣PU鏃墮棿銆傝屽畯鍑芥暟涓嶅瓨鍦ㄨ繖涓棶棰樸傚畯鍑芥暟浠呬粎浣滀負棰勫厛鍐欏ソ鐨勪唬鐮佸祵鍏ュ埌褰撳墠紼嬪簭錛屼笉浼氫駭鐢熷嚱鏁拌皟鐢紝鎵浠ヤ粎浠呮槸鍗犵敤浜嗙┖闂達紝鍦ㄩ綣佽皟鐢ㄥ悓涓涓畯鍑芥暟鐨勬椂鍊欙紝璇ョ幇璞″挨鍏剁獊鍑恒?br /><br />銆銆D鏂規(guī)硶鏄垜鐪嬪埌鐨勬渶濂界殑緗綅鎿嶄綔鍑芥暟錛屾槸ARM鍏徃婧愮爜鐨勪竴閮ㄥ垎錛屽湪鐭煭鐨勪笁琛屽唴瀹炵幇浜嗗緢澶氬姛鑳斤紝鍑犱箮娑電洊浜嗘墍鏈夌殑浣嶆搷浣滃姛鑳姐侰鏂規(guī)硶鏄叾鍙樹綋錛屽叾涓粙鍛寵繕闇澶у浠旂粏浣撲細銆?br /><br />絎?鎷涳細鏁板鏂規(guī)硶瑙e喅闂<br /><br />銆銆鐜板湪鎴戜滑婕旂粠楂樻晥C璇█緙栧啓鐨勭浜屾嫑鈥斺旈噰鐢ㄦ暟瀛︽柟娉曟潵瑙e喅闂銆?br /><br />銆銆鏁板鏄綆楁満涔嬫瘝錛屾病鏈夋暟瀛︾殑渚濇嵁鍜屽熀紜錛屽氨娌℃湁璁$畻鏈虹殑鍙戝睍錛屾墍浠ュ湪緙栧啓紼嬪簭鐨勬椂鍊欙紝閲囩敤涓浜涙暟瀛︽柟娉曚細瀵圭▼搴忕殑鎵ц鏁堢巼鏈夋暟閲忕駭鐨勬彁楂樸?br />涓句緥濡備笅錛屾眰 1~100鐨勫拰銆?br />鏂規(guī)硶E<br />int I , j;<br />for (I = 1 ;I<=100; I ++錛墈<br />j += I;<br />}<br />鏂規(guī)硶F<br />int I;<br />I = (100 * (1+100)) / 2<br /><br />銆銆榪欎釜渚嬪瓙鏄垜鍗拌薄鏈娣辯殑涓涓暟瀛︾敤渚嬶紝鏄垜鐨勮綆楁満鍚挋鑰佸笀鑰冩垜鐨勩傚綋鏃舵垜鍙湁灝忓涓夊勾綰э紝鍙儨鎴戝綋鏃朵笉鐭ラ亾鐢ㄥ叕寮?N脳錛圢+1錛? 2 鏉ヨВ鍐寵繖涓棶棰樸傛柟娉旹寰幆浜?00嬈℃墠瑙e喅闂錛屼篃灝辨槸璇存渶灝戠敤浜?00涓祴鍊鹼紝100涓垽鏂紝200涓姞娉曪紙I鍜宩錛夛紱鑰屾柟娉旻浠呬粎鐢ㄤ簡1涓姞娉曪紝1 嬈′箻娉曪紝1嬈¢櫎娉曘傛晥鏋滆嚜鐒朵笉璦鑰屽柣銆傛墍浠ワ紝鐜板湪鎴戝湪緙栫▼搴忕殑鏃跺欙紝鏇村鐨勬槸鍔ㄨ剳絳嬫壘瑙勫緥錛屾渶澶ч檺搴﹀湴鍙戞尌鏁板鐨勫▉鍔涙潵鎻愰珮紼嬪簭榪愯鐨勬晥鐜囥?br /><br />絎?鎷涳細浣跨敤浣嶆搷浣?br /><br />銆銆瀹炵幇楂樻晥鐨凜璇█緙栧啓鐨勭涓夋嫑鈥斺斾嬌鐢ㄤ綅鎿嶄綔錛屽噺灝戦櫎娉曞拰鍙栨ā鐨勮繍綆椼?br /><br />銆銆鍦ㄨ綆楁満紼嬪簭涓紝鏁版嵁鐨勪綅鏄彲浠ユ搷浣滅殑鏈灝忔暟鎹崟浣嶏紝鐞嗚涓婂彲浠ョ敤鈥滀綅榪愮畻鈥濇潵瀹屾垚鎵鏈夌殑榪愮畻鍜屾搷浣溿備竴鑸殑浣嶆搷浣滄槸鐢ㄦ潵鎺у埗紜歡鐨勶紝鎴栬呭仛鏁版嵁鍙樻崲浣跨敤錛屼絾鏄紝鐏墊椿鐨勪綅鎿嶄綔鍙互鏈夋晥鍦版彁楂樼▼搴忚繍琛岀殑鏁堢巼銆備婦渚嬪涓嬶細<br />鏂規(guī)硶G<br />int I,J;<br />I = 257 /8;<br />J = 456 % 32;<br />鏂規(guī)硶H<br />int I,J;<br />I = 257 >>3;<br />J = 456 - (456 >> 4 << 4);<br /><br />銆銆鍦ㄥ瓧闈笂濂藉儚H姣擥楹葷儲浜嗗ソ澶氾紝浣嗘槸錛屼粩緇嗘煡鐪嬩駭鐢熺殑姹囩紪浠g爜灝變細鏄庣櫧錛屾柟娉旼璋冪敤浜嗗熀鏈殑鍙栨ā鍑芥暟鍜岄櫎娉曞嚱鏁幫紝鏃㈡湁鍑芥暟璋冪敤錛岃繕鏈夊緢澶氭眹緙栦唬鐮佸拰瀵勫瓨鍣ㄥ弬涓庤繍綆楋紱鑰屾柟娉旽鍒欎粎浠呮槸鍑犲彞鐩稿叧鐨勬眹緙栵紝浠g爜鏇寸畝媧侊紝鏁堢巼鏇撮珮銆傚綋鐒訛紝鐢變簬緙栬瘧鍣ㄧ殑涓嶅悓錛屽彲鑳芥晥鐜囩殑宸窛涓嶅ぇ錛屼絾鏄紝浠ユ垜鐩墠閬囧埌鐨凪S C ,ARM C 鏉ョ湅錛屾晥鐜囩殑宸窛榪樻槸涓嶅皬銆傜浉鍏蟲眹緙栦唬鐮佸氨涓嶅湪榪欓噷鍒椾婦浜嗐?br />榪愮敤榪欐嫑闇瑕佹敞鎰忕殑鏄紝鍥犱負CPU鐨勪笉鍚岃屼駭鐢熺殑闂銆傛瘮濡傝錛屽湪PC涓婄敤榪欐嫑緙栧啓鐨勭▼搴忥紝騫跺湪PC涓婅皟璇曢氳繃錛屽湪縐繪鍒頒竴涓?6浣嶆満騫沖彴涓婄殑鏃跺欙紝鍙兘浼氫駭鐢熶唬鐮侀殣鎮(zhèn)c傛墍浠ュ彧鏈夊湪涓瀹氭妧鏈繘闃剁殑鍩虹涓嬫墠鍙互浣跨敤榪欐嫑銆?br /><br />絎?鎷涳細姹囩紪宓屽叆<br /><br />銆銆楂樻晥C璇█緙栫▼鐨勫繀鏉鎶錛岀鍥涙嫑鈥斺斿祵鍏ユ眹緙栥?br /><br />銆銆鈥滃湪鐔熸?zhèn)夋眹缂栬瑷鐨勪漢鐪奸噷錛孋璇█緙栧啓鐨勭▼搴忛兘鏄瀮鍦鋸濄傝繖縐嶈娉曡櫧鐒跺亸嬋浜嗕竴浜涳紝浣嗘槸鍗存湁瀹冪殑閬撶悊銆傛眹緙栬璦鏄晥鐜囨渶楂樼殑璁$畻鏈鴻璦錛屼絾鏄紝涓嶅彲鑳介潬鐫瀹冩潵鍐欎竴涓搷浣滅郴緇熷惂?鎵浠ワ紝涓轟簡鑾峰緱紼嬪簭鐨勯珮鏁堢巼錛屾垜浠彧濂介噰鐢ㄥ彉閫氱殑鏂規(guī)硶 鈥斺斿祵鍏ユ眹緙栵紝娣峰悎緙栫▼銆?br /><br />銆銆涓句緥濡備笅錛屽皢鏁扮粍涓璧嬪肩粰鏁扮粍浜?瑕佹眰姣忎竴瀛楄妭閮界浉絎︺?br />char string1[1024],string2[1024];<br />鏂規(guī)硶I<br />int I;<br />for (I =0 ;I<1024;I++)<br />*(string2 + I) = *(string1 + I)<br />鏂規(guī)硶J<br />#ifdef _PC_<br />int I;<br />for (I =0 ;I<1024;I++)<br />*(string2 + I) = *(string1 + I);<br />#else<br />#ifdef _ARM_<br />__asm<br />{<br />MOV R0,string1<br />MOV R1,string2<br />MOV R2,#0<br />loop:<br />LDMIA R0!, [R3-R11]<br />STMIA R1!, [R3-R11]<br />ADD R2,R2,#8<br />CMP R2, #400<br />BNE loop<br />}<br />#endif<br /><br />銆銆鏂規(guī)硶I鏄渶甯歌鐨勬柟娉曪紝浣跨敤浜?024嬈″驚鐜紱鏂規(guī)硶J鍒欐牴鎹鉤鍙頒笉鍚屽仛浜嗗尯鍒嗭紝鍦ˋRM騫沖彴涓嬶紝鐢ㄥ祵鍏ユ眹緙栦粎鐢?28嬈″驚鐜氨瀹屾垚浜嗗悓鏍風殑鎿嶄綔銆傝繖閲屾湁鏈嬪弸浼氳錛屼負浠涔堜笉鐢ㄦ爣鍑嗙殑鍐呭瓨鎷瘋礉鍑芥暟鍛?榪欐槸鍥犱負鍦ㄦ簮鏁版嵁閲屽彲鑳藉惈鏈夋暟鎹負0鐨勫瓧鑺傦紝榪欐牱鐨勮瘽錛屾爣鍑嗗簱鍑芥暟浼氭彁鍓嶇粨鏉熻屼笉浼氬畬鎴愭垜浠姹傜殑鎿嶄綔銆傝繖涓緥紼嬪吀鍨嬪簲鐢ㄤ簬LCD鏁版嵁鐨勬嫹璐濊繃紼嬨傛牴鎹笉鍚岀殑CPU錛岀啛緇冧嬌鐢ㄧ浉搴旂殑宓屽叆姹囩紪錛屽彲浠ュぇ澶ф彁楂樼▼搴忔墽琛岀殑鏁堢巼銆?br /><br />銆銆铏界劧鏄繀鏉鎶錛屼絾鏄鏋滆交鏄撲嬌鐢ㄤ細浠樺嚭鎯ㄩ噸鐨勪唬浠楓傝繖鏄洜涓猴紝浣跨敤浜嗗祵鍏ユ眹緙栵紝渚塊檺鍒朵簡紼嬪簭鐨勫彲縐繪鎬э紝浣跨▼搴忓湪涓嶅悓騫沖彴縐繪鐨勮繃紼嬩腑錛屽崸铏庤棌榫欙紝闄╄薄鐜敓錛佸悓鏃惰鎷涙暟涔熶笌鐜頒唬杞歡宸ョ▼鐨勬濇兂鐩歌繚鑳岋紝鍙湁鍦ㄨ揩涓嶅緱宸茬殑鎯呭喌涓嬫墠鍙互閲囩敤銆傚垏璁幫紝鍒囪銆?<br /><br /><img src ="http://www.shnenglu.com/mybios/aggbug/15514.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/mybios/" target="_blank">鏉庨敠淇?mybios)</a> 2006-11-21 17:26 <a href="http://www.shnenglu.com/mybios/archive/2006/11/21/15514.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>銆愯漿璐淬戠洿鎺ヨ澆鍏ュ唴瀛樹腑鐨凞LLhttp://www.shnenglu.com/mybios/archive/2006/11/21/15483.html鏉庨敠淇?mybios)鏉庨敠淇?mybios)Mon, 20 Nov 2006 16:45:00 GMThttp://www.shnenglu.com/mybios/archive/2006/11/21/15483.htmlhttp://www.shnenglu.com/mybios/comments/15483.htmlhttp://www.shnenglu.com/mybios/archive/2006/11/21/15483.html#Feedback6http://www.shnenglu.com/mybios/comments/commentRss/15483.htmlhttp://www.shnenglu.com/mybios/services/trackbacks/15483.html浠繪槑姹?/a>

涓嬭澆婧愪唬鐮?/a>

鍓嶈█

銆銆浣犲彲鑳戒笉甯屾湜鍦ㄥ彂甯冪▼搴忔椂闄勫甫涓婁竴涓閮ㄧ殑 DLL錛屽洜涓哄彲鑳戒細鏈変簺鐢ㄦ埛鍦ㄦ棤鎰忎腑鎶?DLL 鍒犻櫎浜嗚岄犳垚 EXE 涓嶈兘姝g‘榪愯錛屼篃鏈夊彲鑳借 DLL 浼氳鍒漢鎷垮幓浣跨敤錛屼篃鏈夊彲鑳斤紝姝?DLL 浼氭垚涓虹牬瑙h呯牬瑙d綘鐨勭▼搴忕殑紿佺牬鍙c傛棤璁哄嚭浜庝綍縐嶅師鍥狅紝濡傛灉浣犳兂鎶婁竴涓?DLL 鍚堝茍鍒頒竴涓?EXE 涓殑璇濓紝鏈枃鍚戜綘浠嬬粛榪欑鏂規(guī)硶銆?


Win32 紼嬪簭璋冪敤 DLL 鐨勬満鍒?/strong>

銆銆 Win32 EXE 鍦ㄨ皟鐢ㄤ竴涓閮?DLL 涓殑鍑芥暟鏃訛紝棣栧厛瑕佽皟鐢?LoadLibary 鍑芥暟鏉ヨ澆鍏ユ DLL 鍒扮▼搴忕殑榪涚▼鍦板潃絀洪棿銆?濡傛灉 LoadLibary 杞藉叆姝?DLL 鎴愬姛錛屽皢榪斿洖涓涓 DLL 鐨勫彞鏌勩?榪欎釜鍙ユ焺瀹為檯涓婂氨鏄 DLL 鍦ㄥ唴瀛樹腑鐨勮搗濮嬪湴鍧銆?鍦ㄨ澆鍏?DLL 鎴愬姛鍚庯紝榪樺繀欏昏皟鐢?GetProcAddress 鍑芥暟鏉ヨ幏鍙栬璋冪敤鐨勫嚱鏁扮殑鍦板潃銆傜劧鍚庡啀鏍規(guī)嵁璇ュ湴鍧鏉ヨ皟鐢ㄨ繖涓嚱鏁般?br />鏍規(guī)嵁涓婅堪鍘熺悊錛屾垜浠彲浠ユ妸涓涓?DLL 浣滀負璧勬簮鏂囦歡鏀懼埌 EXE 鏂囦歡涓紝鍦ㄧ▼搴忚繍琛屾椂錛屽垎閰嶄竴鍧楀唴瀛橈紝鐒跺悗灝嗘璧勬簮澶嶅埗鍒拌鍒嗛厤鐨勫唴瀛樹腑錛屽茍鏍規(guī)嵁璇ュ唴瀛樺湴鍧璁$畻寰楀埌鐩稿叧鐨勫鍑哄嚱鏁板湴鍧錛岀劧鍚庯紝褰撴垜浠渶瑕佽皟鐢ㄦ煇涓鍑芥暟鏃訛紝鍙互鐢ㄨ鍑芥暟鍦ㄥ唴瀛樹腑鐨勫湴鍧鏉ヨ皟鐢ㄥ畠銆?
紼嬪簭瀹炵幇銆?br />銆銆棣栧厛錛屾妸瑕佸悎騫剁殑 DLL 浣滀負璧勬簮鍔犲叆鍒伴」鐩殑璧勬簮鏂囦歡涓紝鐒跺悗鍦ㄧ▼搴忚繍琛屾椂錛屼粠璧勬簮涓澆鍏ヨ璧勬簮錛屼互寰楀埌璇?DLL 鍦ㄥ唴瀛樹腑鐨勪綅緗細
LPVOID sRawDll; // 璧勬簮鏂囦歡鍦ㄥ唴瀛樹腑鐨勫湴鍧 
HRSRC hRes; 
HMODULE hLibrary; 
HGLOBAL hResourceLoaded; 
char lib_name[MAX_PATH]; 
GetModuleFileName(hInstance, lib_name, MAX_PATH ); // 寰楀埌榪愯紼嬪簭鐨勫悕瀛?
hLibrary = LoadLibrary(lib_name);                  // 灝辮薄杞藉叆涓涓?DLL 涓鏍瘋澆鍏ヨ繍琛岀▼搴忓埌鍐呭瓨涓?

if (NULL != hLibrary) 
{
	// 寰楀埌鎸囧畾鐨勮祫婧愭枃浠跺湪鍐呭瓨涓殑浣嶇疆 
	hRes = FindResource(hLibrary, MAKEINTRESOURCE(IDR_DATA1), RT_RCDATA); 
	if (NULL != hRes) 
	{
		// 灝嗚祫婧愭枃浠惰澆鍏ュ唴瀛?
		hResourceLoaded = LoadResource(hLibrary, hRes); 
		if (NULL != hResourceLoaded) 
		{
			// 寰楀埌璧勬簮鏂囦歡澶у皬 
			SizeofResource(hLibrary, hRes); 

			// 閿佸畾璧勬簮浠ュ緱鍒板畠鍦ㄥ唴瀛樹腑鐨勫湴鍧 
			sRawDll = (LPVOID)LockResource(hResourceLoaded); 
		}
	}
	else return 1; 
	FreeLibrary(hLibrary);
}
else return 1; 
鐒跺悗錛屼粠璧勬簮涓澆鍏?DLL 鍒板唴瀛樺嚱鏁?LoadPbDllFromMemory 灝嗚澆鍏?DLL 鍒板唴瀛樹腑錛?璇ュ嚱鏁版湁涓や釜鍙傛暟錛岀涓涓弬鏁版槸鎸囧悜 DLL 璧勬簮鍦ㄥ唴瀛樹腑鐨勫湴鍧鐨勬寚閽堬紝涔熷氨鏄墠闈唬鐮佷腑鐨?LockResource 鍑芥暟鐨勮繑鍥炲箋傜浜屼釜鍙傛暟鏄竴涓┖鐨勬寚閽堬紝濡傛灉鍑芥暟 LoadPbDllFromMemory 榪愯鎴愬姛錛岃鎸囬拡灝嗘寚鍚戦噸鏂扮粍鍚堝悗鐨勫唴瀛樹腑鐨?DLL 鐨勮搗濮嬪湴鍧銆傝鍑芥暟榪樻湁涓涓姛鑳藉氨鏄鏋滆繍琛屾垚鍔燂紝瀹冨皢鎵嬪姩鍦扮敤 DLL_PROCESS_ATTACH 鍙傛暟璋冪敤 DLL 鐨勫叆鍙e嚱鏁?DllMain 鏉ュ垵濮嬪寲璇?DLL銆傞櫎姝や箣澶栵紝瀹冭繕浼氭墜鍔ㄥ湴杞藉叆鍚堝茍鐨?DLL 鐨勫叆鍙h〃涓鍏ョ殑 DLL 騫惰皟鏁村畠浠湪鍐呭瓨涓殑鐩稿鍦板潃銆備互涓嬫槸璇ュ嚱鏁頒唬鐮?
DWORD LoadPbDllFromMemory(LPVOID lpRawDll, LPVOID lpImageDll) 
{
	SYSTEM_INFO sSysInfo; 
	PIMAGE_DOS_HEADER dosHeader; 
	PIMAGE_NT_HEADERS pNTHeader; 
	PIMAGE_SECTION_HEADER section; 
	PIMAGE_IMPORT_DESCRIPTOR pImportDesc; 
	PIMAGE_IMPORT_BY_NAME pOrdinalName; 
	PIMAGE_BASE_RELOCATION baseReloc; 
	PDWORD lpLink; 
	unsigned char Protection[4096]; 
	HINSTANCE hDll; 
	WORD i; 
	DWORD ImagePages,fOldProtect,j,MaxLen,HdrLen,Addr1,Addr2,Pg,Pg1,Pg2; 
	char * sDllName; 

	if(NULL == lpRawDll) return 1 ; 

	dosHeader = (PIMAGE_DOS_HEADER)lpRawDll; 

	// Is this the MZ header? 
	if ((TRUE == IsBadReadPtr(dosHeader,sizeof (IMAGE_DOS_HEADER))) ||
				 (IMAGE_DOS_SIGNATURE != dosHeader->e_magic)) 
		return 2; 

	// Get the PE header. 
	pNTHeader = MakePtr(PIMAGE_NT_HEADERS,dosHeader,dosHeader->e_lfanew); 

	// Is this a real PE image? 
	if((TRUE == IsBadReadPtr(pNTHeader,sizeof ( IMAGE_NT_HEADERS))) || 
				( IMAGE_NT_SIGNATURE != pNTHeader->Signature)) 
		return 3 ; 

	if(( pNTHeader->FileHeader.SizeOfOptionalHeader != 
			sizeof(pNTHeader->OptionalHeader)) || 
		(pNTHeader->OptionalHeader.Magic != IMAGE_NT_OPTIONAL_HDR32_MAGIC)) 
		return 4; 

	if (pNTHeader->FileHeader.NumberOfSections < 1) return 5; 

	section = IMAGE_FIRST_SECTION( pNTHeader ); 
	int HeaderSize = sizeof(IMAGE_SECTION_HEADER); 

	// 鑺傚ご闀垮害 
	HdrLen = (DWORD)section - (DWORD)dosHeader + 
			HeaderSize * pNTHeader->FileHeader.NumberOfSections; 

	// 鎵懼嚭鏈澶х殑鑺傜殑闀垮害,姝よ妭涓鑸槸浠g爜鎵鍦ㄧ殑鑺?.text 鑺? 
	MaxLen = HdrLen; 
	int ii=0; 

	for (i = 0;i<(DWORD)pNTHeader->FileHeader.NumberOfSections;i++)// find MaxLen 
	{
		if(MaxLen < section[i].VirtualAddress + section[i].SizeOfRawData) 
		{
			MaxLen = section[i].VirtualAddress + section[i].SizeOfRawData; 
		}
		if(strcmp((const char *)section[i].Name,".rsrc") == 0) ii=i; 
	}

	GetSystemInfo(&sSysInfo);
	ImagePages = MaxLen / sSysInfo.dwPageSize; 
	if (MaxLen % sSysInfo.dwPageSize) ImagePages++; 

	// 鍒嗛厤鎵闇鐨勫唴瀛?
	DWORD NeededMemory = ImagePages * sSysInfo.dwPageSize; 
	lpImageDll = VirtualAlloc(NULL, NeededMemory, MEM_COMMIT, PAGE_EXECUTE_READWRITE); 

	if (lpImageDll == NULL) return 6; // 鍒嗛厤鍐呭瓨澶辮觸 

	MoveMemory( lpImageDll, lpRawDll, HdrLen ); // 澶嶅埗鑺傚ご 

	DWORD OrgAddr = 0; 
	DWORD NewAddr = 0; 
	DWORD Size = 0; 

	// 澶嶅埗 .text 鑺傛暟鎹?
	for (i = 0;i<pNTHeader->FileHeader.NumberOfSections;i++) 
	{
		OrgAddr = (DWORD)lpImageDll + (DWORD)section[i].VirtualAddress; 
		NewAddr = (DWORD)lpRawDll + (DWORD)section[i].PointerToRawData; 
		Size = (DWORD)section[i].SizeOfRawData; 
		MoveMemory((void *)OrgAddr, (void *)NewAddr, Size ); 
	}

	// 鎶婃寚閽堟寚鍚戞柊鐨?DLL 鏄犲儚 
	dosHeader = (PIMAGE_DOS_HEADER) lpImageDll; // Switch to new image 
	pNTHeader = (PIMAGE_NT_HEADERS) ((DWORD)dosHeader + dosHeader->e_lfanew); 
	section = (PIMAGE_SECTION_HEADER) ((DWORD)pNTHeader + sizeof(IMAGE_NT_HEADERS)); 
	pImageBase = (PBYTE)dosHeader; 

	if((ii!=0) && (IsNT()==TRUE)) 
	{
		section[ii].VirtualAddress = section[ii].VirtualAddress + (DWORD)lpRawDll; 
		section[ii].PointerToRawData = section[ii].PointerToRawData + (DWORD)lpRawDll; 
	}

	DWORD importsStartRVA; 

	// Look up where the imports section is (normally in the .idata section) 
	// but not necessarily so. Therefore, grab the RVA from the data dir. 
	importsStartRVA = GetImgDirEntryRVA(pNTHeader,IMAGE_DIRECTORY_ENTRY_IMPORT); 
	if ( !importsStartRVA ) 
	{
		VirtualFree(dosHeader,0, MEM_RELEASE); 
		return 7; 
	}

	pImportDesc = (PIMAGE_IMPORT_DESCRIPTOR) pNTHeader->
		OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress; 

	if(pImportDesc!= 0) 
		pImportDesc = (PIMAGE_IMPORT_DESCRIPTOR) ((DWORD)pImportDesc + (DWORD)dosHeader); 
	else 
	{
		VirtualFree(dosHeader,0, MEM_RELEASE); 
		return 8; 
	}

	while (1) // 澶勭悊鍚勫叆鍙h〃涓殑 DLL 
	{
		// 媯鏌ユ槸鍚﹂亣鍒頒簡絀虹殑 IMAGE_IMPORT_DESCRIPTOR 
		if ((pImportDesc->TimeDateStamp==0 ) && (pImportDesc->Name==0)) break; 

		// 浠庣鐩樿澆鍏ュ繀欏葷殑 Dll, 
		// 娉ㄦ剰,杞藉叆鐨?DLL 鏄悎騫剁殑 DLL 鐨勫叆鍙h〃涓殑 DLL, 
		// 涓嶆槸鍚堝茍鍒?EXE 涓殑 DLL 
		sDllName = (char *) (pImportDesc->Name + (DWORD)pImageBase); 
		hDll = GetModuleHandle(sDllName); 

		if (hDll == 0 ) hDll = LoadLibrary(sDllName); 

		if (hDll == 0 ) 
		{
			MessageBox(NULL, "Can''t find required Dll",
					"Error in LoadPbDllFromMemory()",0); 
			VirtualFree(dosHeader,0, MEM_RELEASE); 
			return 9; 
		}

		DWORD *lpFuncNameRef = (DWORD *) (pImportDesc->OriginalFirstThunk +
								 (DWORD)dosHeader); 
		DWORD *lpFuncAddr = (DWORD *) (pImportDesc->FirstThunk +
								 (DWORD)dosHeader); 

		while( *lpFuncNameRef != 0) 
		{
			pOrdinalName = (PIMAGE_IMPORT_BY_NAME) (*lpFuncNameRef +
						 (DWORD)dosHeader); 
			DWORD pIMAGE_ORDINAL_FLAG = 0x80000000; 

			if (*lpFuncNameRef & pIMAGE_ORDINAL_FLAG) 
				*lpFuncAddr = (DWORD) GetProcAddress(hDll,
					 (const char *)(*lpFuncNameRef & 0xFFFF)); 
			else
				*lpFuncAddr = (DWORD) GetProcAddress(hDll,
						 (const char *)pOrdinalName->Name); 

			if (lpFuncAddr == 0) 
			{
				VirtualFree(dosHeader,0, MEM_RELEASE); 
				return 10;// Can''t GetProcAddress 
			}

			lpFuncAddr++;
			lpFuncNameRef++;
		}
		pImportDesc++;
	}

	DWORD TpOffset; 
	baseReloc = (PIMAGE_BASE_RELOCATION)((DWORD)pNTHeader->
銆銆銆銆 OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC].VirtualAddress); 

	if (baseReloc !=0) 
	{
		baseReloc = (PIMAGE_BASE_RELOCATION) ((DWORD)baseReloc + (DWORD)dosHeader); 
		while(baseReloc->VirtualAddress != 0) 
		{
			PWORD lpTypeOffset = (PWORD) ((DWORD)baseReloc +
					 sizeof(IMAGE_BASE_RELOCATION)); 
			while (lpTypeOffset < (PWORD)((DWORD)baseReloc +
						 (DWORD)baseReloc->SizeOfBlock)) 
			{
				TpOffset = *lpTypeOffset & 0xF000; 
				if(TpOffset == 0x3000) 
				{
					lpLink = (PDWORD) ((DWORD)dosHeader +
銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆             baseReloc->VirtualAddress +
                                                      (*lpTypeOffset & 0xFFF)); 
					*lpLink = (DWORD)dosHeader + 
                                            (*lpLink) - pNTHeader->OptionalHeader.ImageBase; 
				}
				else
				{
					if (TpOffset != 0) 
					{
						VirtualFree(dosHeader,0, MEM_RELEASE); 
						return 10; 
					}
				}
				lpTypeOffset++;
			}
			baseReloc = (PIMAGE_BASE_RELOCATION)((DWORD)baseReloc + 
				(DWORD)baseReloc->SizeOfBlock); 
		}
	}

	// 鍙栧緱鍘熷鐨勫唴瀛樼姸鎬?
	memset(Protection,0,4096);
	for (i = 0;i<=pNTHeader->FileHeader.NumberOfSections;i++) 
	{
		if (i == pNTHeader->FileHeader.NumberOfSections) 
		{
			Addr1 = 0; 
			Addr2 = HdrLen; 
			j = 0x60000000; 
		}
		else
		{
			Addr1 = section[i].VirtualAddress; 
			Addr2 = section[i].SizeOfRawData; 
			j = section[i].Characteristics; 
		}
		Addr2 += Addr1 - 1; 

		Pg1 = Addr1 / sSysInfo.dwPageSize; 
		Pg2 = Addr2 / sSysInfo.dwPageSize; 
		for(Pg = Pg1 ;Pg<=Pg2;Pg++) 
		{
			if (j & 0x20000000) Protection[Pg] |= 1; // Execute 
			if (j & 0x40000000) Protection[Pg] |= 2; // Read 
			if (j & 0x80000000) Protection[Pg] |= 4; // Write 
		}
	}

	// 鎭㈠鍘熷鐨勫唴瀛樼姸鎬?
	Addr1 = (DWORD)dosHeader; 
	for (Pg = 0 ;Pg<= ImagePages;Pg++) 
	{
		switch(Protection[Pg])
		{
		case 2: 
			fOldProtect = PAGE_READONLY; 
			break;
		case 3: 
			fOldProtect = PAGE_EXECUTE_READ; 
			break;
		case 6: 
			fOldProtect = PAGE_READWRITE; 
			break;
		default: 
			// Ignore strange combinations
			fOldProtect = PAGE_EXECUTE_READWRITE;  
			break;
		}

		if (fOldProtect !=PAGE_EXECUTE_READWRITE) 
		{
			if (VirtualProtect((void *)Addr1, 
				sSysInfo.dwPageSize, 
				fOldProtect,
				&fOldProtect) == 0) 
			{
				VirtualFree(dosHeader,0, MEM_RELEASE); 
				return 11; 
			}
		}
		Addr1 += sSysInfo.dwPageSize; 
	}

	EntryPoint = (LPENTRYPOINT) ((DWORD)pNTHeader->OptionalHeader.AddressOfEntryPoint +
				 (DWORD)dosHeader); 
	LPVOID lpReserved = 0; 
	EntryPoint((HINSTANCE)dosHeader, DLL_PROCESS_ATTACH, lpReserved); 
	lpImageDll2=lpImageDll;
	return 0; 
}
銆銆涓浣?DLL 琚紜湴杞藉叆鍒板唴瀛樹腑錛屾垜浠氨鍙互閫氳繃鑷畾涔夊嚱鏁?GetProcAddressDirectly 鏉ヨ幏鍙栨煇鍑芥暟鍦ㄥ唴瀛樹腑鐨勫湴鍧錛屽茍鏍規(guī)嵁璇ュ湴鍧鏉ヨ皟鐢ㄨ鍑芥暟錛岃鍑芥暟涔熸湁涓や釜鍙傛暟錛岀涓涓弬鏁版槸鎸囧悜杞藉叆鍒板唴瀛樹腑鐨?DLL 鐨勮搗濮嬪湴鍧鐨勬寚閽堬紝絎簩涓槸瑕佽皟鐢ㄧ殑鍑芥暟鐨勫嚱鏁板悕銆備互涓嬫槸 GetProcAddressDirectly 鍑芥暟浠g爜:
DWORD GetProcAddressDirectly(PIMAGE_DOS_HEADER dosHeader, char * FuncName)  
{ 
	PIMAGE_NT_HEADERS pNTHeader;  
	PIMAGE_EXPORT_DIRECTORY pExportDir;  
	PWORD lpNameOrdinals;  
	LPDWORD lpFunctions;  
	DWORD * lpName;  
	char * lpExpFuncName;  
	DWORD i;  
	DWORD j;  
	char * lpFuncName;  

	if(dosHeader->e_magic != IMAGE_DOS_SIGNATURE) return 0;  

	pNTHeader = (PIMAGE_NT_HEADERS)((DWORD)dosHeader + dosHeader->e_lfanew);  

	if (pNTHeader->Signature != IMAGE_NT_SIGNATURE) return 0;  

	if ((pNTHeader->FileHeader.SizeOfOptionalHeader != sizeof(pNTHeader->OptionalHeader)) ||  
		(pNTHeader->OptionalHeader.Magic != IMAGE_NT_OPTIONAL_HDR32_MAGIC))  
		return 0;  

	DWORD exportsStartRVA, exportsEndRVA;  
	pImageBase = (PBYTE)dosHeader;  

	// Make pointers to 32 and 64 bit versions of the header.  
	pNTHeader = MakePtr( PIMAGE_NT_HEADERS, dosHeader,dosHeader->e_lfanew );  

	exportsStartRVA = GetImgDirEntryRVA(pNTHeader,IMAGE_DIRECTORY_ENTRY_EXPORT);  
	exportsEndRVA = exportsStartRVA +  
		GetImgDirEntrySize(pNTHeader, IMAGE_DIRECTORY_ENTRY_EXPORT);  

	// Get the IMAGE_SECTION_HEADER that contains the exports. This is  
	// usually the .edata section, but doesn''t have to be.  
	PIMAGE_SECTION_HEADER header;  
	header = GetEnclosingSectionHeader( exportsStartRVA, pNTHeader );  
	if ( !header ) return 0;  

	INT delta;  
	delta = (INT)(header->VirtualAddress - header->PointerToRawData);  
	pExportDir = (PIMAGE_EXPORT_DIRECTORY)GetPtrFromRVA(exportsStartRVA, 
				pNTHeader, pImageBase);  


	pExportDir =(PIMAGE_EXPORT_DIRECTORY) (pNTHeader->
	OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].VirtualAddress);  

	if (pExportDir == 0)  
	{ 
		MessageBox(NULL,"Error in GetProcAddressDirectly()",0,0);  
		return 0;  
	} 

	pExportDir =(PIMAGE_EXPORT_DIRECTORY) ((DWORD)pExportDir + (DWORD)dosHeader);  
	lpNameOrdinals =(PWORD)((DWORD)pExportDir->AddressOfNameOrdinals + (DWORD)dosHeader);  
	lpName =(LPDWORD) (pExportDir->AddressOfNames + (DWORD)dosHeader);  
	lpFunctions =(LPDWORD) (pExportDir->AddressOfFunctions + (DWORD)dosHeader);  
	lpFuncName = FuncName;  

	if(HIWORD(lpFuncName)!=0 )  
	{ 
		for( i = 0;i<=pExportDir->NumberOfFunctions - 1;i++)  
		{ 
			DWORD entryPointRVA = *lpFunctions;  

			// Skip over gaps in exported function  
			if ( entryPointRVA == 0 ) continue; 
			for( j = 0;j<=pExportDir->NumberOfNames-1;j++)  
			{ 
				if( lpNameOrdinals[j] == i)  
				{ 
					lpExpFuncName = (char *) (lpName[j] + 
							(DWORD)dosHeader);  
					if(strcmp((char *)lpExpFuncName,(char *)FuncName)==0)  
						return (DWORD) (lpFunctions[i] + 
								(DWORD)dosHeader);  
				} 
			} 
		} 
	} 
	else 
	{ 
		for (i = 0 ;i<=pExportDir->NumberOfFunctions - 1;i++)  
		{ 
			if (lpFuncName == (char *)(pExportDir->Base + i))  
			{ 
				if (lpFunctions[i]) return (unsigned long) (lpFunctions[i] + 
							dosHeader);  
			} 
		} 
	} 
	return 0;  
}


鍦ㄨ皟鐢ㄥ畬鍑芥暟鍚庯紝涓嶈蹇樿鐢?UnloadPbDllFromMemory 鏉ヤ粠鍐呭瓨涓Щ鍘?DLL 浠ラ噴鏀懼垎閰嶇殑鍐呭瓨錛岃鍑芥暟榪樹細鐢?DLL_PROCESS_DETACH 鍙傛暟璋冪敤 DLL 鐨勫叆鍙e嚱鏁?DllMain 鏉ヤ粠璋冪敤榪涚▼鐨勫湴鍧絀洪棿鍗歌澆璇?DLL銆?浠ヤ笅鏄?UnloadPbDllFromMemory 鍑芥暟浠g爜:
DWORD UnloadPbDllFromMemory(PIMAGE_DOS_HEADER dosHeader) 
{
	PIMAGE_NT_HEADERS pNTHeader; 
	pNTHeader = (PIMAGE_NT_HEADERS)((DWORD)dosHeader + (DWORD)dosHeader->e_lfanew); 
	EntryPoint = (LPENTRYPOINT)(pNTHeader->OptionalHeader.AddressOfEntryPoint +
					 (DWORD)dosHeader); 
	EntryPoint((HINSTANCE)dosHeader, DLL_PROCESS_DETACH, 0); 
	return VirtualFree(dosHeader, 0, MEM_RELEASE); 
}


鍏充簬紺轟緥浠g爜鐨勮鏄?/strong>

銆銆鍦ㄦ湰鏂囬檮甯︾殑紺轟緥浠g爜涓紝鍚堝茍浜嗕竴涓悕涓?hardware.dll 鐨勫姩鎬佽繛鎺ュ簱錛岃鍔ㄦ佽繛鎺ュ簱鏄竴涓幏鍙栫郴緇熺‖浠朵俊鎭殑搴撴枃浠訛紝鍏朵腑鍖呮嫭浜嗕互涓嬪嚱鏁?

   getmac 		鍙栧緱緗戝崱 MAC 
   VolumeNumber 	鍙栧緱紜洏鍗鋒爣 
   changeres            鏀瑰彉灞忓箷鍒嗚京鐜?
   IsDiskInDrive        媯鏌ヨ蔣椹變腑鏄惁鎻掓湁鐩?nbsp;
   DPGetDefaultPrinter  鍙栧緱榛樿鐨勬墦鍗版満鍚?
   DPSetDefaultPrinter  璁劇疆榛樿鐨勬墦鍗版満 
   getserial            鍙栧緱紜洏鐨勫嚭鍘傚簭鍒楀彿 
   getmetric            鍙栧緱鏄劇ず鍒嗚京鐜?
   PrintStringDirect    鐩存帴鍚戞墦鍗版満鍙戦佷竴涓覆 
   vfpbeep              璁?PC 鍠囧彮鍙戝0 
   getcpuid             鍙栧緱 CPU ID 
   getbios              鍙栧緱涓繪澘 BIOS ID 
銆銆鍦ㄧず渚嬩唬鐮佷腑錛屽彧璋冪敤浜嗗叾涓竴涓嚱鏁?getbios 鏉ヨ幏鍙栦富鏉?BIOS ID錛?榪欓噷璇存槑涓涓嬶紝璇ュ嚱鏁板疄闄呬笂濂借薄鍙兘媯嫻?AWARD 涓繪澘鐨?BIOS錛?涔熷氨鏄瀹冩槸璇誨彇鐨勬槸緋葷粺鍐呭瓨 0x000fex71 澶勭殑鍊箋傚洜涓哄叾瀹冪墝瀛愮殑涓繪澘 BIOS 鐨勪綅緗◢鏈変笉鍚岋紝浣嗗湪紼嬪簭涓病鏈夎繘琛岃繖鏂歸潰鐨勫鐞嗭紝鎵浠ュ湪璇誨叾瀹冪墝瀛愮殑涓繪澘 BIOS 鏃跺彲鑳戒細鏈変簺闂(璇誨嚭鐨勫唴瀹瑰彲鑳戒笉姝g‘)銆傚叧浜庢 DLL 鐨勫唴瀹瑰拰瀹炵幇錛屼篃璁告垜浼氬湪鍙︿竴綃囨枃绔犱腑璁哄強銆?


灞闄?br />銆銆鍦ㄦ垜榪涜嫻嬭瘯鏃訛紝鍙戠幇瀵逛簬鏈変簺鍚湁璧勬簮鐨?DLL錛屽湪 9x 騫沖彴涓嬪彲鑳戒細鏈夐棶棰樸?br />

棰樺璇?br />銆銆鍙﹀錛屽叾瀹冧竴浜涙湰鏂囨湭鎻愬強鐨勯潪涓昏鐨勫嚱鏁幫紝璇瘋嚜琛屽弬瑙佹簮浠g爜涓殑娉ㄩ噴銆?br />鍐嶏紝鏈枃娑夊強 PE 鏂囦歡鏍煎紡鏂歸潰鐨勭煡璇嗭紝瀹冧滑宸茬粡瓚呭嚭浜嗘湰鏂囩殑鑼冨洿錛屽叿浣撲俊鎭彲鍙傝 MSDM 涓殑:

  • Peering Inside the PE: A Tour of the Win32 Portable Executable File Format 涓鏂囧拰
  • Microsoft Portable Executable and Common Object File Format Specification 涓鏂?
  • 鐗瑰埆鎰熻阿鍗㈡槬鏄庯紙Aming錛夊湪鎴戠紪鍐欐湰鏂囨椂鎵浣滅殑涓浜涙妧鏈柟闈㈢殑寤鴻鍜屾寚瀵?/strong>


    濡傛灉鏈枃瀵逛綘鐨勫紑鍙戞湁鎵甯姪錛屽茍涓斾綘鎵嬪ご鎭板ソ鏈夐浂閽便?/p>

    涓嶅鎵撹祻鎴戜竴鏉挅鍟★紝榧撳姳鎴戠戶緇垎浜紭縐鐨勬枃绔犮?br />





    ]]>
    銆愯漿璐淬戠洿鎺ヨ繍琛屽唴瀛樹腑鐨勭▼搴?/title><link>http://www.shnenglu.com/mybios/archive/2006/11/20/15452.html</link><dc:creator>鏉庨敠淇?mybios)</dc:creator><author>鏉庨敠淇?mybios)</author><pubDate>Mon, 20 Nov 2006 03:54:00 GMT</pubDate><guid>http://www.shnenglu.com/mybios/archive/2006/11/20/15452.html</guid><wfw:comment>http://www.shnenglu.com/mybios/comments/15452.html</wfw:comment><comments>http://www.shnenglu.com/mybios/archive/2006/11/20/15452.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.shnenglu.com/mybios/comments/commentRss/15452.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/mybios/services/trackbacks/15452.html</trackback:ping><description><![CDATA[     鎽樿: 鍝堝搱錛屾兂涓嶅埌鏈変漢灞呯劧鎶婅繖縐嶄唬鐮佷篃鎼炲嚭鏉ヤ簡銆偮犅犅?Windows鐨凱E鍔犺澆鍣ㄥ湪鍚姩紼嬪簭鐨勬椂鍊欙紝浼氬皢紓佺洏涓婄殑鏂囦歡鍔犺澆鍒板唴瀛橈紝鐒跺悗鍋氬緢澶氭搷浣滐紝濡傚嚱鏁板鍏ヨ〃閲嶅畾浣嶏紝鍙橀噺棰勫鐞嗕箣綾葷殑銆傝繖浣嶄粊鍏勭瓑浜庢槸鑷繁鍐欎簡涓涓狿E鍔犺澆鍣ㄣ傜洿鎺ュ皢鍐呭瓨涓殑紼嬪簭鍚姩銆傝寰椾互鍓嶇殑鈥滅孩鑹蹭唬鐮佲濈梾姣掍篃鏈夌浉鍚岀殑鐗規(guī)с偮犅犅?鐩存帴鍚姩鍐呭瓨涓殑紼嬪簭鐩稿綋浜庡姞浜嗕竴涓3錛屽彲浠ユ妸紼嬪簭鍔犲瘑淇濆瓨錛岃繍琛屾椂瑙e瘑鍒板唴瀛橈紝鐒跺悗鍚姩錛屼笉榪囧浜庡鍔犵牬瑙i毦搴﹁繕瑕佺◢...  <a href='http://www.shnenglu.com/mybios/archive/2006/11/20/15452.html'>闃呰鍏ㄦ枃</a><img src ="http://www.shnenglu.com/mybios/aggbug/15452.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/mybios/" target="_blank">鏉庨敠淇?mybios)</a> 2006-11-20 11:54 <a href="http://www.shnenglu.com/mybios/archive/2006/11/20/15452.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>銆愬師鍒涖戦瓟鍏戒簤闇窱II 鍦板浘緙栬緫鍣ㄥ師鐞嗭紙鍏抽敭鏄剼鏈級http://www.shnenglu.com/mybios/archive/2006/11/19/15404.html鏉庨敠淇?mybios)鏉庨敠淇?mybios)Sat, 18 Nov 2006 16:20:00 GMThttp://www.shnenglu.com/mybios/archive/2006/11/19/15404.htmlhttp://www.shnenglu.com/mybios/comments/15404.htmlhttp://www.shnenglu.com/mybios/archive/2006/11/19/15404.html#Feedback9http://www.shnenglu.com/mybios/comments/commentRss/15404.htmlhttp://www.shnenglu.com/mybios/services/trackbacks/15404.html銆銆娉ㄦ剰錛氭湰鏂囩函灞炴槸鏈漢浠庣爺絀墮瓟鍏戒簤闇窱II鍦板浘緙栬緫鍣ㄧ殑榪囩▼涓殑涓縐嶇寽鎯籌紝鎵浠ワ紝涓嶅綋涔嬪錛岃繕璇烽珮鎵嬫寚鍑恒傝阿璋紒

    銆銆欖斿吔浜夐湼III鎴戜互鍓嶇帺寰楁瘮杈冨錛屼篃鍚浠栫殑鍦板浘緙栬緫鍣ㄩ潪甯哥墰X錛屼互鍓嶄篃鏇劇粡鎯崇紪杈戜釜鍦板浘鍑烘潵銆備絾鏄紝闄愪簬褰撴椂寰楁按騫抽棶棰橈紝娌℃湁鎴愬姛銆傜洿鍒版渶榪戝湪鐮旂┒濡備綍鍒朵綔娓告垙鐨勬椂鍊欙紝鎵撳紑欖斿吔浜夐湼III鐨勫湴鍥劇紪杈戝櫒鏉ョ湅錛岀獊鐒舵湁涓縐嶆墿鐒跺紑鏈楃殑鎰熻錛佸摝錛佸師鏉ュ湴鍥劇紪杈戝櫒鏄繖鏍峰嚭鏉ョ殑錛侀棽璇濅笉澶氳錛侀┈涓婅繘鍏ユ棰橈紒

    銆銆欖斿吔浜夐湼III鐨勫湴鍥劇紪杈戝櫒浣跨敤浜嗕竴涓枃浠舵潵浠h〃涓涓湴鍥撅紝鍦板浘閲屽寘鍚簡浠涔堜笢瑗匡紵鎴戞棤浠庡緱鐭ワ紝浣嗘槸錛屼粠浠栫殑緙栬緫鍣ㄤ笂鐪嬶紝鐪嬪埌緙栬緫鍣ㄨ兘瀵瑰湴鍥句慨鏀圭殑涓滆タ錛屽氨鍙互澶ф鐚滄兂鍒版湁鍝簺涓滆タ銆備粩緇嗙湅鍦板浘緙栬緫鍣紝鐪嬪埌鏈夐偅涔堝嚑涓ā鍧楋細鍦板艦緙栬緫鍣ㄣ佸紑鍏崇紪杈戝櫒銆佸0闊崇紪杈戝櫒銆佺墿浣撶紪杈戝櫒銆佹垬褰圭紪杈戝櫒銆丄I緙栬緫鍣ㄣ佺墿浣撶鐞嗗櫒銆佽緭鍏ョ鐞嗗櫒銆傛垜鎶婃垜鐨勭悊瑙i愪竴璇存潵闃呰鍏ㄦ枃  闃呰鍏ㄦ枃

    ]]>
    銆愯漿璐淬戜竴浜涢珮鏁堜唬鐮佺墖孌?/title><link>http://www.shnenglu.com/mybios/archive/2006/11/18/15359.html</link><dc:creator>鏉庨敠淇?mybios)</dc:creator><author>鏉庨敠淇?mybios)</author><pubDate>Sat, 18 Nov 2006 07:17:00 GMT</pubDate><guid>http://www.shnenglu.com/mybios/archive/2006/11/18/15359.html</guid><wfw:comment>http://www.shnenglu.com/mybios/comments/15359.html</wfw:comment><comments>http://www.shnenglu.com/mybios/archive/2006/11/18/15359.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.shnenglu.com/mybios/comments/commentRss/15359.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/mybios/services/trackbacks/15359.html</trackback:ping><description><![CDATA[ <strong>涓涓揩閫熷紑鏂圭殑鍑芥暟<br /></strong> <pre class="code"> <span id="hvzpftn" class="coMULTI"> <em> <font color="#808080">/* 鏉ヨ嚦 Quake 3 鐨勬簮鐮?*/</font> </em> </span> <span id="hvzpftn" class="kw4"> <font color="#993333">float</font> </span> CarmSqrt<span id="hvzpftn" class="br0"><font color="#66cc66">(</font></span><span id="hvzpftn" class="kw4"><font color="#993333">float</font></span> x<font color="#66cc66"><span id="hvzpftn" class="br0">)</span><span id="hvzpftn" class="br0">{</span></font><span id="hvzpftn" class="kw4"><font color="#993333">union</font></span><span id="hvzpftn" class="br0"><font color="#66cc66">{</font></span><span id="hvzpftn" class="kw4"><font color="#993333">int</font></span> intPart; <span id="hvzpftn" class="kw4"><font color="#993333">float</font></span> floatPart; <span id="hvzpftn" class="br0"><font color="#66cc66">}</font></span> convertor; <span id="hvzpftn" class="kw4"><font color="#993333">union</font></span><span id="hvzpftn" class="br0"><font color="#66cc66">{</font></span><span id="hvzpftn" class="kw4"><font color="#993333">int</font></span> intPart; <span id="hvzpftn" class="kw4"><font color="#993333">float</font></span> floatPart; <span id="hvzpftn" class="br0"><font color="#66cc66">}</font></span> convertor2; convertor.<span id="hvzpftn" class="me1">floatPart</span> = x; convertor2.<span id="hvzpftn" class="me1">floatPart</span> = x; convertor.<span id="hvzpftn" class="me1">intPart</span> = 0x1FBCF800 + <span id="hvzpftn" class="br0"><font color="#66cc66">(</font></span>convertor.<span id="hvzpftn" class="me1">intPart</span> >> <span id="hvzpftn" class="nu0"><font color="#cc66cc">1</font></span><span id="hvzpftn" class="br0"><font color="#66cc66">)</font></span>; convertor2.<span id="hvzpftn" class="me1">intPart</span> = 0x5f3759df - <span id="hvzpftn" class="br0"><font color="#66cc66">(</font></span>convertor2.<span id="hvzpftn" class="me1">intPart</span> >> <span id="hvzpftn" class="nu0"><font color="#cc66cc">1</font></span><span id="hvzpftn" class="br0"><font color="#66cc66">)</font></span>; <span id="hvzpftn" class="kw1"><font color="#b1b100">return</font></span><span id="hvzpftn" class="nu0"><font color="#cc66cc">0</font></span>.5f*<span id="hvzpftn" class="br0"><font color="#66cc66">(</font></span>convertor.<span id="hvzpftn" class="me1">floatPart</span> + <span id="hvzpftn" class="br0"><font color="#66cc66">(</font></span>x * convertor2.<span id="hvzpftn" class="me1">floatPart</span><font color="#66cc66"><span id="hvzpftn" class="br0">)</span><span id="hvzpftn" class="br0">)</span></font>; <span id="hvzpftn" class="br0"><font color="#66cc66">}</font></span></pre> <br />鍙傝冮摼鎺ワ細<a target="_blank" rel="nofollow"><img title="鍦ㄦ柊紿楀彛涓墦寮" height="11" alt="[External Link]" hspace="4" src="http://blog.codingnow.com/cloud//images/www.gif" width="11" border="0" /></a><a rel="nofollow"><font color="#003399">http://greatsorcerer.go2.icpcn.com/info/fastsqrt.html</font></a><br /><font color="#003399"><hr noshade="" size="1" /></font><strong>蹇?double 杞暣鍨?</strong><br /><pre class="code"><span id="hvzpftn" class="kw4"><font color="#993333">union</font></span> luai_Cast <span id="hvzpftn" class="br0"><font color="#66cc66">{</font></span><span id="hvzpftn" class="kw4"><font color="#993333">double</font></span> l_d; <span id="hvzpftn" class="kw4"><font color="#993333">long</font></span> l_l; <span id="hvzpftn" class="br0"><font color="#66cc66">}</font></span>; <span id="hvzpftn" class="co2"><em><font color="#808080">#define lua_number2int(i,d) \</font></em></span><span id="hvzpftn" class="br0"><font color="#66cc66">{</font></span><span id="hvzpftn" class="kw4"><font color="#993333">volatile</font></span><span id="hvzpftn" class="kw4"><font color="#993333">union</font></span> luai_Cast u; u.<span id="hvzpftn" class="me1">l_d</span> = <span id="hvzpftn" class="br0"><font color="#66cc66">(</font></span>d<span id="hvzpftn" class="br0"><font color="#66cc66">)</font></span> + <span id="hvzpftn" class="nu0"><font color="#cc66cc">6755399441055744</font></span>.<span id="hvzpftn" class="nu0"><font color="#cc66cc">0</font></span>; <span id="hvzpftn" class="br0"><font color="#66cc66">(</font></span>i<span id="hvzpftn" class="br0"><font color="#66cc66">)</font></span> = u.<span id="hvzpftn" class="me1">l_l</span>; <span id="hvzpftn" class="br0"><font color="#66cc66">}</font></span></pre><br />鍙傝冮摼鎺ワ細<a target="_blank"><img title="鍦ㄦ柊紿楀彛涓墦寮" height="11" alt="[InterWiki]" hspace="4" src="http://blog.codingnow.com/cloud//images/inter.gif" width="11" border="0" /></a><a ><font color="#003399">double to int 紲炲鐨?magic number</font></a><br /><font color="#003399"><hr noshade="" size="1" /></font><strong>RGB565 鐨?alpha 娣峰悎 </strong><br /><pre class="code"><span id="hvzpftn" class="kw4"><font color="#993333">unsigned</font></span><span id="hvzpftn" class="kw4"><font color="#993333">short</font></span> alpha_blender<span id="hvzpftn" class="br0"><font color="#66cc66">(</font></span><span id="hvzpftn" class="kw4"><font color="#993333">unsigned</font></span><span id="hvzpftn" class="kw4"><font color="#993333">int</font></span> x,<span id="hvzpftn" class="kw4"><font color="#993333">unsigned</font></span><span id="hvzpftn" class="kw4"><font color="#993333">int</font></span> y,<span id="hvzpftn" class="kw4"><font color="#993333">unsigned</font></span><span id="hvzpftn" class="kw4"><font color="#993333">int</font></span> alpha<span id="hvzpftn" class="br0"><font color="#66cc66">)</font></span><span id="hvzpftn" class="br0"><font color="#66cc66">{</font></span> x = <span id="hvzpftn" class="br0"><font color="#66cc66">(</font></span>x | <span id="hvzpftn" class="br0"><font color="#66cc66">(</font></span>x<<<span id="hvzpftn" class="nu0"><font color="#cc66cc">16</font></span><font color="#66cc66"><span id="hvzpftn" class="br0">)</span><span id="hvzpftn" class="br0">)</span></font> & 0x7E0F81F; y = <span id="hvzpftn" class="br0"><font color="#66cc66">(</font></span>y | <span id="hvzpftn" class="br0"><font color="#66cc66">(</font></span>y<<<span id="hvzpftn" class="nu0"><font color="#cc66cc">16</font></span><font color="#66cc66"><span id="hvzpftn" class="br0">)</span><span id="hvzpftn" class="br0">)</span></font> & 0x7E0F81F; <span id="hvzpftn" class="kw4"><font color="#993333">unsigned</font></span><span id="hvzpftn" class="kw4"><font color="#993333">int</font></span> result = <font color="#66cc66"><span id="hvzpftn" class="br0">(</span><span id="hvzpftn" class="br0">(</span></font>x - y<span id="hvzpftn" class="br0"><font color="#66cc66">)</font></span> * alpha / <span id="hvzpftn" class="nu0"><font color="#cc66cc">32</font></span> + y<span id="hvzpftn" class="br0"><font color="#66cc66">)</font></span> & 0x7E0F81F; <span id="hvzpftn" class="kw1"><font color="#b1b100">return</font></span><span id="hvzpftn" class="br0"><font color="#66cc66">(</font></span><span id="hvzpftn" class="kw4"><font color="#993333">unsigned</font></span><span id="hvzpftn" class="kw4"><font color="#993333">short</font></span><font color="#66cc66"><span id="hvzpftn" class="br0">)</span><span id="hvzpftn" class="br0">(</span><span id="hvzpftn" class="br0">(</span></font>result&0xFFFF<span id="hvzpftn" class="br0"><font color="#66cc66">)</font></span> | <span id="hvzpftn" class="br0"><font color="#66cc66">(</font></span>result>><span id="hvzpftn" class="nu0"><font color="#cc66cc">16</font></span><font color="#66cc66"><span id="hvzpftn" class="br0">)</span><span id="hvzpftn" class="br0">)</span></font>; <span id="hvzpftn" class="br0"><font color="#66cc66">}</font></span></pre><br />鍙傝冮摼鎺ワ細<a target="_blank"><img title="鍦ㄦ柊紿楀彛涓墦寮" height="11" alt="[InterWiki]" hspace="4" src="http://blog.codingnow.com/cloud//images/inter.gif" width="11" border="0" /></a><a ><font color="#003399">64K 鑹茬殑 Alpha 娣峰悎</font></a><br /><font color="#003399"><hr noshade="" size="1" /></font><strong>涓涓笉閿欑殑瀛楃涓?hash 鍑芥暟 </strong><br /><pre class="code"><span id="hvzpftn" class="kw4"><font color="#993333">unsigned</font></span><span id="hvzpftn" class="kw4"><font color="#993333">long</font></span> hash<span id="hvzpftn" class="br0"><font color="#66cc66">(</font></span><span id="hvzpftn" class="kw4"><font color="#993333">const</font></span><span id="hvzpftn" class="kw4"><font color="#993333">char</font></span> *name,size_t len<span id="hvzpftn" class="br0"><font color="#66cc66">)</font></span><span id="hvzpftn" class="br0"><font color="#66cc66">{</font></span><span id="hvzpftn" class="kw4"><font color="#993333">unsigned</font></span><span id="hvzpftn" class="kw4"><font color="#993333">long</font></span> h=<span id="hvzpftn" class="br0"><font color="#66cc66">(</font></span><span id="hvzpftn" class="kw4"><font color="#993333">unsigned</font></span><span id="hvzpftn" class="kw4"><font color="#993333">long</font></span><span id="hvzpftn" class="br0"><font color="#66cc66">)</font></span>len; size_t step = <span id="hvzpftn" class="br0"><font color="#66cc66">(</font></span>len>><span id="hvzpftn" class="nu0"><font color="#cc66cc">5</font></span><span id="hvzpftn" class="br0"><font color="#66cc66">)</font></span>+<span id="hvzpftn" class="nu0"><font color="#cc66cc">1</font></span>; <span id="hvzpftn" class="kw1"><font color="#b1b100">for</font></span><span id="hvzpftn" class="br0"><font color="#66cc66">(</font></span>size_t i=len; i>=step; i-=step<span id="hvzpftn" class="br0"><font color="#66cc66">)</font></span> h = h ^ <font color="#66cc66"><span id="hvzpftn" class="br0">(</span><span id="hvzpftn" class="br0">(</span></font>h<<<span id="hvzpftn" class="nu0"><font color="#cc66cc">5</font></span><span id="hvzpftn" class="br0"><font color="#66cc66">)</font></span>+<span id="hvzpftn" class="br0"><font color="#66cc66">(</font></span>h>><span id="hvzpftn" class="nu0"><font color="#cc66cc">2</font></span><span id="hvzpftn" class="br0"><font color="#66cc66">)</font></span>+<span id="hvzpftn" class="br0"><font color="#66cc66">(</font></span><span id="hvzpftn" class="kw4"><font color="#993333">unsigned</font></span><span id="hvzpftn" class="kw4"><font color="#993333">long</font></span><span id="hvzpftn" class="br0"><font color="#66cc66">)</font></span>name<span id="hvzpftn" class="br0"><font color="#66cc66">[</font></span>i-<span id="hvzpftn" class="nu0"><font color="#cc66cc">1</font></span><font color="#66cc66"><span id="hvzpftn" class="br0">]</span><span id="hvzpftn" class="br0">)</span></font>; <span id="hvzpftn" class="kw1"><font color="#b1b100">return</font></span> h; <span id="hvzpftn" class="br0"><font color="#66cc66">}</font></span></pre><br />涓涓柟渚跨殑 hash 鍑芥暟搴旇鏁e垪鐨勬瘮杈冨紑錛岃綆楅熷害璺熷瓧絎︿覆闀垮害鍏崇郴涓嶅ぇ錛屽張涓嶈兘鍙綆楀瓧絎︿覆鐨勫紑澶存垨鏈熬銆傝繖閲岀殑綆楁硶鏄粠 <a ><font color="#003399">Lua</font></a> 涓湅鏉ョ殑銆?br /><hr noshade="" size="1" /><strong>鍏充簬鑴忕煩褰㈡妧鏈殑婕旂ず </strong><br />鐢變簬浠g爜榪囬暱錛屽崟璧蜂竴欏碉細<a ><font color="#003399">鑴忕煩褰?demo</font></a><br />鍙傝冮摼鎺ワ細<a target="_blank" rel="nofollow"><img title="鍦ㄦ柊紿楀彛涓墦寮" height="11" alt="[External Link]" hspace="4" src="http://blog.codingnow.com/cloud//images/www.gif" width="11" border="0" /></a><a rel="nofollow"><font color="#003399">Blog涓婄殑甯栧瓙錛氳剰鐭╁艦婕旂ずdemo</font></a><br /><font color="#003399"><hr noshade="" size="1" /></font><strong>UTF8 鍒?UTF16 鐨勮漿鎹?鍗曚釜瀛楃) </strong><br /><pre class="code"><span id="hvzpftn" class="kw4"><font color="#993333">int</font></span> UTF8toUTF16<span id="hvzpftn" class="br0"><font color="#66cc66">(</font></span><span id="hvzpftn" class="kw4"><font color="#993333">int</font></span> c<span id="hvzpftn" class="br0"><font color="#66cc66">)</font></span><span id="hvzpftn" class="br0"><font color="#66cc66">{</font></span><span id="hvzpftn" class="kw4"><font color="#993333">signed</font></span><span id="hvzpftn" class="kw4"><font color="#993333">char</font></span> *t=<span id="hvzpftn" class="br0"><font color="#66cc66">(</font></span><span id="hvzpftn" class="kw4"><font color="#993333">signed</font></span><span id="hvzpftn" class="kw4"><font color="#993333">char</font></span>*<span id="hvzpftn" class="br0"><font color="#66cc66">)</font></span>&c; <span id="hvzpftn" class="kw4"><font color="#993333">int</font></span> ret=*t &<span id="hvzpftn" class="br0"><font color="#66cc66">(</font></span>0x0f | <font color="#66cc66"><span id="hvzpftn" class="br0">(</span><span id="hvzpftn" class="br0">(</span></font>*t>><span id="hvzpftn" class="nu0"><font color="#cc66cc">1</font></span><span id="hvzpftn" class="br0"><font color="#66cc66">)</font></span> &0x1f<span id="hvzpftn" class="br0"><font color="#66cc66">)</font></span> | ~<span id="hvzpftn" class="br0"><font color="#66cc66">(</font></span>*t>><span id="hvzpftn" class="nu0"><font color="#cc66cc">7</font></span><font color="#66cc66"><span id="hvzpftn" class="br0">)</span><span id="hvzpftn" class="br0">)</span></font>; <span id="hvzpftn" class="kw4"><font color="#993333">int</font></span> i; assert <font color="#66cc66"><span id="hvzpftn" class="br0">(</span><span id="hvzpftn" class="br0">(</span></font>*t & 0xc0<span id="hvzpftn" class="br0"><font color="#66cc66">)</font></span> != 0x80<span id="hvzpftn" class="br0"><font color="#66cc66">)</font></span>; <span id="hvzpftn" class="kw1"><font color="#b1b100">for</font></span><span id="hvzpftn" class="br0"><font color="#66cc66">(</font></span>i=<span id="hvzpftn" class="nu0"><font color="#cc66cc">1</font></span>;i<<span id="hvzpftn" class="nu0"><font color="#cc66cc">3</font></span>;i++<span id="hvzpftn" class="br0"><font color="#66cc66">)</font></span><span id="hvzpftn" class="br0"><font color="#66cc66">{</font></span><span id="hvzpftn" class="kw1"><font color="#b1b100">if</font></span><font color="#66cc66"><span id="hvzpftn" class="br0">(</span><span id="hvzpftn" class="br0">(</span></font>t<span id="hvzpftn" class="br0"><font color="#66cc66">[</font></span>i<span id="hvzpftn" class="br0"><font color="#66cc66">]</font></span> & 0xc0<span id="hvzpftn" class="br0"><font color="#66cc66">)</font></span>!=0x80<span id="hvzpftn" class="br0"><font color="#66cc66">)</font></span><span id="hvzpftn" class="br0"><font color="#66cc66">{</font></span><span id="hvzpftn" class="kw2"><strong>break</strong></span>; <span id="hvzpftn" class="br0"><font color="#66cc66">}</font></span> ret=ret<<<span id="hvzpftn" class="nu0"><font color="#cc66cc">6</font></span> | <span id="hvzpftn" class="br0"><font color="#66cc66">(</font></span>t<span id="hvzpftn" class="br0"><font color="#66cc66">[</font></span>i<span id="hvzpftn" class="br0"><font color="#66cc66">]</font></span> & 0x3f<span id="hvzpftn" class="br0"><font color="#66cc66">)</font></span>; <span id="hvzpftn" class="br0"><font color="#66cc66">}</font></span><span id="hvzpftn" class="kw1"><font color="#b1b100">return</font></span> ret; <span id="hvzpftn" class="br0"><font color="#66cc66">}</font></span></pre><br />榪欏彧鏄竴涓瓧絎︾殑杞崲錛屽鏋滆漿鎹㈠瓧絎︿覆錛屽彲浠ュ啀鍋氫竴鐐逛紭鍖栥?img src ="http://www.shnenglu.com/mybios/aggbug/15359.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/mybios/" target="_blank">鏉庨敠淇?mybios)</a> 2006-11-18 15:17 <a href="http://www.shnenglu.com/mybios/archive/2006/11/18/15359.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>銆愯漿璐淬戞硾鍨嬬畻娉曪細Tipshttp://www.shnenglu.com/mybios/archive/2006/11/18/15333.html鏉庨敠淇?mybios)鏉庨敠淇?mybios)Sat, 18 Nov 2006 01:17:00 GMThttp://www.shnenglu.com/mybios/archive/2006/11/18/15333.htmlhttp://www.shnenglu.com/mybios/comments/15333.htmlhttp://www.shnenglu.com/mybios/archive/2006/11/18/15333.html#Feedback2http://www.shnenglu.com/mybios/comments/commentRss/15333.htmlhttp://www.shnenglu.com/mybios/services/trackbacks/15333.html闃呰鍏ㄦ枃

    ]]>
    銆愯漿璐淬慞hysX SDK鐗╃悊寮曟搸寮鍙戝寘浣跨敤鏁欑▼錛屽熀浜嶰penGLhttp://www.shnenglu.com/mybios/archive/2006/11/18/15327.html鏉庨敠淇?mybios)鏉庨敠淇?mybios)Sat, 18 Nov 2006 00:53:00 GMThttp://www.shnenglu.com/mybios/archive/2006/11/18/15327.htmlhttp://www.shnenglu.com/mybios/comments/15327.htmlhttp://www.shnenglu.com/mybios/archive/2006/11/18/15327.html#Feedback1http://www.shnenglu.com/mybios/comments/commentRss/15327.htmlhttp://www.shnenglu.com/mybios/services/trackbacks/15327.html

    AGEIA鐨凱hysX澶勭悊鍣ㄦ槸涓栫晫涓婇嬈劇墿鐞嗘ā鎷熷鐞嗗櫒 (PPU), 璇ュ鐞嗗櫒灝嗚В闄や腑澶鐞嗗櫒榪涜鐗╃悊妯℃嫙鐨勮礋鎷呫侾hysX PPU 鐨勮璁℃瀯鏋跺熀浜庨《鐐圭殑澶氱嚎紼嬫搷浣滐紝鍏佽娓告垙寮鍙戜漢鍛樿繘琛岀簿紜佹祦鐣呭拰鍔ㄧ敾鍒涗綔鍜岃繍鍔ㄦā鎷燂紝渚嬪姣涘彂銆佸竷鏂欍佹恫浣撱佹祦浣撶瓑銆傛湰鏂囦粙緇嶄簡濡備綍鍒╃敤PhysX SDK鐗╃悊寮曟搸寮鍙戝寘鏉ュ疄鐜版垜浠豢鐪熺殑鏁堟灉銆?/p>


    AGEIA鐨凱hysX澶勭悊鍣ㄦ槸涓栫晫涓婇嬈劇墿鐞嗘ā鎷熷鐞嗗櫒 (PPU), 璇ュ鐞嗗櫒灝嗚В闄や腑澶鐞嗗櫒榪涜鐗╃悊妯℃嫙鐨勮礋鎷呫侾hysX PPU 鐨勮璁℃瀯鏋跺熀浜庨《鐐圭殑澶氱嚎紼嬫搷浣滐紝鍏佽娓告垙寮鍙戜漢鍛樿繘琛岀簿紜佹祦鐣呭拰鍔ㄧ敾鍒涗綔鍜岃繍鍔ㄦā鎷燂紝渚嬪姣涘彂銆佸竷鏂欍佹恫浣撱佹祦浣撶瓑銆傜洰鍓?AGEIA 鐨凱hysX澶勭悊鍣ㄦ槸涓栫晫涓婄涓嬈句篃鏄敮涓涓嬈句笓娉ㄤ簬鐗╃悊綆楁硶澶勭悊鍣ㄧ殑浜у搧.
    鍒╃敤PhysX SDK鐗╃悊寮曟搸寮鍙戝寘鏉ュ疄鐜版垜浠豢鐪熺殑鏁堟灉鏃訛紝涓鑸渶瑕佷互涓嬪嚑涓楠わ細
    錛?錛?span style="FONT: 7pt 'Times New Roman'">聽聽聽 PrintControls();
    錛?錛?span style="FONT: 7pt 'Times New Roman'">聽聽聽 InitGlut(argc, argv);
    錛?錛?span style="FONT: 7pt 'Times New Roman'">聽聽聽 InitNx();
    錛?錛?span style="FONT: 7pt 'Times New Roman'">聽聽聽 glutMainLoop();
    錛?錛?span style="FONT: 7pt 'Times New Roman'">聽聽聽 ReleaseNx();
    鍏朵腑鏈涓轟富瑕佺殑鍑芥暟鏄疘nitNx錛堬級錛屼篃鏃㈡槸鍒濆鍖朠hysX錛屽垱寤轟竴涓狿hysX SDK瀹炰緥浠ュ強寤虹珛鎴戜滑鐨勫満鏅備笅闈㈠叿浣撳垎鏋愬悇涓嚱鏁扮殑浣滅敤銆?/span>
    涓錛?/span> PrintControls();
    鏄捐屾槗瑙侊紝鍒╃敤璇ュ嚱鏁扮殑鐩殑鏄湪鍛婅瘔鐜╁璇ュ浣曡繘琛屾搷浣溿傛搷浣滅殑鎸夐敭鍙牴鎹嚜宸辯殑鍠滃ソ榪涜璁劇疆銆?/span>
    浜岋紟 InitGlut(argc, argv);
    PhysX鏄疧penGL涓婂紑鍙戠殑錛屾墍浠ュ湪鍒濆鍖朠hysX瀹炰緥涔嬪墠錛屽繀欏誨緩绔嬩竴涓狾penGL鐨勬鏋躲?/span>
    鈶?聽聽聽 glutInit(&argc, argv) 鐢ㄦ潵鍒濆鍖朑LUT錛屽茍涓斿鐞嗕換鎰忕殑鍛戒護琛屽彉閲?/span>
    鈶?聽聽聽 glutInitWindowSize(int width, int size) 鎸囧畾浜嗙獥鍙d互鍍忕礌涓哄崟浣嶇殑灝哄
    鈶?聽聽聽 聽glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH) 寤虹珛涓涓甫鏈夊弻緙撳瓨銆丷GB棰滆壊妯″瀷鍜屽緢澶х紦瀛樼殑紿楀彛
    鈶?聽聽聽 glutCreateWindow錛坈har* string錛?鍒涘緩涓涓叿鏈塐penGL鍒涘緩鐨勭獥鍙o紝string涓鴻紿楀彛鐨勭獥鍙e悕
    鈶?聽聽聽 glutSetWindow錛堬級
    鈶?聽聽聽 glutDisplayFunc(RenderCallback) 娓叉煋
    ProcessCameraKeys();
    聽聽聽 聽SetupCamera();
    聽聽聽 聽聽聽 聽if (gScene && !bPause)
    聽聽聽 聽{
    聽聽聽聽聽聽聽 GetPhysicsResults();
    ProcessInputs();鏍規(guī)嵁閫夋嫨鐨勫璞★紝緇欒瀵硅薄鏂藉姞鍓嶅悗銆佷笂涓嬨佸乏鍙充笉鍚屾柟鍚戠殑鍔涳紝鐒跺悗璋冪敤瀵硅薄鐨勬柟娉昦ddForce錛屼駭鐢熶笉鍚岀殑鐗╃悊鏁堟灉
    聽聽聽聽聽聽聽 StartPhysics();
    聽聽聽 聽}
    聽聽 聽// Display scene
    聽聽聽 聽RenderActors(bShadows);
    璋冪敤鍑芥暟DrawActor(NxActor* actor)灝嗗満鏅腑鐨勭墿浣撴覆鏌撳嚭鏉ワ紝瀹炲湪鏄湪DrawActor(NxActor* actor)鍑芥暟涓牴鎹墿浣撳艦鐘惰皟鐢ㄤ笉鍚屽艦鐘剁殑緇樼敾鍑芥暟灝嗙墿浣撴覆鏌撳嚭鏉ョ殑銆傚湪娓叉煋鐨勮繃紼嬩腑錛屽埄鐢ㄦ樉紺哄垪琛ㄧ粯鍒朵笉鍚屽艦鐘剁殑鐗╀綋銆傚湪PhysX涓紝鐗╀綋褰㈢姸鍒嗕負浠ヤ笅鍑犵錛歂X_SHAPE_PLANE(闈㈡澘鐘?, NX_SHAPE_BOX(鐩掑瓙鐘?, NX_SHAPE_ SPHERE(鐞冨艦鐘?, NX_SHAPE_CAPSULE(鑳跺泭鐘?, NX_SHAPE_CONVEX(鍑稿杈瑰艦鐘?, NX_SHAPE_MESH(緗戠姸鐘?銆?/span>
    褰揵Shadows涓簍rue鏃訛紝娓叉煋鐗╀綋鐨勯槾褰憋紱涓篺alse鏃跺氨涓嶇粯鍒?/span>
    聽聽聽 聽DrawForce(box, gForceVec, NxVec3(1,1,0));
    聽聽聽聽聽聽聽 灝嗙墿浣撳彈鍔涚殑鍙楀姏鏂瑰悜娓叉煋鍑烘潵
    鈶?聽聽聽 glutReshapeFunc(ReshapeCallback)
    璁劇疆紿楀彛
    鈶?聽聽聽 glutIdleFunc(IdleCallback);
    聽聽
    鈶?聽聽聽 glutKeyboardFunc(KeyboardCallback);
    鈶?聽聽聽 glutKeyboardUpFunc(KeyboardUpCallback);
    鈶?聽聽聽 glutSpecialFunc(SpecialCallback);
    鍦ㄦ錛岃皟鐢≧esetNx錛堬級錛岄噸鏂版覆鏌?/span>
    鈶?聽聽聽 glutMouseFunc(MouseCallback);
    鈶?聽聽聽 glutMotionFunc(MotionCallback);
    鈶?聽聽聽 MotionCallback(0,0);
    涓夛紟 InitNx() 鍥犱負鎴戜滑闇瑕佸垵濮嬪寲PhysX SDK瀹炰緥錛屽茍涓斿緩绔嬫垜浠渶瑕佺殑鍦烘櫙錛涙墍浠ユ垜浠渶瑕佽緗互涓嬪嚑涓彉閲忥紝騫朵笖灝嗗畠浠緗負鍏ㄥ眬鍙橀噺
    聽聽聽 聽聽聽 NxPhysicsSDK* gPhysicsSDK = NULL; //PhysX SDK瀹炰緥瀵硅薄
    NxScene* gScene = NULL; //鍦烘櫙瀵硅薄
    NxVec3 gDefaultGravity(0,-9.8,0);
    ***娉ㄦ剰錛氬潗鏍囩郴鐨勬柟鍚戞寚鍚戯紝鍦≒hysX銆丱penGL浠ュ強3DMax閮芥湁涓浜涗笉涓鏍鳳紝褰撹繍琛岄噷闈㈢殑demo鐨勬椂鍊欏氨鍙互浣撲細鍒般傚畠浠殑鍧愭爣緋誨垎鍒涓嬶細聽聽聽聽

    聽聽 涓嬮潰灝卞湪InitNx錛堬級涓紑濮嬪垵濮嬪寲瀹炰緥浠ュ強寤虹珛鍦烘櫙.
    鈶?聽聽聽 瀹炰緥鍖?physics SDK
    gPhysicsSDK = NxCreatePhysicsSDK(NX_PHYSICS_SDK_VERSION);
    鍒濆鍖栧畬Physics SDK鍚庯紝鍙槸綆鍗曠殑涓涓疄渚嬨傚彲浠ラ氳繃璁劇疆瀹炰緥鐨勭墿鐞嗗弬鏁版潵鍏呭疄鎴戜滑鐨勬ā鎷熸晥鏋?
    gPhysicsSDK->setParameter(NX_SKIN_WIDTH, 0.01);
    鈶?聽聽聽 鍒涘緩鍦烘櫙
    聽聽聽 聽聽聽聽聽聽聽 NxSceneDesc sceneDesc; //鍦烘櫙琛ㄨ堪琛ㄥ璞?/span>
    聽聽聽 聽聽聽聽聽聽聽 sceneDesc.gravity聽= gDefaultGravity;
    聽聽 聽聽聽聽 sceneDesc.broadPhase聽= NX_BROADPHASE_COHERENT;
    聽聽 聽聽聽聽 sceneDesc.collisionDetection聽聽聽 = true;
    聽聽聽 聽聽聽聽聽聽聽 gScene = gPhysicsSDK->createScene(sceneDesc);
    鍦≒hysX涓紝涓嶇鏄垱寤哄満鏅繕鏄垱寤哄悇涓墿浣撹鑹叉椂錛岄兘鏄厛閫氳繃鍚勮嚜瀵瑰簲鐨勬弿榪板櫒錛堢炕璇戠殑涓嶆槸寰堝噯紜級璁劇疆鍦烘櫙鍜屽悇涓墿浣撶殑鐗╃悊鍙傛暟錛岀敤鏉ユā鎷熺湡瀹炵殑涓栫晫鐜鍜岀墿浣撱傚緩绔嬪ソ琛ㄨ堪鍣ㄥ悗錛岄氳繃鍑芥暟 createSce ne錛?/span> NxSceneDesc 錛夊嚱鏁板氨鍙互寤虹珛闇瑕佺殑鍦烘櫙瀵硅薄銆?/span>
    涓鑸儏鍐典笅錛屽満鏅弿榪板櫒鐨勫弬鏁板氨鏄緗噸鍔涘姞閫熷害 sceneDesc.gravity 錛屾槸鍚﹁繘琛岀鎾炴嫻?/span> collisionDetection , true涓鴻繘琛岋紝 鍦≒hysX SDK涓弿榪板櫒琚箍娉涚殑搴旂敤. 鎻忚堪鍣ㄥ寘鎷墍鏈変綘鍒涘緩鐗╀綋鐨勪俊鎭?/span> broadphase-coherent 鏄笁縐嶇鎾炴嫻嬩腑鐨勪竴縐嶃?/span>
    gPhysicsSDK->setParameter(NX_SKIN_WIDTH, 0.01);
    褰撶浉浜掔鎾炵殑鐗╀綋鐨勬潗璐ㄩ兘寰堣蔣鐨勬椂鍊欙紝鍦ㄧ幇瀹炰腑灝變細鍙戠幇褰撳彂鐢熺鎾炵殑鏃跺欑墿浣撲箣闂村氨浼氱浉浜掑祵鍏ヤ竴閮ㄥ垎錛屽湪榪欓噷鎴戜滑灝卞彲浠ュ埄鐢ㄧ墿鐞嗗弬鏁?/span> NX_SKIN_WIDTH 錛屽畠鐨勯粯璁ゅ間負0.05m錛岃鍊艱秺澶э紝宓屽叆鐨勫氨瓚婂
    鍚屾椂錛屾垜浠彲浠ュ鍦烘櫙涓殑鎵鏈夌墿浣撳垱寤烘潗璐ㄣ傚垱寤虹殑鏉愯川瀹氫箟浜嗙鎾炲拰鐗╀綋鏉愭枡鐨勭墿鐞嗗睘鎬с傛瘮濡傚弽寮圭郴鏁般侀潤鎽╂摝鍔涖佹粦鍔ㄦ懇鎿﹀姏絳夈?/span>
    聽聽聽 聽聽聽 聽聽聽聽 // Create the default material 閫氳繃鏉愯川绱㈠紩鍒涘緩涓涓潗璐ㄧ殑瀵硅薄
    聽聽聽 聽聽聽 聽聽聽聽 NxMaterial* defaultMaterial = gScene->getMaterialFromIndex(0);
    聽聽聽 聽聽聽聽聽聽聽 defaultMaterial->setRestitution(0.5);
    聽聽聽 聽聽聽 聽聽聽聽 defaultMaterial->setStaticFriction(0.5);
    聽聽聽 聽聽聽聽聽聽聽 defaultMaterial->setDynamicFriction(0.5);
    鍒涘緩鐗╀綋錛屼互box涓轟緥
    NxActor* box = CreateBox(NxVec3(5,1,0));
    NxActor* CreateBox(const NxVec3& pos)
    {
    聽聽聽 聽聽聽 // Add a single-shape actor to the scene
    聽聽聽 聽聽聽 NxActorDesc actorDesc;
    聽聽聽 聽聽聽 NxBodyDesc bodyDesc;
    聽聽聽 聽聽聽 // The actor has one shape, a box
    聽聽聽 聽聽聽 NxBoxShapeDesc boxDesc;
    聽聽聽 聽聽聽 boxDesc.dimensions.set(0.5,1,0.5);
    聽聽聽 聽聽聽 actorDesc.shapes.pushBack(&boxDesc);
    聽聽聽 聽聽聽 actorDesc.body = &bodyDesc;
    聽聽聽 聽聽聽 actorDesc.density = 10;
    聽聽聽 聽聽聽 actorDesc.globalPose.t = pos;
    聽聽聽 聽聽聽 return gScene->createActor(actorDesc);聽
    }
    鎴戜滑鍒涘緩涓涓鑹插弬涓庤卋ox錛屽畠鐨勭被鍨嬩負 NxActor* 銆傚緩绔嬭瀵硅薄鐨勬椂鍊欓渶瑕佽緗畠鐨勬弿榪板櫒錛岀劧鍚庡埄鐢ㄥ嚱鏁?/span> createActor(NxActorDesc actorDesc) 灝嗚瀵硅薄鍔犲叆鍦烘櫙涓傛瘡涓涓璞″張鏈夊拰鑷繁褰㈢姸鐩稿搴旂殑鎻忚堪鍣ㄣ傚埄鐢ㄥ畠璁劇疆瀵硅薄鐨勭墿鐞嗗弬鏁般?/span> boxDesc 璇ユ弿榪板櫒鎻忚堪浜嗚鐩掑瓙鐨勯暱銆佸銆侀珮鍒嗗埆涓?.5錛屽垵濮嬪寲鐨勪綅緗互鍙婅鐩掑瓙鐨勫瘑搴︺?/span>
    鈶?聽聽聽 鍒涘緩瀹屾墍鏈夌殑鐗╀綋瀵硅薄鏃訛紝璋冪敤 UpdateTime() 寰楀埌浠庝笂涓甯ф覆鏌撳埌鐜板湪緇忚繃鐨勬椂闂?/span>
    鈶?聽聽聽 褰撳垱寤虹殑鍦烘櫙鎴愬姛錛屽埄鐢ㄥ嚱鏁?/span> StartPhysics() 寮濮嬪畠鐨勭涓甯фā鎷熴?/span>
    聽聽聽 聽聽聽聽聽聽聽 void StartPhysics()
    {
    聽聽聽 // Update the time step
    聽聽 聽聽聽聽 聽聽聽 NxReal deltaTime = UpdateTime();
    聽聽聽 聽聽聽聽聽聽聽 聽聽聽 // Start collision and dynamics for delta time since the last frame
    聽聽聽 聽聽聽聽聽聽聽聽聽聽聽 gScene->simulate(deltaTime);
    聽聽聽 聽聽聽聽聽聽聽聽聽聽聽 gScene->flushStream();
    }
    simulate(deltaTime) 鏄疨hysX 瑙e喅鐗╃悊瀛︾殑鍏抽敭
    聽聽聽聽聽聽聽聽聽聽聽聽聽 flushStream() 瀵規(guī)椂闂存榪涜浠跨湡
    鍥涳紟 glutMainLoop()
    紼嬪簭灝嗕竴鐩村仠鐣欏湪glutMainLoop()涓紝鐩村埌鐢ㄦ埛鑷繁緇撴潫銆傚綋鍦烘櫙涓鏃﹁娓叉煋鍚庯紝 鍦?/span> 姣忔 璁劇疆涓嬩竴鍦烘櫙鏃?/span> 錛?/span> RenderCallback() 鍥炶皟鍑芥暟 灝?/span> 琚皟鐢?/span>
    浜旓紟 ReleaseNx()
    聽聽聽 鍒犻櫎鍦烘櫙涓墍鏈夌殑鐗╀綋瀵硅薄浠ュ強鍦烘櫙鏈韓


    ]]>
    青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              亚洲国内高清视频| 欧美日韩一区在线观看视频| 国产美女扒开尿口久久久| 亚洲欧美中文另类| 亚洲永久免费精品| 激情久久久久| 亚洲激情一区| 欧美视频四区| 久久综合网络一区二区| 欧美大色视频| 午夜伦理片一区| 久久久在线视频| 一区二区三区鲁丝不卡| 亚洲字幕一区二区| 亚洲国产美女久久久久| 99国内精品久久| 国产日韩在线不卡| 亚洲激情欧美| 国内外成人免费视频| 亚洲国产一区在线| 国产欧美一区二区三区另类精品 | 欧美日韩精品一区二区三区| 午夜在线视频一区二区区别 | 亚洲欧洲精品一区二区三区波多野1战4| 欧美精品v日韩精品v国产精品| 午夜精品影院| 欧美国产日韩二区| 欧美日韩精品一区二区在线播放 | 欧美永久精品| 你懂的国产精品永久在线| 亚洲永久免费av| 免费亚洲婷婷| 久久久久久久久久久一区 | 亚洲欧美精品在线观看| 亚洲乱码国产乱码精品精天堂 | 麻豆精品国产91久久久久久| 欧美天堂亚洲电影院在线观看| 久久亚洲国产精品一区二区| 欧美视频一区二区| 亚洲第一精品影视| 激情一区二区三区| 午夜精品视频在线观看| 一区二区三区四区蜜桃| 毛片一区二区三区| 久久婷婷国产综合国色天香| 国产精品亚洲激情| 日韩午夜在线| 亚洲免费观看视频| 蜜月aⅴ免费一区二区三区| 欧美在现视频| 国产精品日韩精品| 中国亚洲黄色| 亚洲午夜精品久久| 欧美精品电影在线| 亚洲国产精品国自产拍av秋霞 | 国产区在线观看成人精品| 一区二区国产在线观看| 一区二区不卡在线视频 午夜欧美不卡'| 久久久久国产免费免费| 久久天堂国产精品| 一区二区三区在线免费播放| 欧美在线视频日韩| 久久久久久久久久久成人| 国产视频在线观看一区| 午夜精品影院在线观看| 久久国产精品久久久| 国产精品婷婷午夜在线观看| 亚洲欧美日韩高清| 久久精品系列| 永久555www成人免费| 久久免费视频网站| 亚洲电影在线免费观看| 亚洲看片网站| 欧美日韩中文字幕在线| 在线午夜精品自拍| 欧美在线免费观看| 国内精品国产成人| 蜜臀a∨国产成人精品| 亚洲精品美女在线| 亚洲综合色在线| 国产日本欧洲亚洲| 久久夜色精品国产欧美乱| 亚洲国产成人精品久久久国产成人一区| 亚洲区在线播放| 欧美日韩一区二区三区视频| 亚洲欧洲av一区二区| 免费成人高清在线视频| 欧美成va人片在线观看| 亚洲无毛电影| 国产精品自拍三区| 久久久噜噜噜久噜久久| 亚洲欧洲精品一区二区三区| 亚洲欧美在线观看| 亚洲大片一区二区三区| 欧美日韩三级一区二区| 欧美一区影院| 亚洲欧洲日夜超级视频| 性色av一区二区三区红粉影视| 韩国v欧美v日本v亚洲v| 欧美精品成人在线| 欧美一区91| 亚洲激情综合| 久久久国产亚洲精品| 亚洲精品欧洲精品| 国产午夜亚洲精品不卡| 欧美精品色一区二区三区| 欧美一级视频| 日韩系列欧美系列| 六月婷婷一区| 午夜伦理片一区| 最新国产精品拍自在线播放| 国产欧美日韩视频| 欧美区亚洲区| 久久久噜噜噜久噜久久| 亚洲欧美成人一区二区在线电影 | 亚洲一区www| 亚洲国产影院| 国语自产精品视频在线看一大j8 | 美女爽到呻吟久久久久| 欧美亚洲综合网| 在线视频欧美精品| 亚洲欧洲日韩女同| 欧美岛国激情| 久久中文精品| 久久精品卡一| 久久成人精品无人区| 亚洲欧美国产精品va在线观看| 亚洲美女在线视频| 亚洲黄色影院| 亚洲高清网站| 亚洲第一福利社区| 黑丝一区二区三区| 国内久久精品| 韩国一区二区在线观看| 国产视频一区欧美| 国产亚洲精品久久久久婷婷瑜伽| 国产精品久久福利| 国产精品久久7| 国产精品久久久久久久久久ktv| 欧美看片网站| 欧美三日本三级少妇三2023| 欧美三级电影大全| 欧美午夜免费影院| 国产精品毛片大码女人| 国产精品久久久久久影视| 国产精品久久久久av| 欧美亚州韩日在线看免费版国语版| 欧美日韩一区免费| 国产精品久久久久77777| 国产精品久久久久久久久免费桃花 | 亚洲国产精品久久久久婷婷老年| 蜜臀av性久久久久蜜臀aⅴ四虎| 麻豆91精品| 亚洲国产精品毛片| 一区二区三区久久网| 亚洲欧美日韩一区二区| 久久久久久久久久久久久9999| 久久五月激情| 欧美日韩精品久久久| 国产丝袜美腿一区二区三区| 老司机久久99久久精品播放免费| 久久久欧美一区二区| 欧美成人一区在线| 亚洲欧洲日本一区二区三区| 宅男噜噜噜66一区二区| 午夜免费日韩视频| 免费观看成人网| 欧美日韩亚洲一区二区三区在线观看 | 久久精品色图| 欧美高清视频一区| 一级成人国产| 久久久噜噜噜久久久| 欧美精品九九| 国产日韩欧美不卡在线| 亚洲区一区二区三区| 欧美一区=区| 亚洲电影一级黄| 午夜视黄欧洲亚洲| 欧美激情91| 国精品一区二区| 国产精品99久久久久久有的能看| 欧美一区日韩一区| 亚洲精品在线观看视频| 久久国产手机看片| 欧美日韩调教| 亚洲黄色视屏| 久久久国产视频91| 亚洲乱码精品一二三四区日韩在线 | 亚洲一区在线视频| 欧美成人亚洲| 好吊妞**欧美| 欧美一二三视频| 亚洲三级免费| 老司机成人网| 国模套图日韩精品一区二区| 亚洲伊人网站| 亚洲精品国产精品久久清纯直播| 久久精品天堂| 国产亚洲一级高清| 亚洲欧美www|