第一个例子:
生成一个类继承自base::BaseDemoManager,同时在头文件中加入#include"Base/BaseDemoManager.h"
在cpp中加入宏MYGUI_APP(类名)
这个宏定义了相应的应用程序接口(win32 or console?)
实际调用的是int startApp()方法
startApp()里面主要进行窗口的创建(create)、渲染(run)、销毁(destroy)等工作
create方法,根据width、height(默认1024、768)创建窗口,调用的其实都是Win32的函数,createRender方法与创建OpenGL渲染窗口相似,关联设备上下文、图形上下文以及清除背景色和深度等。
createGui()方法,
粗略的看了下,OpenGLPlatform应该是提供了对OpenGL方面的管理,里面主要就是三个数据成员OpenGLRenderManager* mRenderManager;//大概应该是对OpenGL命令的封装
Gui类应该是提供了MyGUI方面的管理,里面的数据成员都是以某某Manager结尾,且提供了比较方便的创建Widget、销毁Widget、连接或断开Widget、查找Widget的方法
setupResources()方法是用来解析资源路径的,资源的根路径和路径存储于resources.xml(当前工作目录)中,可以用addResourceLocation添加。资源的皮肤配置文件名字在mResourceFileName(默认为MyGUI_Core.xml)中。
createGui()方法之后是createInput()方法,这应该是用于出来鼠标、键盘方面的接口吧
createPointerManager()鼠标管理器,可以有不同的鼠标效果,配置文件里貌似可以设置。
createScene()这方法里面什么都没有,自己实现的子类应该重写该方法来实现自己的界面
_windowResized()窗口改变时调用,里面主要完成投影矩阵设置、鼠标响应区域设置、以及mPlatform->getRenderManagerPtr()->setViewSize(width,height);这句完成的是更改MyGUI每层的大小(我猜要适应不同分辨率屏幕的话,估计得在这儿下手)
啊,终于囫囵吞枣把create()方法大概流程看完了,自己都还没怎么弄懂,可想而知,具体看每一句代码的难度了。
开始run()方法,看起来简单不少
首先就是Windows的取消息、传递消息,captureInput();为空,啥都没有,难道是为特殊输入设备留的接口?
drawOneFrame()方法了
onRenderToTarget(this, mUpdate);最后是由多态调用了下面这段
void RenderManager::onRenderToTarget(IRenderTarget* _target,bool _update)
最后又是落到了LayerManager上,看来Layer是以后解读的重点了,我才Layer或许是一个批次渲染的意思。
最后是destroy();方法了,释放顺序和create创建的顺序相反。
重写createScene()方法
void TestKeeper::createScene()
{
}