如果你自己都不清楚所谈论的东西,就根本不可能精确的描述它——冯诺依曼
今天我就试着来表述一件众人皆知的事情,以测试自己到底有没有明白这件事情。
OGRE是著名的设计模式大师,这已是不争的事实。可以说OGRE里将设计模式用得淋漓尽致。 在这里我就不批判设计模式该不该用了。反正OGRE已经用了,并且没有出现什么不好的结果。适合的就是最好的,OGRE证明了这一点。
随着OGRE 1.7的发布,大家熟悉的DEMO程序不见了,换来的是一个个的DLL库。 而这些库,就是作为OGRE的一个插件而存在。 拿SkyBox为例,(不要问为什么拿SkyBox,如果真要知道 ,我只能说,我刚好看上它了。)我们可以在SkyBox.cpp里发现如下代码。
SamplePlugin* sp;
Sample* s;
extern "C" _OgreSampleExport void dllStartPlugin()
{
s = new Sample_SkyBox;
sp = OGRE_NEW SamplePlugin(s->getInfo()["Title"] + " Sample");
sp->addSample(s);
Root::getSingleton().installPlugin(sp);
}
extern "C" _OgreSampleExport void dllStopPlugin()
{
Root::getSingleton().uninstallPlugin(sp);
OGRE_DELETE sp;
delete s;
}
dllStartPlugin 和 dllStopPlugin 是插件的加载和卸载接口。 可以看到,当调用dllStartPlugin

本文分析了OGRE 1.7版本中的插件系统,特别是以SkyBox为例,展示了如何通过dllStartPlugin和dllStopPlugin加载和卸载插件。插件在启动时被加载,调用SamplePlugin的installPlugin方法,并在samples.cfg中配置。要添加新的示例,需要创建自SdkSample的派生类,实现setupContent函数,编写插件入口函数并将其添加到配置文件。
最低0.47元/天 解锁文章
3989

被折叠的 条评论
为什么被折叠?



