注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Silence的博客

大师只有一个

 
 
 

日志

 
 

转:ogre配置文件  

2010-07-24 16:06:44|  分类: 技术 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

Ogre.cfg

OGRE引擎将会在可执行文件所在的文件夹中生成一个ogre.cfg文件该文件保存了本次对话框的设置结果,下次显示对话框时会将上次的配置结果读入并直接显示。例子框架用mRoot->showConfigDialog()来调出配置对话框。如果你认为在程序运行之前显示一个对话框很难看,或者希望采用另外的形式(比如专门的配置界面,就象在大部分游戏中那样)来配置渲染系统,只要你确保在可执行文件的同一文件夹下存在有效的Ogre.cfg配置文件,就可以直接调用Root对象的restoreConfig()函数来直接读入渲染系统配置信息,而不显示配置对话框。

Ogre::Root::showConfigDialog()会有下述行为:如果程序运行之间已存在一个有效的ogre.cfg,那么它会在显示对话框之前将配置文件的内容载入,如果用户对对话框进行了操行,改变的配置参数,showConfigDialog()会根据用户的新选择依次调用Root::setRenderSystem, RenderSystem::setConfigOption and Root::saveConfig(在ogreWin32ConfigDialog.cpp中实现,写自己的配置对话框时可以参考),需要注意的是配置好的参数,只是在 RenderSystem::initialise or RenderSystem::reinitialise 调用之后才被激活。

以下为典型的ogre.cfg文件的内容

Render System=Direct3D9 Rendering Subsystem

 

[Direct3D9 Rendering Subsystem]

Allow NVPerfHUD=No

Anti aliasing=None

Floating-point mode=Fastest

Full Screen=No

Rendering Device=ATI MOBILITY RADEON X300

VSync=No

Video Mode=800 x 600 @ 32-bit colour

 

[OpenGL Rendering Subsystem]

Colour Depth=32

Display Frequency=N/A

FSAA=0

Full Screen=No

RTT Preferred Mode=FBO

VSync=No

Video Mode=1024 x 768

方括号中为可以选择的渲染子系统,而第一行指出了当前的选择是哪个子系统,方括号下面为各子系统的可选参数,在上的例子中分别列出了Direct3D 9与OpenGL子系统的可选配置参数。

Root(const String& pluginFileName = "plugins.cfg", const String& configFileName = "ogre.cfg", const String& logFileName = "Ogre.log");

        ~Root();

Root的构造函数传递了ogre.cfg,只是简单的将文件名保存下来,供其它方法使用,如上面曾经提到过的Root:saveConfig(void);

在windows平台插件的装入过程如下:

Root::()

{

   if(!pluginFileName.empty())

      loadPlugins(pluginFileName);

――――――>

void Root::loadPlugins(const String& pluginsfile)

{

   ConfigFile cfg;

   cfg.load(pluginsfile);

    ...........................

   //解析文件,处理后将目录与文件名联接


for(;;)

   loadPlugin(plugindir + (*it))

}――――――>

 

Root::loadplugin(const string& pluginName)

{

    DyLibmanager::getsinleton.load(pluginName);

}

――――――>

 

DynLibManager::load(const string& filename)

 

{

        DynLib* pLib=new DynLib(filename);

        pLib->load();

 

}

――――――>

void DynLib::load()

{

        m_hInst=(DYNLIB_HANDLE)DYNLIB_LOAD(name.cstr());

}

在windows平台下有如下定义:

#define DYNLIB_LOAD(a)     LoadLibrary(a)

到此,x.dll插件被加载到内存中,可以使用插件的功能了。。。。。。。

以下为一个典型的Plugins.cfg文件的内容:

# Defines plugins to load

 

# Define plugin folder

PluginFolder=.

 

# Define plugins

Plugin=RenderSystem_Direct3D9

Plugin=RenderSystem_GL

Plugin=Plugin_ParticleFX

Plugin=Plugin_BSPSceneManager

Plugin=Plugin_OctreeSceneManager

Plugin=Plugin_CgProgramManager

Plugins.cfg文件内容相当直观,不再赘述。

 

 


resources.cfg

资源是OGRE应用程序渲染过程中需要用到的纹理图片、网格模型文件、骨骼动画文件的总称。OGRE应用程序需要在渲染前将这些资源载入内存,那就需要让OGRE引擎知道资源的搜索路径。特别的是OGRE引擎支持直接读取Zip压缩文件中的内容,所以Zip文件也必须被当成搜索路径来指定。在OGRE引擎中具有虚拟文件系统的概念,引擎内部载入资源文件都是通过虚拟文件系统来进行的,引擎并不关心资源文件来自一个普通文件夹、zip压缩包甚至网络映射。真正的文件读取功能是通过插件来实现的,所以大家在运行环境里可以发现Plugin_FileSystem.dll,早期的OGRE版本还有Plugin_Zip.dll,在新的版本里被实现到引擎内部了。目前还没有实现对网络文件的直接访问。

为了方便OGRE程序在运行期间查找资源,使用了资源配置文件resources.cfg。这是一个文本文件,我们可以在OGRE程序的可执行文件的同一文件夹下找到它。它的内容就是对资源路径的指定,示例如下:

Zip=../../../Media/dragon.zip

Zip=../../../Media/knot.zip

Zip=../../../Media/skybox.zip

FileSystem=../../../Media/

如果资源在一个Zip文件中,就写Zip=******,如果资源在一个普通的硬盘文件夹里就写FileSystem=******,通常这两种情况都有。例如在OGRE自带的Demo中,就将大部分资源放在一个文件夹里,特殊的资源该文件夹中的Zip文件里。

在OGRE自带的例子框架setupResources()展示了Resources.cfg文件的使用:先利用ConfigFile类对文件内容进行了解析,将资源目录用ResourceGroupManager:: addResourceLocation()向OGRE进行提交。


Plugins.cfg

Ogre的许多功能是以插件的形式提供的.Ogre提供的以Plugin_开头的许多.DLL文件都是所谓的插件。Plugins.cfg指定了插件的路径和插件文件名, 它们可以放在其它文件夹里,但必须在本文件里指定路径。

  评论这张
 
阅读(1209)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017