SampleBrowser.cpp文件为程序的入口。这里有几个不同操作系统的入口函数,比如main,winmain等。用宏定义控制编译那个。
SampleBrowser_OSX.h文件好像和Mac操作系统有关。Mac目前我不懂,略。
SampleBrowser.h文件主要定义了SampleBrowser类。
SampleBrowser类定义如下:
class SampleBrowser : public SampleContext, public SdkTrayListener
SampleContext类就是定义了一下虚函数,规范了ogre应用程序启动步骤的结构。
SampleBrowser类的功能包括:
1、ogre渲染的启动(比如root,window,camera,viewpoint等)
2、创建、销毁和显示/隐藏dummy场景
3、GUI。在mTrayMgr中,创建、销毁、管理和响应开始页面和配置页面。(按钮、下拉菜单、label等)
4、sample控件的加载、卸载、切换和信息提取。
5、鼠标键盘的监听响应,渲染帧的监听和响应。从public SdkTrayListener继承
1、ogre渲染的启动
通过SampleBrowser类的父类SampleContext类的go函数调用的。
virtual void go(Sample* initialSample = 0)
go函数就是一个方法模板,其中调用了很多虚函数,以形成程序运行的结构框架。他的子类可以根据需要重写父类的各个函数,以修改运行功能。
SampleBrowser类中重写了setup()函数。他的实现的功能是:
//创建ogre引擎,root,camera,viewpoint,window等。
//创建、设置OI设备
//解析资源cfg文件,初始化资源列表,准备加载资源。
//创建mTrayMgr管理控制
//创建 Dummy场景
//加载资源。(加载时候设置了进度条,所以mTrayMgr在哪里监听了资源?)
2、创建、销毁和显示/隐藏Dummy场景
Dummy场景就是一个空场景,不包括前面显示的GUI部分。还包括一个带shader的空白材质。
3、GUI。在mTrayMgr中,创建、销毁、管理和响应开始页面和配置页面。(按钮、下拉菜单、label等)
//在mTrayMgr中创建开始页面和配置页面。(按钮、下拉菜单、滚动条等)
//populateSampleMenus();函数里面用mSampleCategories填充mCategoryMenu内容
virtual void setupWidgets()
// 添加缩略图(mThumbs)的条目内容。
// 下拉菜单选择,以及对应选择窗口的变化。
virtual void itemSelected(SelectMenu* menu)
4、sample控件的加载、卸载、切换和信息提取。
//获得samples.cfg配置文件或路径等,并解析。
//遍历加载所有sample的插件,
//通过SamplePlugin类获取sample信息,通过信息判断sample是否加载错误,将正确加载的sample保存到mLoadedSamples列表中,并保存分类mSampleCategories列表,SamplePlugin类的父类是Ogre::Plugin。
//删除加载错误的sample。
//只提取了sample的指针和类别保存了列表,没有提取插件信息填写到开始页面的显示列表中。
virtual Sample* loadSamples()
5、鼠标键盘的监听响应,渲染帧的监听和响应。从public SdkTrayListener继承
其它各种响应函数,略。
————完————
下一篇,sample控件的加载、卸载等 结构。