锘??xml version="1.0" encoding="utf-8" standalone="yes"?>夜夜精品视频一区二区,欧美一区二区三区在线免费观看,亚洲国产欧美国产综合一区http://www.shnenglu.com/brilyf/ zh-cnTue, 18 Nov 2025 15:39:56 GMTTue, 18 Nov 2025 15:39:56 GMT60linux浣跨敤Ogre+SDL榪涜娓告垙寮鍙?/title><link>http://www.shnenglu.com/brilyf/archive/2008/10/19/64422.html</link><dc:creator>brilyf</dc:creator><author>brilyf</author><pubDate>Sun, 19 Oct 2008 09:11:00 GMT</pubDate><guid>http://www.shnenglu.com/brilyf/archive/2008/10/19/64422.html</guid><wfw:comment>http://www.shnenglu.com/brilyf/comments/64422.html</wfw:comment><comments>http://www.shnenglu.com/brilyf/archive/2008/10/19/64422.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.shnenglu.com/brilyf/comments/commentRss/64422.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/brilyf/services/trackbacks/64422.html</trackback:ping><description><![CDATA[鎴戦夋嫨鐨勬槸ubuntu8.04 + codeblocks8.02鐨勫紑鍙戠幆澧冦?br>Ogre鐢ㄧ殑鏄?.4.5鐨勭増鏈?br>涓嬮潰鏄敤SDL榪涜鐨勪竴涓畝鍗曠殑浠g爜.<br> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">#include </span><span style="color: #000000;"><</span><span style="color: #000000;">Ogre.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br>#include </span><span style="color: #000000;"><</span><span style="color: #000000;">iostream</span><span style="color: #000000;">></span><span style="color: #000000;"><br>#include </span><span style="color: #000000;"><</span><span style="color: #000000;">SDL</span><span style="color: #000000;">/</span><span style="color: #000000;">SDL.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br>#include </span><span style="color: #000000;"><</span><span style="color: #000000;">SDL</span><span style="color: #000000;">/</span><span style="color: #000000;">SDL_syswm.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br>#include </span><span style="color: #000000;"><</span><span style="color: #000000;">SDL</span><span style="color: #000000;">/</span><span style="color: #000000;">SDL_events.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br><br></span><span style="color: #0000ff;">using</span><span style="color: #000000;"> </span><span style="color: #0000ff;">namespace</span><span style="color: #000000;"> std;<br></span><span style="color: #0000ff;">using</span><span style="color: #000000;"> </span><span style="color: #0000ff;">namespace</span><span style="color: #000000;"> Ogre;<br></span><span style="color: #0000ff;">class</span><span style="color: #000000;"> AppListener : </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> FrameListener<br>{<br></span><span style="color: #0000ff;">public</span><span style="color: #000000;">:<br>    AppListener( RenderWindow </span><span style="color: #000000;">*</span><span style="color: #000000;">_win ) : win( _win )<br>    {<br>    }<br></span><span style="color: #0000ff;">public</span><span style="color: #000000;">:<br>    </span><span style="color: #0000ff;">bool</span><span style="color: #000000;"> frameStarted(</span><span style="color: #0000ff;">const</span><span style="color: #000000;"> FrameEvent</span><span style="color: #000000;">&</span><span style="color: #000000;"> evt)<br>    {<br>        </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> ( </span><span style="color: #000000;">!</span><span style="color: #000000;">FrameListener::frameStarted( evt ) )<br>            </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> </span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br><br>            SDL_PollEvent( </span><span style="color: #000000;">&</span><span style="color: #0000ff;">event</span><span style="color: #000000;"> );<br>        </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> </span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br>    }<br>    </span><span style="color: #0000ff;">bool</span><span style="color: #000000;"> frameEnded(</span><span style="color: #0000ff;">const</span><span style="color: #000000;"> FrameEvent</span><span style="color: #000000;">&</span><span style="color: #000000;"> evt)<br>    {<br>        </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> ( </span><span style="color: #000000;">!</span><span style="color: #000000;">FrameListener::frameEnded( evt ) )<br>            </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> </span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br><br>        SDL_PollEvent( </span><span style="color: #000000;">&</span><span style="color: #0000ff;">event</span><span style="color: #000000;"> );<br>        </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> ( </span><span style="color: #0000ff;">event</span><span style="color: #000000;">.type </span><span style="color: #000000;">==</span><span style="color: #000000;"> SDL_KEYDOWN )<br>        {<br>            </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> ( </span><span style="color: #0000ff;">event</span><span style="color: #000000;">.key.keysym.sym </span><span style="color: #000000;">==</span><span style="color: #000000;"> SDLK_ESCAPE )<br>                </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> </span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br>        }<br>        </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> </span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br>    }<br></span><span style="color: #0000ff;">private</span><span style="color: #000000;">:<br>    RenderWindow </span><span style="color: #000000;">*</span><span style="color: #000000;">win;<br>    SDL_Event </span><span style="color: #0000ff;">event</span><span style="color: #000000;">;<br>};<br></span><span style="color: #0000ff;">void</span><span style="color: #000000;"> parseWindowGeometry( Ogre::ConfigOptionMap</span><span style="color: #000000;">&</span><span style="color: #000000;"> config, unsigned </span><span style="color: #0000ff;">int</span><span style="color: #000000;">&</span><span style="color: #000000;"> width, unsigned </span><span style="color: #0000ff;">int</span><span style="color: #000000;">&</span><span style="color: #000000;"> height, </span><span style="color: #0000ff;">bool</span><span style="color: #000000;">&</span><span style="color: #000000;"> fullscreen );<br></span><span style="color: #0000ff;">int</span><span style="color: #000000;"> main()<br>{<br>    Root </span><span style="color: #000000;">*</span><span style="color: #000000;">root </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> Root( </span><span style="color: #000000;">"</span><span style="color: #000000;">plugins.cfg</span><span style="color: #000000;">"</span><span style="color: #000000;"> );<br>    RenderWindow </span><span style="color: #000000;">*</span><span style="color: #000000;">win;<br><br>    </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> ( </span><span style="color: #000000;">!</span><span style="color: #000000;">root</span><span style="color: #000000;">-></span><span style="color: #000000;">showConfigDialog() )<br>        </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> </span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>    </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> ( SDL_WasInit( SDL_INIT_VIDEO ) </span><span style="color: #000000;">==</span><span style="color: #000000;"> </span><span style="color: #000000;">0</span><span style="color: #000000;"> )<br>    {<br>        unsigned </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> height </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">300</span><span style="color: #000000;">, width </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">400</span><span style="color: #000000;">;<br>        </span><span style="color: #0000ff;">bool</span><span style="color: #000000;"> fullscreen;<br>        parseWindowGeometry( root</span><span style="color: #000000;">-></span><span style="color: #000000;">getRenderSystem()</span><span style="color: #000000;">-></span><span style="color: #000000;">getConfigOptions(), width, height, fullscreen );<br><br>        root</span><span style="color: #000000;">-></span><span style="color: #000000;">initialise( </span><span style="color: #0000ff;">false</span><span style="color: #000000;"> );<br><br>        SDL_Init( SDL_INIT_VIDEO );<br>        SDL_SetVideoMode( width, height </span><span style="color: #000000;">/</span><span style="color: #000000;"> </span><span style="color: #000000;">2</span><span style="color: #000000;">, </span><span style="color: #000000;">0</span><span style="color: #000000;">, </span><span style="color: #000000;">0</span><span style="color: #000000;"> );<br>        SDL_WM_SetCaption( </span><span style="color: #000000;">"</span><span style="color: #000000;">OgreTest</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">ogretest</span><span style="color: #000000;">"</span><span style="color: #000000;"> );<br><br>        SDL_SysWMinfo info;<br>        SDL_VERSION(</span><span style="color: #000000;">&</span><span style="color: #000000;">info.version);<br><br>        SDL_GetWMInfo(</span><span style="color: #000000;">&</span><span style="color: #000000;">info);<br><br>        std::</span><span style="color: #0000ff;">string</span><span style="color: #000000;"> dsp(</span><span style="color: #000000;">&</span><span style="color: #000000;">(DisplayString(info.info.x11.display)[</span><span style="color: #000000;">1</span><span style="color: #000000;">]));<br>        std::vector</span><span style="color: #000000;"><</span><span style="color: #000000;">Ogre::String</span><span style="color: #000000;">></span><span style="color: #000000;"> tokens </span><span style="color: #000000;">=</span><span style="color: #000000;"> Ogre::StringUtil::split(dsp, </span><span style="color: #000000;">"</span><span style="color: #000000;">.</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br><br>        Ogre::NameValuePairList misc;<br>        std::</span><span style="color: #0000ff;">string</span><span style="color: #000000;"> s </span><span style="color: #000000;">=</span><span style="color: #000000;"> Ogre::StringConverter::toString((</span><span style="color: #0000ff;">long</span><span style="color: #000000;">)info.info.x11.display);<br>        s </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;">"</span><span style="color: #000000;"> </span><span style="color: #000000;">+</span><span style="color: #000000;"> tokens[</span><span style="color: #000000;">1</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;">"</span><span style="color: #000000;">;<br>        s </span><span style="color: #000000;">+=</span><span style="color: #000000;"> Ogre::StringConverter::toString((</span><span style="color: #0000ff;">long</span><span style="color: #000000;">)info.info.x11.window);<br>        misc[</span><span style="color: #000000;">"</span><span style="color: #000000;">parentWindowHandle</span><span style="color: #000000;">"</span><span style="color: #000000;">] </span><span style="color: #000000;">=</span><span style="color: #000000;"> s;<br>        win </span><span style="color: #000000;">=</span><span style="color: #000000;"> root</span><span style="color: #000000;">-></span><span style="color: #000000;">createRenderWindow(</span><span style="color: #000000;">"</span><span style="color: #000000;">ogre</span><span style="color: #000000;">"</span><span style="color: #000000;">, width, height, fullscreen, </span><span style="color: #000000;">&</span><span style="color: #000000;">misc);<br><br>        </span><span style="color: #808080;">///</span><span style="color: #008000;">we need to set the window to be active by ourselves, since GLX by default sets it to false, but then activates it upon recieving some X event (which it will never recieve since we'll use SDL).<br>        </span><span style="color: #808080;">///</span><span style="color: #008000;">see OgreGLXWindow.cpp</span><span style="color: #808080;"><br></span><span style="color: #000000;">        win</span><span style="color: #000000;">-></span><span style="color: #000000;">setActive(</span><span style="color: #0000ff;">true</span><span style="color: #000000;">);<br>        win</span><span style="color: #000000;">-></span><span style="color: #000000;">setAutoUpdated(</span><span style="color: #0000ff;">true</span><span style="color: #000000;">);<br>    }<br>    </span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br>    {<br>        win </span><span style="color: #000000;">=</span><span style="color: #000000;"> root</span><span style="color: #000000;">-></span><span style="color: #000000;">initialise( </span><span style="color: #0000ff;">true</span><span style="color: #000000;"> );<br>    }<br><br>    root</span><span style="color: #000000;">-></span><span style="color: #000000;">addFrameListener( </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> AppListener( win ) );<br>    root</span><span style="color: #000000;">-></span><span style="color: #000000;">startRendering();<br>    </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> </span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>}<br><br></span><span style="color: #0000ff;">void</span><span style="color: #000000;"> parseWindowGeometry( Ogre::ConfigOptionMap</span><span style="color: #000000;">&</span><span style="color: #000000;"> config, unsigned </span><span style="color: #0000ff;">int</span><span style="color: #000000;">&</span><span style="color: #000000;"> width, unsigned </span><span style="color: #0000ff;">int</span><span style="color: #000000;">&</span><span style="color: #000000;"> height, </span><span style="color: #0000ff;">bool</span><span style="color: #000000;">&</span><span style="color: #000000;"> fullscreen )<br>{<br>    Ogre::ConfigOptionMap::iterator opt </span><span style="color: #000000;">=</span><span style="color: #000000;"> config.find( </span><span style="color: #000000;">"</span><span style="color: #000000;">Video Mode</span><span style="color: #000000;">"</span><span style="color: #000000;"> );<br>    </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> ( opt </span><span style="color: #000000;">!=</span><span style="color: #000000;"> config.end() )<br>    {<br>        Ogre::String val </span><span style="color: #000000;">=</span><span style="color: #000000;"> opt</span><span style="color: #000000;">-></span><span style="color: #000000;">second.currentValue;<br>        Ogre::String::size_type pos </span><span style="color: #000000;">=</span><span style="color: #000000;"> val.find( </span><span style="color: #000000;">'</span><span style="color: #000000;">x</span><span style="color: #000000;">'</span><span style="color: #000000;"> );<br>        </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> ( pos </span><span style="color: #000000;">!=</span><span style="color: #000000;"> Ogre::String::npos )<br>        {<br>            width </span><span style="color: #000000;">=</span><span style="color: #000000;"> Ogre::StringConverter::parseUnsignedInt( val.substr( </span><span style="color: #000000;">0</span><span style="color: #000000;">, pos ) );<br>            height </span><span style="color: #000000;">=</span><span style="color: #000000;"> Ogre::StringConverter::parseUnsignedInt( val.substr( pos </span><span style="color: #000000;">+</span><span style="color: #000000;"> </span><span style="color: #000000;">1</span><span style="color: #000000;"> ) );<br>        }<br><br>        opt </span><span style="color: #000000;">=</span><span style="color: #000000;"> config.find( </span><span style="color: #000000;">"</span><span style="color: #000000;">Full Screen</span><span style="color: #000000;">"</span><span style="color: #000000;"> );<br>        </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> ( opt </span><span style="color: #000000;">!=</span><span style="color: #000000;"> config.end() )<br>        {<br>            fullscreen </span><span style="color: #000000;">=</span><span style="color: #000000;"> ( opt</span><span style="color: #000000;">-></span><span style="color: #000000;">second.currentValue </span><span style="color: #000000;">==</span><span style="color: #000000;"> </span><span style="color: #000000;">"</span><span style="color: #000000;">Yes</span><span style="color: #000000;">"</span><span style="color: #000000;"> );<br>        }<br>    }<br>}<br></span></div> 鍘熺悊寰堢畝鍗曘?br>鍥撅細<br><img alt="" src="http://www.shnenglu.com/images/cppblog_com/brilyf/Screenshot.png"><br><br><img src ="http://www.shnenglu.com/brilyf/aggbug/64422.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/brilyf/" target="_blank">brilyf</a> 2008-10-19 17:11 <a href="http://www.shnenglu.com/brilyf/archive/2008/10/19/64422.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>OpenGL涓敤FreeImagehttp://www.shnenglu.com/brilyf/archive/2008/09/29/63033.htmlbrilyfbrilyfMon, 29 Sep 2008 05:14:00 GMThttp://www.shnenglu.com/brilyf/archive/2008/09/29/63033.htmlhttp://www.shnenglu.com/brilyf/comments/63033.htmlhttp://www.shnenglu.com/brilyf/archive/2008/09/29/63033.html#Feedback5http://www.shnenglu.com/brilyf/comments/commentRss/63033.htmlhttp://www.shnenglu.com/brilyf/services/trackbacks/63033.html闃呰鍏ㄦ枃

brilyf 2008-09-29 13:14 鍙戣〃璇勮
]]>
鎰熻阿鎮?鍑虹杞﹀徃鏈篬鐨朅82038]http://www.shnenglu.com/brilyf/archive/2008/09/28/62951.htmlbrilyfbrilyfSun, 28 Sep 2008 00:52:00 GMThttp://www.shnenglu.com/brilyf/archive/2008/09/28/62951.htmlhttp://www.shnenglu.com/brilyf/comments/62951.htmlhttp://www.shnenglu.com/brilyf/archive/2008/09/28/62951.html#Feedback8http://www.shnenglu.com/brilyf/comments/commentRss/62951.htmlhttp://www.shnenglu.com/brilyf/services/trackbacks/62951.html    鍗堝鏃跺垎錛屽垎澶栧瘋闈欙紝鍠у殻浜夊婧愮殑鍦洪潰鍦ㄨ繖鏃跺凡鍙仠錛岀湡鐨勫緢闅炬墦鍒拌濺錛屾洿浣曞喌鎴戣繖涓甫琛鐨勪激鍛橈紵
    鎴戜嬌鍔插湴鎸ユ墜緇欎粬浠紝浠栦滑璧拌繎鐪嬪埌鎴戞祦琛鐨勬墜錛岃繛鎷涘懠閮戒笉鎷涘懠錛屽埄椹蛋浜猴紝鑰屼綘涓嶄竴鏍鳳紝浣犱笉鐩鎬俊榪蜂俊銆?br>    浣犳病鏈夊憡璇夋垜浣犵殑鍚嶅瓧錛岀敋鑷寵繛濮撻兘娌℃湁錛屽洜涓鴻姝f祦錛屼綘欏句笉鍙婂璇翠竴鍙ヨ瘽銆?br>    灝嗘垜甯﹀埌浜嗘渶榪戠殑鍖婚櫌鎸備簡鎬ヨ瘖錛屽綋鎴戣浠橀挶鐨勬椂鍊欙紝浣犲嵈鎺ㄨ緸浜嗐傜劧鍚庤繛鎷涘懠娌℃墦灝辮蛋浜嗭紝榪欎竴鍒囧ソ鍍忛兘鏄湡鐨勩傛垜鐪熺殑寰堥毦鐩鎬俊榪欎釜閲戦挶鐨勭ぞ浼氳繕浼氭湁榪欐牱鐨勪竴浣嶅ソ浜恒傛垜鐪熺殑涓嶇煡閬撴庝箞鎰熻阿錛屾瘯绔熸垜絀峰鐢熶竴涓備綘鎸芥晳鐨勪笉鍙槸鎴戠殑涓鍙墜錛屾洿澶氱殑鏄垜鐨勬ⅵ鎯籌紝浣滀負涓涓▼搴忓憳瑕佺敤鎴戠殑鎵嬫潵鍒涢犳湭鏉ャ傛垜鐜板湪涓嶈兘緇欎綘鐗╄川鏂歸潰鐨勬劅璋紝涔熶笉鑳戒負浣犲仛浜涗粈涔堛備絾鏄垜鐪熺殑鍙戣嚜鍐呭績甯屾湜浣犲ソ浜轟竴鐢熷鉤瀹夛紝鍏ㄥ騫哥銆傛垜涓鐩存兂鍔炴硶鍘繪劅璋㈡偍錛屼粖澶╂垜灝遍氳繃blog鍚с備負浣犵紱忥紒錛侊紒



brilyf 2008-09-28 08:52 鍙戣〃璇勮
]]>
OpenGL鑳屾櫙鍥為【綃囦互鍙婂疄鐜頒竴涓建榪圭悆[arcball]http://www.shnenglu.com/brilyf/archive/2008/09/27/62889.htmlbrilyfbrilyfSat, 27 Sep 2008 05:57:00 GMThttp://www.shnenglu.com/brilyf/archive/2008/09/27/62889.htmlhttp://www.shnenglu.com/brilyf/comments/62889.htmlhttp://www.shnenglu.com/brilyf/archive/2008/09/27/62889.html#Feedback7http://www.shnenglu.com/brilyf/comments/commentRss/62889.htmlhttp://www.shnenglu.com/brilyf/services/trackbacks/62889.htmlOpenGL鍙戝睍鐨勫巻鍙詫細
    OpenGL鐨勫墠韜槸SGI鍏徃鎵寮鍙戠殑IRIS GL鍥懼艦鍑芥暟搴擄紝OpenGL涓嶆槸涓縐嶇紪紼嬭璦錛岃屾槸涓涓洿鍍廋榪愯鏃跺嚱鏁板簱銆侽penGL鏄竴涓紑鏀劇殑宸ヤ笟鏍囧噯錛岃櫧鐒跺畠鏄敱SGI棣栧垱錛屼絾瀹冪殑鏍囧噯涓嶆槸鎺у埗鍦⊿GI鎵嬩腑錛岃屾槸鐢監penGL浣撶郴緇撴瀯瀹℃牳濮斿憳浼?ARB)鎺岀銆侫RB鏄敱SGC銆丏EC銆両BM銆両ntel鍜孧icrosoft絳夎憲鍚嶅叕鍙鎬簬1992騫村垱绔嬶紝鍚庢潵闄嗙畫鍔犱簡nVidia銆丄TI絳夊浘褰㈣姱鐗囬鍩熺殑宸ㄦ搸銆侫RB姣?騫村紑涓嬈′細錛屽OpenGL瑙勮寖榪涜緇存姢鍜屾敼鍠勶紝騫跺嚭鍙拌鍒掑OpenGL鏍囧噯榪涜鍗囩駭錛屼嬌OpenGL涓鐩翠笌鏃朵唬淇濇寔鍚屾銆?br>    2006騫達紝SGI鍏徃鎶奜penGL鏍囧噯鐨勬帶鍒朵粠ARB縐諱氦緇橩hronos灝忕粍錛?a >www.khronos.org錛夈侹hronos鏄竴涓敱鎴愬憳鎻愪緵璧勯噾鐨勮涓氬崗浼氾紝涓撴敞浜庡紑鏀懼獟浣撴爣鍑嗙殑鍒涘緩鍜岀淮鎶ゃ傜洰鍓岾hronos璐熻矗OpenGL鐨勫彂灞曞拰鍗囩駭銆?br>濡傚浘錛?br>
涓嶰penGL鐩稿叧鐨勫嚱鏁板簱錛?br>    OpenGL宸ュ叿鍑芥暟搴?GLU)鍖呭惈浜嗕竴浜涘嚱鏁幫紝瀹冧滑鍒╃敤浣庡眰鐨凮penGL鍑芥暟鏉ユ墽琛屼竴浜涚壒瀹氱殑浠誨姟銆傝瀹氱壒瀹氱殑鐭╅樀錛坓luLookAt絳?錛孫penGL涓殑GLU蹇呴』浠lu寮澶淬?br>瀵逛簬紿楀彛緋葷粺鐨勫姛鑳戒篃榪涜浜嗘墿灞曪紝濡傛灉鍦╨inux涓嬩嬌鐢▁紿楀彛鐨勮瘽錛屼嬌鐢℅LX鍑芥暟搴擄紝鑰屽繀欏諱互glX寮澶淬傚浜庡井杞潵璇達紝浠gl寮澶淬侷BM鐨刼s/2鑰岃█錛孭GL鏄樉紺虹鐞嗗櫒涓嶰penGL涔嬮棿鐨勬帴鍙o紝浠gl寮澶淬傚浜嶢pple,AGL鏄敮鎸丱penGL鐨勭郴緇熸帴鍙o紝鎵鏈夌殑AGL鍑芥暟閮戒互agl寮澶淬?br>    OpenGL瀹炵敤宸ュ叿搴? GLUT,OpenGL Utility Toolkit )鏄疢ark Kilgrad鎵緙栧啓鐨勪竴涓嫭绔嬩簬紿楀彛緋葷粺鐨勫伐鍏峰寘錛屽畠鐨勭洰鐨勬槸闅愯棌涓嶅悓紿楀彛緋葷粺鎵甯︽潵鐨勫鏉傛с侴LUT鏄笅涓鑺傜殑涓婚錛孏LUT鍑芥暟浠lut寮澶淬?br>鍦∣penGL涓?鎴戜滑甯哥敤鍒拌建榪圭悆,涓嬮潰灝卞杞ㄨ抗鐞冩潵鍋氱偣涓滆タ:
褰撴垜浠瀵熶笁緇寸┖闂寸殑鐗╀綋鏈夊緢澶氱鏂規硶璁╀竴涓敤鎴鋒潵閫夋嫨涓涓鐐癸紝浣嗘槸鎴戣涓鴻建榪圭悆鏄渶濂界殑銆?br>杞ㄨ抗鐞冪殑鍩烘湰鍘熺悊鏄細
鍒涘緩涓涓洿緇曠潃鐗╀綋鐨勭悆錛岀劧鍚庣敤鎴峰崟鍑葷悆涓婇潰鐨勪竴涓偣錛屽啀鎷栧姩榪欎釜鐐瑰埌涓涓綅緗紙鍦ㄥ睆騫曚笂錛夛紝璁╁璞¤窡鐫榪欎釜鍚戦噺鏃嬭漿銆?br>瀵繪壘榧犳爣浣嶇疆錛?br>絎竴姝ュ氨鏄鎵懼埌榧犳爣鐨勪綅緗紝鎴戜滑鍙互閫氳繃鑾峰緱瑙嗚鍙樻崲鐭╅樀銆?br>鍙互閫氳繃涓嬮潰鐨勫艦寮忔潵鑾峰緱鐘舵佺煩闃碉細

GLdouble projection_matrix[16= 1000010000100001 };
GLdouble modelview_matrix[
16= 1000010000100001 };
int viewport_matrix[4= 00640480 };

glGetDoublev( GL_PROJECTION_MATRIX, projection_matrix );
glGetDoublev( GL_MODELVIEW, modelview_matrix );
glGetIntegerv( GL_VIEWPORT, viewport_matrix );

鎴戜滑鑾峰彇榪欎簺鐭╅樀鍚庨潰浣跨敤錛屾垜浠彲浠ヤ嬌鐢ㄤ粬浠潵澶勭悊榧犳爣杈撳叆錛岄紶鏍囧潗鏍噈ouse_x鍜宮ouse_y錛屽彲浠ラ氳繃gluUnProject鏉ヨ幏寰楅紶鏍囦笅闈㈠満鏅腑鐨勪竴涓偣銆?br>

GLdouble x, y, z;
gluUnProject( mouse_x, mouse_y, 
             modelview_matrix, 
             projection_matrix,
             viewport_matrix,
             
&x, &y, &z );

涓鏃﹀満鏅腑鐨勮繖涓偣琚壘鍒幫紝闂鐨勫叧閿氨鏄緩绔嬩竴涓粠鎽勮薄鏈轟綅緗埌榪欎釜鐐圭殑鍏夌嚎錛岀劧鍚庡鎵捐繖涓厜綰垮拰榪欎釜杞ㄨ抗鐞冪殑浜ょ偣銆傝繖涓厜綰挎槸E + t * ( P - E )鐨勭偣闆嗭紝榪欓噷E鏄溂鐫涚偣浣嶇疆錛孭鏄満鏅腑鐨勯偅涓偣錛宼鏄竴涓彉閲忥紝鑰岃建榪圭悆鏄疭鐨勭偣闆嗭紝榪欓噷S^2 = r錛宺鏄建榪圭悆鐨勫崐寰勩傚鏋淪 = E + t * ( P - E )錛岄偅涔堝瓨鍦ㄤ竴涓偣鏃㈠湪杞ㄨ抗鐞冧笂錛屽張鍦ㄥ厜綰夸笂錛岃繖鏍鳳紝鎴戜滑鍙互閫氳繃甯﹀叆娉曟帹鍑猴細( E + t * ( P - E ) ) ^ 2 = r銆傛垜浠煡閬撳悜閲廍銆丳浠ュ強鏍囬噺r錛屾墍浠ュ彲浠ユ帹鍑烘潵t錛岃繖鏄竴涓簩嬈℃柟紼嬶紝濡傛灉鏃犺В錛岃鏄庡厜綰垮拰杞ㄨ抗鐞冩棤浜ょ偣銆傚鏋滄湁2涓В錛屽簲褰撻夋嫨鏈闈犺繎鐪肩潧鐨勯偅涓В銆?br>
杞ㄨ抗鐞冪殑鏃嬭漿闂錛?br>濡傛灉浣犲崟鍑繪嫋鎷借建榪圭悆涓婄殑涓涓偣鍒板彟涓涓綅緗紝璇ュ浣曞仛鍛紵
涓涓畝鍗曠殑鏂規硶錛屽仛璧風偣鍒扮粨鏉熺偣鐨剎涔樹負鏃嬭漿杞達紝鐒跺悗瀵繪壘灝嗚鏃嬭漿鐨勮搴︼紝榪欎釜鍙互閫氳繃鍋氱偣涔樺緱鍒般?br>
璁$畻鏃嬭漿鐭╅樀錛?br>鎴戜滑閫氳繃鍥涘厓鏁版潵瑙e喅瀹冦傚洓鍏冩暟鏄簩緇村鏁扮殑鎵╁睍錛岀壒鍒傚悎鍋氭棆杞?br>濡傛灉鎴戜滑鏈変竴涓崟浣嶅悜閲? x, y, z )錛屾垜浠彲浠ラ氳繃涔樹互鏃嬭漿瑙掑害鐨勬寮︾殑涓鍗婅幏寰楀洓鍏冩暟鐨剎, y, z閮ㄥ垎鐨勪慨姝e鹼紝w鏄敱鏃嬭漿瑙掔殑鐨勪綑寮︾殑涓鍗婂喅瀹氥傚ぇ瀹剁煡閬撴墍鏈夌殑榪欎箞鍊煎彲浠ヨ緇勮榪涗竴涓棆杞煩闃碉細

* w + x *- y * y - z * z,  2 * x * y + 2 * w * z,          2 * x * z - 2 * w * y,          0 
2 * x * y - 2 * w * z,         w * w - x * x + y * y - z * z,  2 * y * z + 2 * w * x,          0 
2 * x * z + 2 * w * y,         2 * y * z - 2 * w * x,          w * w - x * x - y * y + z * z,  0 
0,                             0,                              0,  w * w + x * x + y * y + z * z



 



brilyf 2008-09-27 13:57 鍙戣〃璇勮
]]>
Ogre鍦ㄦ父鎴忓紑鍙戜腑閫愬撫鏇存柊http://www.shnenglu.com/brilyf/archive/2008/09/24/62714.htmlbrilyfbrilyfWed, 24 Sep 2008 14:11:00 GMThttp://www.shnenglu.com/brilyf/archive/2008/09/24/62714.htmlhttp://www.shnenglu.com/brilyf/comments/62714.htmlhttp://www.shnenglu.com/brilyf/archive/2008/09/24/62714.html#Feedback2http://www.shnenglu.com/brilyf/comments/commentRss/62714.htmlhttp://www.shnenglu.com/brilyf/services/trackbacks/62714.html鏈鏂扮殑Ogre紼沖畾鐗堟湰鏄?.6.0RC1[shoggoth],鍦?.6.0鐗堟湰涓璒greFrameListener.h涓殑綾籉rameListener澶氬嚭浜嗕竴涓彨virtual bool frameRenderingQueued( const FrameEvent& evt ) { return true; }鐨勫嚱鏁般傝繖涓嚱鏁板拰virtual bool frameStarted( const FrameEvent& evt ) { return true; }鏈夋槑鏄劇殑鍖哄埆銆?br>鍦ㄦ簮浠g爜涓frameStarted鐨勬敞閲婃槸錛?br>        /** Called when a frame is about to begin rendering.
  @remarks
   This event happens before any render targets have begun updating.
            @return
                True to go ahead, false to abort rendering and drop
                out of the rendering loop.
        */
澶т綋緲昏瘧鏄細
褰撲竴甯у皢瑕佸紑濮嬫覆鏌撶殑鏃跺欒璋冪敤銆?br>榪欎釜浜嬩歡鍙戠敓鍦ㄦ墍鏈夋覆鏌撶洰鏍囧凡緇忓紑濮嬫洿鏂頒箣鍓嶃?br>鑰屽湪婧愪唬鐮佷腑瀵筬rameRenderingQueued鐨勬敞閲婃槸錛?br>  /** Called after all render targets have had their rendering commands
   issued, but before render windows have been asked to flip their
   buffers over.
  @remarks
   The usefulness of this event comes from the fact that rendering
   commands are queued for the GPU to process. These can take a little
   while to finish, and so while that is happening the CPU can be doing
   useful things. Once the request to 'flip buffers' happens, the thread
   requesting it will block until the GPU is ready, which can waste CPU
   cycles. Therefore, it is often a good idea to use this callback to
   perform per-frame processing. Of course because the frame's rendering
   commands have already been issued, any changes you make will only
   take effect from the next frame, but in most cases that's not noticeable.
  @return
   True to continue rendering, false to drop out of the rendering loop.
  */
緲昏瘧涓猴細
鍦ㄦ墍鏈夋覆鏌撶洰鏍囧凡緇忎紶鍑轟粬浠殑娓叉煋鍛戒護涔嬪悗錛屽茍涓斿湪娓叉煋紿楀彛琚姹傚幓閲婃斁浠栦滑鐨勫撫涔嬪墠銆?br>榪欎釜浜嬩歡鐨勭敤閫斿叾瀹炴槸涓轟簡鎶奊PU澶勭悊鐨勬覆鏌撳懡浠ゆ帹鍏ラ槦鍒楋紝榪欎簺鍙姳璐逛竴鐐瑰姛澶幓瀹屾垚錛?br>鑰屽氨榪欎竴孌墊椂闂碿pu鍙互琚敤鏉ュ鐞嗕竴浜涙湁鐢ㄧ殑浜嬫儏銆備竴鏃﹂噴鏀懼撫榪欎釜鏃墮棿鍙戠敓錛岃繖鏉$嚎紼嬭姹傚皢瑕佽
鍫靛鐩村埌GPU鍑嗗濂戒簡錛岃繖鍙兘嫻垂浜哻pu鐨勬覆鏌撴椂闂達紝鐒惰岋紝浣滀負鍥炶皟鍑芥暟鍘婚愬撫澶勭悊涔熸槸涓涓ソ娉ㄦ剰銆?br>褰撶劧鍥犱負甯х殑娓叉煋鍛戒護宸茬粡琚斁鍑猴紝浠諱綍浣犲仛鐨勬敼鍙樺彧瀵逛笅涓甯ф湁鏁堬紝浣嗘槸澶у鏁版儏鍐典笅榪欎笉鏄緢鏄庢樉鐨勩?br>
鍔犲叆浜嗚繖涓嚱鏁頒篃璇存槑浜哋gre1.6.0瀵筭pu閲嶈浜嗐?br>鍦╫gre鑷甫鐨勪緥瀛愪腑錛屽嚑涔庨兘鏄敤examplelistener鏉ュ鐞嗘父鎴忓驚鐜傝繖鏄庢樉涓嶇鍚堟瘮杈冨ぇ鐐圭殑娓告垙寮鍙戙傝屽鏋?br>浣犳兂瑕佸湪澶у瀷娓告垙涓簲鐢ㄨ繖涓父鎴忓驚鐜傛垜鎰熻棣栧厛搴旇鏈変竴涓崟浠剁殑甯х洃鍚郴緇熼氳繃娓告垙涓誨簲鐢ㄧ▼搴忔潵鍒濆鍖栥傜劧鍚庡氨鏄敤璁捐妯″紡涓殑Bridge鐨勫皢澹版槑鍜屾墽琛屽垎寮鐨勫姛鑳芥潵澶勭悊榪欎釜鏂規硶銆?br>浼唬鐮侊細

//涓涓儴浠剁殑綾?/span>
class BrilyfWidgets
{
    
bool frameRenderingQueued( const FrameEvent& evt ); 
    
}
;


//綾葷殑鍓嶅悜澹版槑
class BrilyfApplication;

class BrilyfListenSystem : public Singleton<BrilyfListenSystem>public FrameListener
{
    
bool frameRenderingQueued( const FrameEvent& evt ) 
    
{
        
//涓浜涚郴緇熺己鐪佺殑璁劇疆
        
        
//鍏抽敭閮ㄥ垎
        BrilyfApplication::getSingletonPtr()->frameRenderQueued( const FrameEvent& evt );
        BrilyfApplication::getSingletonPtr()
->frameEnded( const FrameEvent& evt );
    }

    
bool frameEnded( const FrameEvent& evt );    
}
;

//鎵鏈夌殑鍏朵粬涓浜涢儴浠剁殑鍒濆鍖栭兘瑕侀氳繃BrilyfApplication,瀹冨氨鏄父鎴忕殑涓葷閬擄紝鎺у埗鐫鎵鏈夐儴浠剁殑鐢熷懡鍛ㄦ湡錛屾彁渚涗簡
//frameRenderingQueued鍜宖rameEnded鐨勬帴鍙d緵鍏朵粬鐨勯儴浠舵潵濉厖銆?/span>
class BrilyfApplication : public Singleton<BrilyfApplication>
{
    
//涓浜涘浜庡崟浠跺垵濮嬪寲鐨勫鐞?/span>
    
    
    
//瀵瑰簲鐨勪簨浠?/span>
    bool frameRenderingQueued( const FrameEvent& evt ) 
    

        
for ( int i = 0; i < 16; i++ )
            BrilyfWidgets.frameRenderingQueued(  );
    }

    
bool frameEnded( const FrameEvent& evt );

    BrilyfWidgets mWidgets[
16];
}
;



brilyf 2008-09-24 22:11 鍙戣〃璇勮
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲尤物在线| 乱中年女人伦av一区二区| 欧美一级理论片| 亚洲电影免费在线| 国产精品欧美一区二区三区奶水 | 欧美刺激性大交免费视频| 午夜视频久久久久久| 亚洲卡通欧美制服中文| 欧美aⅴ99久久黑人专区| 欧美一区二区三区在线观看视频| 一本色道久久综合亚洲精品按摩| 在线成人激情黄色| 国产亚洲一级高清| 国产亚洲视频在线| 国产精品日韩高清| 国产精品国产自产拍高清av王其 | 国产婷婷色一区二区三区四区| 欧美涩涩网站| 欧美日韩精品不卡| 欧美国产一区视频在线观看| 欧美成人dvd在线视频| 久久综合色婷婷| 久久久久欧美精品| 欧美在线视频免费观看| 欧美亚洲一级| 午夜久久久久久| 亚洲嫩草精品久久| 亚洲欧美日韩国产一区二区三区| 一区二区三区欧美成人| 日韩亚洲在线| 亚洲图片你懂的| 亚洲香蕉网站| 亚洲专区一区二区三区| 亚洲在线一区二区三区| 亚洲综合不卡| 亚洲欧美日韩成人| 性欧美办公室18xxxxhd| 欧美一区二区三区四区在线观看 | 国产精品一二三| 国产精品成人午夜| 国产精品日日摸夜夜摸av| 国产精品入口尤物| 国产欧美一区二区三区久久人妖| 国产日韩三区| 一区视频在线看| 亚洲黄色天堂| 在线一区免费观看| 性伦欧美刺激片在线观看| 欧美一区免费视频| 久热这里只精品99re8久| 欧美黄色精品| 9人人澡人人爽人人精品| 亚洲一区免费在线观看| 久久国产精品99久久久久久老狼| 久久久久久久久久久久久女国产乱| 久久亚洲精品网站| 欧美另类videos死尸| 欧美性色视频在线| 国产亚洲一区二区三区| 亚洲欧洲在线视频| 亚洲免费中文| 久久综合色播五月| 亚洲日本欧美| 亚洲一二三级电影| 久久久蜜桃精品| 欧美日韩国产首页| 国产亚洲一本大道中文在线| 亚洲精品视频一区| 性色一区二区| 欧美大片在线观看一区二区| 99精品国产一区二区青青牛奶| 午夜日韩激情| 欧美日韩国产91| 国产亚洲高清视频| 日韩一区二区精品葵司在线| 欧美一区二区日韩| 亚洲国产精品传媒在线观看| 亚洲免费中文| 欧美日韩xxxxx| 黄色成人av网站| 中文亚洲欧美| 美国成人毛片| 在线亚洲电影| 免费h精品视频在线播放| 欧美日韩亚洲国产精品| 伊人成人网在线看| 亚洲欧美日韩国产一区二区| 欧美福利视频在线| 校园激情久久| 欧美色欧美亚洲高清在线视频| 一区二区三区在线免费播放| 亚洲永久网站| 亚洲福利久久| 欧美主播一区二区三区美女 久久精品人| 欧美电影免费观看大全| 国产一区二区三区高清| 在线亚洲免费视频| 欧美激情一区二区三区四区| 香蕉成人啪国产精品视频综合网| 欧美精品激情在线观看| 伊人久久亚洲美女图片| 欧美一区精品| 一区二区三区日韩精品视频| 欧美va天堂va视频va在线| 国产一区二区久久久| 亚洲一区亚洲| 亚洲人成人一区二区三区| 久久久久久久综合日本| 国产精品入口福利| 亚洲自拍另类| 91久久在线观看| 另类av一区二区| 亚洲黄网站黄| 欧美在线一二三四区| 亚洲日本乱码在线观看| 久久久久久久久久久久久久一区| 国产精品亚洲视频| 亚洲免费视频观看| 亚洲精选在线观看| 欧美成人第一页| 亚洲电影欧美电影有声小说| 久久亚洲风情| 香蕉尹人综合在线观看| 欧美视频久久| 日韩一区二区福利| 最新69国产成人精品视频免费| 另类国产ts人妖高潮视频| 国产欧美精品日韩| 欧美亚洲三区| 亚洲一区二区在线免费观看视频 | 久久久夜色精品亚洲| 国内久久精品| 久久久在线视频| 久久岛国电影| 狠狠色丁香婷综合久久| 久久亚洲精品一区二区| 久久福利精品| 樱桃成人精品视频在线播放| 麻豆成人综合网| 久久综合给合久久狠狠色| 亚洲第一中文字幕在线观看| 欧美成人第一页| 欧美大片在线看| 9l国产精品久久久久麻豆| 99re在线精品| 国产精品久久久久一区二区三区共| 亚洲欧美一区二区视频| 亚洲欧美精品suv| 国内精品久久久久影院优| 久久影院午夜片一区| 蜜桃久久av一区| 99精品国产福利在线观看免费| 亚洲裸体视频| 国产精品欧美精品| 久久精品五月| 老司机午夜精品视频| 99re6热只有精品免费观看 | 欧美日韩免费视频| 亚洲欧美日韩系列| 欧美一区二区免费视频| 一区二区在线观看视频在线观看| 免费亚洲婷婷| 欧美另类变人与禽xxxxx| 亚洲免费在线视频| 久久国产精品网站| 亚洲欧洲一区二区三区在线观看 | 欧美日韩一区二区三区视频| 亚洲免费在线播放| 久久激情五月激情| 亚洲精品一区二| 亚洲四色影视在线观看| 加勒比av一区二区| 亚洲人精品午夜在线观看| 国产乱码精品一区二区三区不卡| 久久久久久综合| 欧美激情自拍| 午夜宅男欧美| 久久免费视频观看| 中文久久乱码一区二区| 久久激五月天综合精品| 亚洲视频999| 久久久精彩视频| 中文网丁香综合网| 久久久久久有精品国产| 亚洲——在线| 久久一综合视频| 亚洲自拍电影| 免费在线成人av| 欧美影院午夜播放| 欧美国产免费| 亚洲精品一区二区三区不| 红桃视频欧美| 亚洲电影免费观看高清| 国产精品av久久久久久麻豆网| 久久精品国产亚洲高清剧情介绍| 免费在线日韩av| 欧美一区免费视频| 欧美精品成人| 久久漫画官网| 欧美日韩mv|