如果你自己都不清楚所谈论的东西,就根本不可能精确的描述它——冯诺依曼
今天我就试着来表述一件众人皆知的事情,以测试自己到底有没有明白这件事情。
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 是插件的加载和卸载接口。 可以看到,当调用