ogre的SampleBrowser项目的代码结构笔记2——sample控件

sample控件的加载、卸载、切换和信息提取

1、Sample类功能如下:

1、设计了很多虚函数,和响应函数,用于子类重写。
2、其中启动sample函数将被SampleContext类调用,通过这个函数获得SampleContext类的渲染参数。
 3、重点为_setup函数。

其中 _setup函数功能如下:

1、启动一个实例。不能直接调用,被SampleContext累调用。
2、其中的window和input等可以通过调用设置。

2、SdkSample类功能如下:

SdkSample类是Sample类和SdkTrayListener接口的子类。进一步实现实例中的相同部分。
SdkTrayListener接口用于监听和响应gui的各种控制。

1、在_setup函数中创建了如下成员变量,并对他们进行配置。
 Ogre::Viewport* mViewport;            // main viewport
 Ogre::Camera* mCamera;                // main camera
 SdkTrayManager* mTrayMgr;             // tray interface manager
 SdkCameraMan* mCameraMan;             // basic camera controller
 ParamsPanel* mDetailsPanel;           // sample details panel
 2、创建每个sample里面都需要显示的细节信息面板(mDetailsPanel),并对它进行响应和切换管理。
 3、对各种gui(mTrayMgr里面创建)、camera控制(mCameraMan)和一些渲染设置进行响应和配置。

其中 _setup函数功能如下:

      _setup函数启动程序,比父类多了功能。
     1、创建mCamera和mCameraMan。
     2、mTrayMgr管理器的new。
     3、mDetailsPanel对话框的条目添加和显示设置。

3、Sample_Character类功能如下:

Sample_Character类是Sample_Character实例中的类,也是SdkSample的子类。它的具体功能如下:

     1、填写mInfo内容。
     2、创建场景(包括3d场景和2d对话框),创建动画动画人物。
     3、控制动画和渲染骨骼动画,camera和对话框显示。
     4骨骼动画的控制和渲染具体内容在下面成员变量中:
             SinbadCharacterController* mChara;

4、SinbadCharacterController类功能如下:

SinbadCharacterController类是Sample_Character实例中的类,它的具体功能如下:

     1、这个类是用来控制人物动画相关内容的,包括人物动画切换和渐变,人物对应位移、旋转,camera跟随。
     2、动画人物实体模型包括三部分,人物模型,双剑模型,拔剑的家闪光效果
     3、动画实现分为top和bottom两部分。闪光效果是代码动态计算的线形纹理。

其中 setupBody函数功能如下:

     1、创建人物的实体和节点。
     2、创建人物双刀,并绑定到骨骼。
     3、创建抽刀的闪光线条。

其中 fadeAnimations函数功能如下:

     1、根据切换标志,计算动画切换的渐变。
     2、这里的逻辑不严谨。原来我改过,现在只是人眼看不见。遇到首尾不一致的动画,显示时会有距离闪现跳动。

5、Sample_Character.cpp文件

Sample_Character实例中的Sample_Character.cpp文件,编写了控件代码的入口程序。具体原理暂略。 在ogre相关plugin中再学习。

————sample控件 完————

猜你喜欢

转载自blog.csdn.net/jean7155/article/details/85243151