您的位置:首页 > 其它

ogre配置文件

2010-03-17 16:33 225 查看
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指定了插件的路径和插件文件名, 它们可以放在其它文件夹里,但必须在本文件里指定路径。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: