﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-gogoplayer-随笔分类-Ogre</title><link>http://www.cppblog.com/gogoplayer/category/4249.html</link><description>Ogre,MySQL&amp;&amp;MySQL++,光线跟踪</description><language>zh-cn</language><lastBuildDate>Thu, 22 May 2008 23:06:32 GMT</lastBuildDate><pubDate>Thu, 22 May 2008 23:06:32 GMT</pubDate><ttl>60</ttl><item><title>GPU精粹2到手啦</title><link>http://www.cppblog.com/gogoplayer/archive/2007/07/15/28067.html</link><dc:creator>gogoplayer</dc:creator><author>gogoplayer</author><pubDate>Sun, 15 Jul 2007 06:30:00 GMT</pubDate><guid>http://www.cppblog.com/gogoplayer/archive/2007/07/15/28067.html</guid><wfw:comment>http://www.cppblog.com/gogoplayer/comments/28067.html</wfw:comment><comments>http://www.cppblog.com/gogoplayer/archive/2007/07/15/28067.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/gogoplayer/comments/commentRss/28067.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/gogoplayer/services/trackbacks/28067.html</trackback:ping><description><![CDATA[杂七杂八的事情终于结束了，可以专心研究GPU了，在公司和azure交流中了解到GPU精粹2已经出版，下午去了书店，只有三本了，很热销阿，翻开书，有彩页，爽啊，不过价格也很爽，要128大洋，破财了，接下来几天啃包子好了。相对于第一版，第二版书厚了一些，越厚越好啊，大致看了一下，越翻越有看头，有福啦，^_^
<img src ="http://www.cppblog.com/gogoplayer/aggbug/28067.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/gogoplayer/" target="_blank">gogoplayer</a> 2007-07-15 14:30 <a href="http://www.cppblog.com/gogoplayer/archive/2007/07/15/28067.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ogre文件系统</title><link>http://www.cppblog.com/gogoplayer/archive/2006/12/05/16029.html</link><dc:creator>gogoplayer</dc:creator><author>gogoplayer</author><pubDate>Tue, 05 Dec 2006 13:57:00 GMT</pubDate><guid>http://www.cppblog.com/gogoplayer/archive/2006/12/05/16029.html</guid><wfw:comment>http://www.cppblog.com/gogoplayer/comments/16029.html</wfw:comment><comments>http://www.cppblog.com/gogoplayer/archive/2006/12/05/16029.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/gogoplayer/comments/commentRss/16029.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/gogoplayer/services/trackbacks/16029.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;这几日折腾了一下Ogre的文件系统，我总想把它的文件系统从它的庞大代码堆中分理出来，这样我就可以重复利用这一部分代码，^_^，经过一翻测试，Ogre的文件系统完全被我分理处来，而且非常好用，我把他加入到我原来的2D项目中，工作非常顺利，Ogre抽象的他好了，以至于我几乎不用怎么担心他的兼容性，下面就简要介绍一下分离方法。<br>&nbsp;&nbsp;&nbsp;首先，我要说得是：我所分离的部分只是文件管理部分，不包括Ogre的资源相关部分，涉及到Ogre的资源部分不属于本文探讨范围，其次，Ogre文件系统相关知识可以从网上下载《Ogre分析之文件系统》仔细研究，Mythma的文档给了我很大的帮助，再次一并感谢。<br>&nbsp;&nbsp;&nbsp;Ogre文件系统的核心是Archive和DataStream，从Ogre继承结构可以看出，他们都是抽象基类，Ogre自带了Ogre::FileSystemArchive和Ogre::ZipArchive，分别用于实现文件夹和压缩包，如果你要实现自己的文件格式，比如自己的数据包，一个包里有多个文件，只需写个类似ZipArchive的类，然后向ArchiveManager注册即可，ArchiveManager是文件管理类。DataStream提供了操纵文件的统一接口，我在下面使用了size()和read()，他有四个派生类。<br>&nbsp;&nbsp;&nbsp;在这次操作种，找到OgreArchive.h，OgreArchiveFactory.h，OgreArchiveManager.h，OgreZip.h及其他们对应的实现文件（如果有），把他们复制出来，去掉这些头文件中关于资源管理的信息，当然，还有其他相关文件需要提取，例如Log方面的，智能指针也是，还有Singleton等，这些在我上次试验中已经提取完毕，这里不再重复，这篇文章只是那篇文章的补充，测试代码判断如下，实现了用Ogre接口从文件夹和Zip读取数据给DX原始API使用。<br><br>&nbsp;ArchiveFactory *mFileSystemArchiveFactory = new FileSystemArchiveFactory();<br>&nbsp;ArchiveManager::getSingleton().addArchiveFactory( mFileSystemArchiveFactory );<br>&nbsp;FileSystemArchive *pFileSystem = static_cast&lt;FileSystemArchive *&gt;(m_ArchiveMgr.load("../Media", "FileSystem"));<br>&nbsp;StringVectorPtr pStrVectorFileSystem = pFileSystem-&gt;list(true);</p>
<p>&nbsp;ArchiveFactory *mZipArchiveFactory = new ZipArchiveFactory();<br>&nbsp;ArchiveManager::getSingleton().addArchiveFactory( mZipArchiveFactory );<br>&nbsp;ZipArchive *pZip = static_cast&lt;ZipArchive *&gt;(m_ArchiveMgr.load("../Media/Package/OgreCore.zip", "Zip"));<br>&nbsp;StringVectorPtr pStrVectorZip = pZip-&gt;list(true);</p>
<p>&nbsp;/*&nbsp;从文件中读取数据<br>&nbsp;DataStreamPtr pDataStream = pFileSystem-&gt;open("Texture/mm.jpg");<br>&nbsp;size_t s = pDataStream.getPointer()-&gt;size();<br>&nbsp;char *pBuf = new char[s];<br>&nbsp;pDataStream.getPointer()-&gt;read(static_cast&lt;void *&gt;(pBuf), s);<br>*/<br></p>
<p>//从Zip读取数据<br>&nbsp;DataStreamPtr pDataStream = pZip-&gt;open("OgreCore/ogretext.png");<br>&nbsp;size_t s = pDataStream.getPointer()-&gt;size();<br>&nbsp;char *pBuf = new char[s];<br>&nbsp;pDataStream.getPointer()-&gt;read(static_cast&lt;void *&gt;(pBuf), s);<br><br>//自定义类，实际是调用D3DXCreateTextureFromFileInMemoryEx<br>&nbsp;CScene9::CreateGraph2D(&amp;graph);<br>&nbsp;graph.LoadFromMemory(pBuf, s);<br>&nbsp;&nbsp;&nbsp;</p>
<img src ="http://www.cppblog.com/gogoplayer/aggbug/16029.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/gogoplayer/" target="_blank">gogoplayer</a> 2006-12-05 21:57 <a href="http://www.cppblog.com/gogoplayer/archive/2006/12/05/16029.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>OIS使用心得</title><link>http://www.cppblog.com/gogoplayer/archive/2006/11/29/15764.html</link><dc:creator>gogoplayer</dc:creator><author>gogoplayer</author><pubDate>Tue, 28 Nov 2006 17:11:00 GMT</pubDate><guid>http://www.cppblog.com/gogoplayer/archive/2006/11/29/15764.html</guid><wfw:comment>http://www.cppblog.com/gogoplayer/comments/15764.html</wfw:comment><comments>http://www.cppblog.com/gogoplayer/archive/2006/11/29/15764.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/gogoplayer/comments/commentRss/15764.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/gogoplayer/services/trackbacks/15764.html</trackback:ping><description><![CDATA[<p>总的来说，非常的好用，Ogre在即将推出的1.4版本中将完全去处原来破破烂烂的输入部分，取而代之得是OIS（<span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Fixedsys; mso-ansi-language: EN-US; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-no-proof: yes"><a title=http://sourceforge.net/projects/wgois/ href="http://sourceforge.net/projects/wgois/"><span style="COLOR: windowtext; TEXT-DECORATION: none; text-underline: none">Object-oriented Input Library</span></a></span>），对我来说，Ogre去除自带的输入系统是个非常好的消息，这本来就不是一个图形渲染系统该有的，OIS出现的太及时了，OIS的作者是Ogre的MVP，我看过他的代码，功力深厚，虽然现在OIS功能还不是很高，但是比原来的那个还是要好的多，提供了立即模式和缓冲模式（可共用），也就是设计模式那一套路，用个监听器得到消息，这样的封装用起来非常简单。<br>class EventHandler : public KeyListener, public MouseListener, public JoyStickListener<br>{<br>public:<br>&nbsp;EventHandler() {}<br>&nbsp;~EventHandler() {}<br>&nbsp;bool keyPressed( const KeyEvent &amp;arg ) {<br>&nbsp;&nbsp;std::cout &lt;&lt; "\nKeyPressed {" &lt;&lt; arg.key<br>&nbsp;&nbsp;&nbsp;&lt;&lt; ", " &lt;&lt; ((Keyboard*)(arg.device))-&gt;getAsString(arg.key)<br>&nbsp;&nbsp;&nbsp;&lt;&lt; "} || Character (" &lt;&lt; (char)arg.text &lt;&lt; ")" &lt;&lt; std::endl;<br>&nbsp;&nbsp;return true;<br>&nbsp;}<br>&nbsp;bool keyReleased( const KeyEvent &amp;arg ) {<br>&nbsp;&nbsp;if( arg.key == KC_ESCAPE || arg.key == KC_Q )<br>&nbsp;&nbsp;&nbsp;appRunning = false;<br>&nbsp;&nbsp;return true;<br>&nbsp;}<br>&nbsp;bool mouseMoved( const MouseEvent &amp;arg ) {<br>&nbsp;&nbsp;const OIS::MouseState&amp; s = arg.state;<br>&nbsp;&nbsp;std::cout &lt;&lt; "\nMouseMoved: Abs("<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt; s.abX &lt;&lt; ", " &lt;&lt; s.abY &lt;&lt; ", " &lt;&lt; s.abZ &lt;&lt; ") Rel("<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt; s.relX &lt;&lt; ", " &lt;&lt; s.relY &lt;&lt; ", " &lt;&lt; s.relZ &lt;&lt; ")";<br>&nbsp;&nbsp;return true;<br>&nbsp;}<br>&nbsp;bool mousePressed( const MouseEvent &amp;arg, MouseButtonID id ) {<br>&nbsp;&nbsp;std::cout &lt;&lt; "\nMousePressed: " &lt;&lt; id &lt;&lt; " time[" &lt;&lt; arg.timeStamp &lt;&lt; "]";<br>&nbsp;&nbsp;return true;<br>&nbsp;}<br>&nbsp;bool mouseReleased( const MouseEvent &amp;arg, MouseButtonID id ) {<br>&nbsp;&nbsp;std::cout &lt;&lt; "\nMouseReleased: " &lt;&lt; id &lt;&lt; " time[" &lt;&lt; arg.timeStamp &lt;&lt; "]";<br>&nbsp;&nbsp;return true;<br>&nbsp;}<br>&nbsp;bool buttonPressed( const JoyStickEvent &amp;arg, int button ) {<br>&nbsp;&nbsp;std::cout &lt;&lt; "\nJoy ButtonPressed: " &lt;&lt; button &lt;&lt; " time[" &lt;&lt; arg.timeStamp &lt;&lt; "]";<br>&nbsp;&nbsp;return true;<br>&nbsp;}<br>&nbsp;bool buttonReleased( const JoyStickEvent &amp;arg, int button ) {<br>&nbsp;&nbsp;return true;<br>&nbsp;}<br>&nbsp;bool axisMoved( const JoyStickEvent &amp;arg, int axis )<br>&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp; std::cout &lt;&lt; "\nJoy Axis " &lt;&lt; axis &lt;&lt; " " &lt;&lt; arg.state.mAxes[axis].abX<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt; " " &lt;&lt; arg.state.mAxes[axis].abY;<br>&nbsp;&nbsp;return true;<br>&nbsp;}<br>&nbsp;bool povMoved( const JoyStickEvent &amp;arg, int pov )<br>&nbsp;{<br>&nbsp;&nbsp;std::cout &lt;&lt; "\nJoy POV" &lt;&lt; pov &lt;&lt; " ";</p>
<p>&nbsp;&nbsp;if( arg.state.mPOV[pov].direction &amp; Pov::North ) //Going up<br>&nbsp;&nbsp;&nbsp;std::cout &lt;&lt; "North";<br>&nbsp;&nbsp;else if( arg.state.mPOV[pov].direction &amp; Pov::South ) //Going down<br>&nbsp;&nbsp;&nbsp;std::cout &lt;&lt; "South";</p>
<p>&nbsp;&nbsp;if( arg.state.mPOV[pov].direction &amp; Pov::East ) //Going right<br>&nbsp;&nbsp;&nbsp;std::cout &lt;&lt; "East";<br>&nbsp;&nbsp;else if( arg.state.mPOV[pov].direction &amp; Pov::West ) //Going left<br>&nbsp;&nbsp;&nbsp;std::cout &lt;&lt; "West";</p>
<p>&nbsp;&nbsp;if( arg.state.mPOV[pov].direction == Pov::Centered ) //stopped/centered out<br>&nbsp;&nbsp;&nbsp;std::cout &lt;&lt; "Centered";<br>&nbsp;&nbsp;return true;<br>&nbsp;}<br>};<br><br>上面的代码就是定义了一个集键盘、鼠标、手柄消息控制于一身的监听器，有相应事件产生就会调用相应的函数，使用及其方便，我把OIS的VC8版本接入到我原来的一个2D引擎中，工作非常顺利，这也使我彻底的淘汰了原来不良的设计，如果你有自己的引擎，你也可以试一下，OIS 下载&nbsp;<a href="http://sourceforge.net/projects/wgois/">http://sourceforge.net/projects/wgois/</a>&nbsp;，再来个Ogre对于他的介绍 <a href="http://www.ogre3d.org/wiki/index.php/Using_OIS">http://www.ogre3d.org/wiki/index.php/Using_OIS</a>&nbsp;。</p>
<img src ="http://www.cppblog.com/gogoplayer/aggbug/15764.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/gogoplayer/" target="_blank">gogoplayer</a> 2006-11-29 01:11 <a href="http://www.cppblog.com/gogoplayer/archive/2006/11/29/15764.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>推荐一个简单的声音引擎</title><link>http://www.cppblog.com/gogoplayer/archive/2006/11/29/15763.html</link><dc:creator>gogoplayer</dc:creator><author>gogoplayer</author><pubDate>Tue, 28 Nov 2006 16:54:00 GMT</pubDate><guid>http://www.cppblog.com/gogoplayer/archive/2006/11/29/15763.html</guid><wfw:comment>http://www.cppblog.com/gogoplayer/comments/15763.html</wfw:comment><comments>http://www.cppblog.com/gogoplayer/archive/2006/11/29/15763.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/gogoplayer/comments/commentRss/15763.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/gogoplayer/services/trackbacks/15763.html</trackback:ping><description><![CDATA[<p>绝对轻量级的声音引擎，audiere，支持跨平台，可以去<a href="http://sourceforge.net/projects/audiere/">http://sourceforge.net/projects/audiere/</a>下载，再给个小例子，^_^<br>用VC6或者其他配置好工程，建个控制台程序即可<br>#include &lt;iostream&gt;<br>using namespace std;</p>
<p>#include "audiere.h"</p>
<p>audiere::AudioDevicePtr device(audiere::OpenDevice());<br>audiere::OutputStreamPtr stream(audiere::OpenSound(device, "music.wav", false));</p>
<p>int main()<br>{<br>&nbsp;stream-&gt;setRepeat(true);<br>&nbsp;stream-&gt;setVolume(0.5f); // 50% volume<br>&nbsp;stream-&gt;play();</p>
<p>&nbsp;int a;<br>&nbsp;cin &gt;&gt; a;</p>
<p>&nbsp;return 0;<br>}</p>
<img src ="http://www.cppblog.com/gogoplayer/aggbug/15763.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/gogoplayer/" target="_blank">gogoplayer</a> 2006-11-29 00:54 <a href="http://www.cppblog.com/gogoplayer/archive/2006/11/29/15763.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用代码设置Ogre配置对话框</title><link>http://www.cppblog.com/gogoplayer/archive/2006/11/29/15762.html</link><dc:creator>gogoplayer</dc:creator><author>gogoplayer</author><pubDate>Tue, 28 Nov 2006 16:45:00 GMT</pubDate><guid>http://www.cppblog.com/gogoplayer/archive/2006/11/29/15762.html</guid><wfw:comment>http://www.cppblog.com/gogoplayer/comments/15762.html</wfw:comment><comments>http://www.cppblog.com/gogoplayer/archive/2006/11/29/15762.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/gogoplayer/comments/commentRss/15762.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/gogoplayer/services/trackbacks/15762.html</trackback:ping><description><![CDATA[<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>其实就是手动配置渲染系统，去掉Ogre自带的对话框，如果会用Ogre的基本框架，下列代码很容易理解</span> </p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-SIZE: 8.5pt; COLOR: #003300; FONT-FAMILY: Courier">bool RPGApp::configure(void) <br>{ <br>&nbsp; &nbsp; // Show the configuration dialog and initialise the system <br>&nbsp; &nbsp; // You can skip this and use root.restoreConfig() to load configuration <br>&nbsp; &nbsp; // settings if you were sure there are valid ones saved in ogre.cfg <br>&nbsp; &nbsp; //if(mRoot-&gt;showConfigDialog()) <br>&nbsp; &nbsp;RenderSystemList *rsList = mRoot-&gt;getAvailableRenderers(); <br>&nbsp; &nbsp;int c=0; <br>&nbsp; &nbsp;bool foundit = false; <br>&nbsp; &nbsp;RenderSystem *selectedRenderSystem=0; <br>&nbsp; &nbsp;while(c &lt; (int) rsList-&gt;size()){ <br>&nbsp; &nbsp;&nbsp; &nbsp;selectedRenderSystem = rsList-&gt;at(c); <br>&nbsp; &nbsp;&nbsp; &nbsp;String rname = selectedRenderSystem-&gt;getName(); <br>&nbsp; &nbsp;&nbsp; &nbsp;if(rname.compare("Direct3D9 Rendering Subsystem")==0){ <br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;foundit=true; <br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;break; <br>&nbsp; &nbsp;&nbsp; &nbsp;} <br>&nbsp; &nbsp;&nbsp; &nbsp;c++; // &lt;-- oh how clever <br>&nbsp; &nbsp;} <br>&nbsp; &nbsp;if(!foundit) return false; //we didn't find it... <br>&nbsp; &nbsp; <br>&nbsp; &nbsp;//we found it, we might as well use it! <br>&nbsp; &nbsp;selectedRenderSystem-&gt;setConfigOption("Full Screen","Yes");&nbsp; <br>&nbsp; &nbsp;selectedRenderSystem-&gt;setConfigOption("Video Mode","1024 x 768 @ 32-bit colour"); <br>&nbsp; &nbsp;selectedRenderSystem-&gt;setConfigOption("Allow NVPerfHUD","No"); <br>&nbsp; &nbsp;selectedRenderSystem-&gt;setConfigOption("Anti aliasing","None"); <br>&nbsp; &nbsp;selectedRenderSystem-&gt;setConfigOption("Floating-point mode","Fastest"); <br>&nbsp; &nbsp;//selectedRenderSystem-&gt;setConfigOption("Rendering Device","RADEON 9200"); <br>&nbsp; &nbsp;selectedRenderSystem-&gt;setConfigOption("VSync","No"); <br>&nbsp; &nbsp;mRoot-&gt;setRenderSystem(selectedRenderSystem); <br>&nbsp; &nbsp;<br>&nbsp; &nbsp; mWindow = mRoot-&gt;initialise(true, "Dire Desire"); <br>&nbsp; &nbsp;return true; <br>}<o:p></o:p></span> </p>
<img src ="http://www.cppblog.com/gogoplayer/aggbug/15762.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/gogoplayer/" target="_blank">gogoplayer</a> 2006-11-29 00:45 <a href="http://www.cppblog.com/gogoplayer/archive/2006/11/29/15762.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ogre Terrain Scene Manager参数详解</title><link>http://www.cppblog.com/gogoplayer/archive/2006/11/29/15759.html</link><dc:creator>gogoplayer</dc:creator><author>gogoplayer</author><pubDate>Tue, 28 Nov 2006 16:22:00 GMT</pubDate><guid>http://www.cppblog.com/gogoplayer/archive/2006/11/29/15759.html</guid><wfw:comment>http://www.cppblog.com/gogoplayer/comments/15759.html</wfw:comment><comments>http://www.cppblog.com/gogoplayer/archive/2006/11/29/15759.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/gogoplayer/comments/commentRss/15759.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/gogoplayer/services/trackbacks/15759.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align=center><span lang=EN style="mso-ansi-language: EN">Terrain Scene Manager</span><span style="FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">参数详解</span><span lang=EN style="mso-ansi-language: EN"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN style="mso-ansi-language: EN"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">在场景中地形的形状和染色从一张高度图，一张地形纹理和一张细节贴图中被计算出来。高度图是一张灰度图，每个象素表现一个高度值，</span><span lang=EN style="mso-ansi-language: EN">0</span><span style="FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">表示地平面，</span><span lang=EN style="mso-ansi-language: EN">255</span><span style="FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">表示地形最高点。</span><span lang=EN style="mso-ansi-language: EN"><o:p></o:p></span></p>
<p><font face=宋体><span lang=EN style="mso-ansi-language: EN"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: EN">地形上面覆盖的的那层纹理被拉伸。这些地形纹理具有代表性的是斑驳的褐色，绿色，白色或者灰色适合于地表，草，雪或岩石地形。地形纹理通常比要覆盖地形小的多，所以近看时通常很模糊。为了解决这个问题，使用了一张细节纹理，当近看时混合地形纹理。细节纹理没有被拉伸，消除了近看模糊问题。<span lang=EN><o:p></o:p></span></span></font></p>
<p><font face=宋体><span lang=EN style="mso-ansi-language: EN"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span></span><span style="mso-ansi-language: EN">地形被分成一个地形小块表格。地形小块可能在不同的细节层次被场景管理器显示出来，依赖于小块的布局和离观察者的距离。整个地形被投射到一个世界坐标空间中，在里面地形的尺寸。<span lang=EN><o:p></o:p></span></span></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-outline-level: 2" align=left><strong><span style="FONT-SIZE: 18pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">目录<span lang=EN-US><o:p></o:p></span></span></strong></p>
<ul type=disc>
    <li class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level1 lfo1; tab-stops: list 36.0pt"><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><a href="http://www.ogre3d.org/wiki/index.php/Terrain_Scene_Manager#Configuration_Parameters#Configuration_Parameters">1 Configuration Parameters</a><o:p></o:p></span>
    <ul type=circle>
        <li class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level2 lfo1; tab-stops: list 72.0pt"><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><a href="http://www.ogre3d.org/wiki/index.php/Terrain_Scene_Manager#Basic_Configuration_Parameters#Basic_Configuration_Parameters">1.1 Basic Configuration Parameters</a><o:p></o:p></span>
        <li class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level2 lfo1; tab-stops: list 72.0pt"><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><a href="http://www.ogre3d.org/wiki/index.php/Terrain_Scene_Manager#Advanced_Configuration_Parameters#Advanced_Configuration_Parameters">1.2 Advanced Configuration Parameters</a><o:p></o:p></span>
        <li class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level2 lfo1; tab-stops: list 72.0pt"><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><a href="http://www.ogre3d.org/wiki/index.php/Terrain_Scene_Manager#More_Advanced_Parameters#More_Advanced_Parameters">1.3 More Advanced Parameters</a><o:p></o:p></span></li>
    </ul>
    <li class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level1 lfo1; tab-stops: list 36.0pt"><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><a href="http://www.ogre3d.org/wiki/index.php/Terrain_Scene_Manager#Using_Custom_Materials#Using_Custom_Materials">2 Using Custom Materials</a><o:p></o:p></span></li>
</ul>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-outline-level: 2" align=left><strong><span lang=EN style="FONT-SIZE: 18pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">Configuration Parameters <o:p></o:p></span></strong></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">地形场景管理器通过<em><span lang=EN>terrain.cfg</span></em><span lang=EN></span>教本被设置。<span lang=EN><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-outline-level: 3" align=left><a name=Basic_Configuration_Parameters></a><strong><span lang=EN style="FONT-SIZE: 13.5pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">Basic Configuration Parameters <o:p></o:p></span></strong></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list 21.0pt" align=left><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><span style="mso-list: Ignore">1.<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><strong><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">WorldTexture</span></strong><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">: </span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">指定地形纹理的名称。<span lang=EN><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list 21.0pt" align=left><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><span style="mso-list: Ignore">2.<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><strong><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">DetailTexture</span></strong><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">: </span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">指定细节纹理的名称。<span lang=EN><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list 21.0pt" align=left><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><span style="mso-list: Ignore">3.<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><strong><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">DetailTile</span></strong><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">: </span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">这个指定细节纹理在每个地形小块中重复次数，也就是说，如果这个值是<em><span lang=EN>n</span></em>，细节纹理将在每个地形小块的<span lang=EN>n*n</span>格中被显示。如果这个值设置过低，地形在近看时会模糊，反之则会在放眼观察时看起来有反复模式（露馅了，<span lang=EN>^_^</span>） 。<span lang=EN><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list 21.0pt" align=left><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><span style="mso-list: Ignore">4.<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><strong><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">PageSource</span></strong><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">: </span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">指定高度图数据的来源，默认为<em><span lang=EN>Heightmap</span></em><span lang=EN>. <o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list 21.0pt" align=left><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><span style="mso-list: Ignore">5.<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><strong><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">Heightmap.image</span></strong><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">: </span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">指定高度图的名称。尺寸必须是方形，而且要符合<span lang=EN>2^<em>n</em>+1</span>， 高度图越大，地形细节就越高，但是程序消耗的的资源也越多（包括程序启动时间）。<span lang=EN><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list 21.0pt" align=left><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><span style="mso-list: Ignore">6.<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><strong><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">PageSize</span></strong><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">: </span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">地形将会有<em><span lang=EN>PageSize</span></em><span lang=EN> * <em>PageSize</em></span>那么大。如上所述，必须要符合<span lang=EN>2^<em>n</em>+1 </span>（如<span lang=EN>65</span>，<span lang=EN>129</span>，<span lang=EN>257</span>，<span lang=EN>513</span>，<span lang=EN>1025</span>）。<span lang=EN><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list 21.0pt" align=left><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><span style="mso-list: Ignore">7.<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><strong><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">TileSize</span></strong><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">: </span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">地形小块有 <em><span lang=EN>TileSize</span></em><span lang=EN> * <em>TileSize</em></span>大小。这个数必须小于<em><span lang=EN>PageSize</span>。</em>这个数必须要符合<span lang=EN>2^<em>n</em>+1</span>须要符合<span lang=EN>2^n+1</span>。设的过小会严重影响性能，太大的话又会在场景的某些部分导致不必要的高细节。<span lang=EN><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list 21.0pt" align=left><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><span style="mso-list: Ignore">8.<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><strong><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">MaxPixelError</span></strong><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">: </span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">指定当决定哪个细节层次被使用时的最大允许误差。设置过高会导致地形撕裂，过低则会影响性能。<span lang=EN><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list 21.0pt" align=left><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><span style="mso-list: Ignore">9.<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><strong><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">PageWorldX</span></strong><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">, <strong>PageWorldZ</strong>: </span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">设定地形在世界坐标系中的范围，地形越大，细节越低，地形使用的顶点数基于高度图，不是世界大小，你可以缩放地形到你想要的任意大小。<span lang=EN><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list 21.0pt" align=left><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><span style="mso-list: Ignore">10.<span style="FONT: 7pt 'Times New Roman'">&nbsp; </span></span></span><strong><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">MaxHeight</span></strong><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">: </span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">在世界坐标系中地形的最大高度。高度图中的<span lang=EN>0..255 </span>缩放到世界坐标系中的<span lang=EN> 0..MaxHeight</span>。<span lang=EN><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list 21.0pt" align=left><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><span style="mso-list: Ignore">11.<span style="FONT: 7pt 'Times New Roman'">&nbsp; </span></span></span><strong><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">MaxMipMapLevel</span></strong><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">: </span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">指定渲染地形使用的细节层次的数目。地形的远处和平坦处会以低细节渲染。</span><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-outline-level: 3" align=left><strong><span lang=EN style="FONT-SIZE: 13.5pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">Advanced Configuration Parameters <o:p></o:p></span></strong></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">有些高度图保存为<span lang=EN>raw</span>格式，下列参数描述<span lang=EN>raw</span>格式。<span lang=EN><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list 21.0pt" align=left><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><span style="mso-list: Ignore">12.<span style="FONT: 7pt 'Times New Roman'">&nbsp; </span></span></span><strong><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">Heightmap.raw.size</span></strong><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">: </span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">指定高度图的尺寸，要求同上。<span lang=EN><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list 21.0pt" align=left><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><span style="mso-list: Ignore">13.<span style="FONT: 7pt 'Times New Roman'">&nbsp; </span></span></span><strong><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">Heightmap.raw.bpp</span></strong><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">: </span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">指定每象素字节数，<span lang=EN>1=8 bits, 2=16 bits</span>。<span lang=EN><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list 21.0pt" align=left><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><span style="mso-list: Ignore">14.<span style="FONT: 7pt 'Times New Roman'">&nbsp; </span></span></span><strong><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">Heightmap.flip</span></strong><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">: </span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">如果设置为<span lang=EN>true</span>，则翻转高度图。<span lang=EN><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=center><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体">高度图处理说明<span lang=EN><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体">高度图必须是灰度图，如果不是，可以使用<span lang=EN>photoshop</span>处理，选择菜单【图像】<span lang=EN>-&gt;</span>模式<span lang=EN>-&gt;</span>灰度，然后存为<span lang=EN>png</span>格式即可。<span lang=EN><o:p></o:p></span></span></p>
<span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-font-kerning: 1.0pt"><br style="PAGE-BREAK-BEFORE: always; mso-special-character: line-break" clear=all></span>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=center><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体">坐标系问题<span lang=EN><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span></span><span lang=EN style="mso-ansi-language: EN">Terrain Scene Manager</span><span style="FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">把纹理图的左上角作为世界原点（</span><span lang=EN style="mso-ansi-language: EN">0</span><span style="FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">，</span><span lang=EN style="mso-ansi-language: EN">0</span><span style="FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">，</span><span lang=EN style="mso-ansi-language: EN">0</span><span style="FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">），以从左到右为</span><span lang=EN style="mso-ansi-language: EN">x</span><span style="FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">正方向，从上到下为</span><span lang=EN style="mso-ansi-language: EN">z</span><span style="FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">正方向，从屏幕里到屏幕外为</span><span lang=EN style="mso-ansi-language: EN">y</span><span style="FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">正方向，符合右手坐标系。</span><span lang=EN style="mso-ansi-language: EN"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><span lang=EN style="mso-ansi-language: EN"><v:shapetype id=_x0000_t75 coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path><o:lock v:ext="edit" aspectratio="t"></o:lock></v:shapetype></span><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><span lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ansi-language: EN; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p>&nbsp;</o:p></span></p>
<img src ="http://www.cppblog.com/gogoplayer/aggbug/15759.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/gogoplayer/" target="_blank">gogoplayer</a> 2006-11-29 00:22 <a href="http://www.cppblog.com/gogoplayer/archive/2006/11/29/15759.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数学函数探讨</title><link>http://www.cppblog.com/gogoplayer/archive/2006/04/18/5831.html</link><dc:creator>gogoplayer</dc:creator><author>gogoplayer</author><pubDate>Tue, 18 Apr 2006 10:49:00 GMT</pubDate><guid>http://www.cppblog.com/gogoplayer/archive/2006/04/18/5831.html</guid><wfw:comment>http://www.cppblog.com/gogoplayer/comments/5831.html</wfw:comment><comments>http://www.cppblog.com/gogoplayer/archive/2006/04/18/5831.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/gogoplayer/comments/commentRss/5831.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/gogoplayer/services/trackbacks/5831.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;很显然，数学函数每个人都用过，不外乎sin，cos等等，我最近对Ogre的数学函数库进行了一番测试，原以为Ogre采用汇编加速的数学函数效率会远远超越math.h提供的函数，但是经过测试，我感到很吃惊（使用VC6.0测试），在Debug模式下，采用查表法求sin，cos等函数确实比原来的库函数效率高了很多，但到了Release模式，一切都变了，Ogre用汇编写的效率远远落后于库函数，查表法也失去了原有的优势，要想获得更高的精度，就要扩大表的大小，即使这样，库函数在精度和速度上还是领先，不得不佩服VC的Release编译，最后经过了结，推测为Release编译模式使用了浮点优化，测试平台P4630＋winxp＋1G，欢迎探讨。 
<img src ="http://www.cppblog.com/gogoplayer/aggbug/5831.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/gogoplayer/" target="_blank">gogoplayer</a> 2006-04-18 18:49 <a href="http://www.cppblog.com/gogoplayer/archive/2006/04/18/5831.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>OGRE中的STL和单件设计模式</title><link>http://www.cppblog.com/gogoplayer/archive/2006/04/09/5213.html</link><dc:creator>gogoplayer</dc:creator><author>gogoplayer</author><pubDate>Sun, 09 Apr 2006 15:42:00 GMT</pubDate><guid>http://www.cppblog.com/gogoplayer/archive/2006/04/09/5213.html</guid><wfw:comment>http://www.cppblog.com/gogoplayer/comments/5213.html</wfw:comment><comments>http://www.cppblog.com/gogoplayer/archive/2006/04/09/5213.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/gogoplayer/comments/commentRss/5213.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/gogoplayer/services/trackbacks/5213.html</trackback:ping><description><![CDATA[<p>单件设计模式：保证一个类仅有一个实例，并提供一个访问它的全局访问点。单件设计模式在OGRE中使用还是比较频繁的，管理日志的LogManager，还有SkeletonManager等管理器，就连Root也使用了这种设计模式。分析OGRE的使用，发现这种设计模式是很简单的，如下：<br>&nbsp;&nbsp;&nbsp; template &lt;typename T&gt; class Singleton<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; protected:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; static T* ms_Singleton;</p>
<p>&nbsp;&nbsp;&nbsp; public:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Singleton( void )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; assert( !ms_Singleton );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ms_Singleton = static_cast&lt; T* &gt;( this );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ~Singleton( void )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {&nbsp; assert( ms_Singleton );&nbsp; ms_Singleton = 0;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; static T&amp; getSingleton( void )<br>&nbsp;&nbsp;{&nbsp;assert( ms_Singleton );&nbsp; return ( *ms_Singleton ); }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; static T* getSingletonPtr( void )<br>&nbsp;&nbsp;{ return ms_Singleton; }<br>&nbsp;&nbsp;&nbsp; };<br>}<br><br>接下来只要继承这个模板类并且重载getSingleton()，getSingletonPtr()，确实很方便，不是么^_^<br>STL就更不用说了，没有STL，OGRE恐怕就不是现在这个样子，说到这里，我对OGRE采用的STL命名法并不赞同，举个例子：<br>&nbsp; typedef std::map&lt;String, Log*, std::less&lt;String&gt; &gt;&nbsp;LogList;&nbsp;&nbsp;&nbsp;<br>这是一个map，却命名为LogList，STL内含list容器，很容易混淆，混淆的还在后面<br>&nbsp;&nbsp;typedef std::vector&lt;LogListener*&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LogListenerList;<br>明明是个vector，却命名为LogListenerList，如果整个工程统一使用这一风格，还可以接受，但下面这句就违反了<br>&nbsp;&nbsp;&nbsp; typedef std::vector&lt;String&gt; StringVector;<br>这里使用了vector命名StringVector，我个人对这种命名比较认可，一目了然.</p>
<img src ="http://www.cppblog.com/gogoplayer/aggbug/5213.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/gogoplayer/" target="_blank">gogoplayer</a> 2006-04-09 23:42 <a href="http://www.cppblog.com/gogoplayer/archive/2006/04/09/5213.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>OGRE错别字真多</title><link>http://www.cppblog.com/gogoplayer/archive/2006/04/08/5167.html</link><dc:creator>gogoplayer</dc:creator><author>gogoplayer</author><pubDate>Sat, 08 Apr 2006 01:49:00 GMT</pubDate><guid>http://www.cppblog.com/gogoplayer/archive/2006/04/08/5167.html</guid><wfw:comment>http://www.cppblog.com/gogoplayer/comments/5167.html</wfw:comment><comments>http://www.cppblog.com/gogoplayer/archive/2006/04/08/5167.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/gogoplayer/comments/commentRss/5167.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/gogoplayer/services/trackbacks/5167.html</trackback:ping><description><![CDATA[Sphere类中intersects写成了interects，还有文档中也有大量笔误，benefit写成benifit，还好我发现的这些笔误无伤大雅。我最近在研究OGRE稳定的头文件，OgreStableHeaders.h，OGRE确实是个庞大的系统，不枉费我从众多引擎中选他作为研究对象，其中使用的一些设计模式却有独具匠心之处，最近学校发了笔小钱，用来打印OGRE，这样可以随时拿出来看了，好Happy啊，^_^。 
<img src ="http://www.cppblog.com/gogoplayer/aggbug/5167.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/gogoplayer/" target="_blank">gogoplayer</a> 2006-04-08 09:49 <a href="http://www.cppblog.com/gogoplayer/archive/2006/04/08/5167.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>OGRE的manual</title><link>http://www.cppblog.com/gogoplayer/archive/2006/03/16/4216.html</link><dc:creator>gogoplayer</dc:creator><author>gogoplayer</author><pubDate>Wed, 15 Mar 2006 16:09:00 GMT</pubDate><guid>http://www.cppblog.com/gogoplayer/archive/2006/03/16/4216.html</guid><wfw:comment>http://www.cppblog.com/gogoplayer/comments/4216.html</wfw:comment><comments>http://www.cppblog.com/gogoplayer/archive/2006/03/16/4216.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/gogoplayer/comments/commentRss/4216.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/gogoplayer/services/trackbacks/4216.html</trackback:ping><description><![CDATA[最近仔细的看了OGRE Manual v1.1.0，作者很喜欢用从句，从句又套从句，我英语这里比较薄弱，这几天看下来，有点吃力，就算是学习英语了吧，OGRE研究和英语学习两不误，^_^ 
<img src ="http://www.cppblog.com/gogoplayer/aggbug/4216.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/gogoplayer/" target="_blank">gogoplayer</a> 2006-03-16 00:09 <a href="http://www.cppblog.com/gogoplayer/archive/2006/03/16/4216.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>