Irrlicht引擎源码剖析——第十八天

原创 2012年08月13日 13:33:04

今天开始看GUI(图像用户界面)模块的实现部分了。首先是BuildInFont.h,内置字体,在这个头文件里作者使用了Bin2H。Bin2H是免费软件,可以从www.code3d.com 免费下载,一个将二进制文件转换到 C 头文件中的Win32命令行实用工具,数据块作为代表该文件的内容。GUIIcons.h中建立了15种图标,并注明在BuidInFont中还有13种。

 

接下来是各个GUI组件的实现部分了。首先看CGUIWindow.h/.cpp,除去构造及析构函数,还增加事件处理函数以及绘制元素函数,成员变量中包含了按钮元素(组件)。由此可知GUI各个元素(组件)都会包含事件处理以及绘制元素的方法。

CGUIButton.h/.cpp,增加了一个设置字体的方法。

CGUICheckbox.h/.cpp,增加了设置选定状态以及查询选定状态对的方法。

CGUIFont.h/.cpp,增加了载入字体文件和绘制文本等方法。

CGUIFileOpenDialog.h/.cpp,增加获取所选文件的文件名及用文件填充列表框等方法。

CGUIImage.h/.cpp,没有事件处理方法,增加设置图像的方法。

CGUIListBox.h/.cpp,增加了对列表项的处理以及设置图标字体等方法。

CGUIMeshViewer.h/.cpp,增加网格和材质的设置方法。

CGUIScrollBar.h/.cpp,增加设置或获取滚动条及设置滚动条最大数目等方法。

CGUISkin.h/.cpp,没有事件处理和绘制方法。拥有获取或设置皮肤颜色、大小、字体等方法。

CGUIStaticText.h/.cpp,没有事件处理方法。

 

最后看CGUIEnvironment.h/.cpp文件,它作为GUI所有元素的管理器,将所有GUI元素(组件)的建立操作封装在一起。并有处理鼠标、键盘焦点消息的方法。这样GUI模块的实现全部完成。

 

最后这个引擎还剩下CIrrDeviceWin32.h/.cpp还未解决,在这个文件里,实现了一个派生类,基类在IrrlichtDevice.h中,该类封装了视频驱动设备、文件系统、场景管理器、GUI环境,使用该类实例来创建这些功能模块的对象,该类还含有创建窗口、运行设备、关闭设备、全屏切换等方法。

 

今天解决28个代码文件,还剩0个。至此Irrlight1.0版的源码剖析活动全部完成,接下来是用这个版本的引擎和最新版本的引擎进行对照,看看新增了哪些功能,修改了哪些东西等等。然后在利用该引擎做几个例题,熟悉应用。OVER!!!


Irrlicht引擎源码剖析——第二天

今天开始剖析代码,首先看include目录下的Irrlicht.h头文件。开始是关于该引擎的版权声明,然后是一长串预处理——各种头文件,因为这些头文件我们还没看过,所以先不添加,等以后看过了,在一一添...
  • iduosi
  • iduosi
  • 2012年07月25日 19:29
  • 3889

Irrlicht引擎源码剖析——第七天

首先看了一下include\scene下的头文件,发现多个头文件的预定义中包含了include\video中的头文件,所以决定先从include\video下的头文件看起。   首先是Color....
  • iduosi
  • iduosi
  • 2012年07月30日 22:23
  • 3351

Irrlicht引擎源码剖析——第十一天

今天首先看CSurfaceLoaderBmp.h/.cpp,顾名思义给表面载入Bmp位图。建立了BMP文件头结构。声明了一个给表面载入位图的类。在isALoadableFileFormat()函数中语...
  • iduosi
  • iduosi
  • 2012年08月03日 20:57
  • 1185

irrlicht引擎源码剖析 - 引擎概览

irrlicht是跨平台,支持多种图形库的开源3d引擎。irrlicht的设计很好的体现了接口和实现分离的原则,整个框架设计精巧清晰,是学习3d引擎设计的不错的教材。 先看下名字空间的划分,可以看到i...
  • Chinamming
  • Chinamming
  • 2013年11月21日 16:47
  • 951

Irrlicht引擎源码剖析——第三天

今天开始看include\core部分,首先打开irrmath.h,该文件在core命名空间里定义了4个常数,如浮点数比较时的舍入精度,圆周率,以及用于角度与弧度之间转换的常数值。 接着看v...
  • iduosi
  • iduosi
  • 2012年07月26日 18:09
  • 2991

Irrlicht引擎源码剖析——第九天

今天首先看ISceneNode.h文件,这个文件内容相比以前丰富多了。实现了场景结点的接口。对于一个场景结点,定义了结点名字、各转换矩阵、父结点指针、子结点存储链表、结点动画存储链表、结点id、结点能...
  • iduosi
  • iduosi
  • 2012年08月01日 22:07
  • 3023

Irrlicht引擎源码剖析——第十天

在include分类目录下的5个模块,仅剩gui模块了。我觉得gui模块算是引擎的附加功能,可以独立出来看,所以先放下这块。一鼓作气先把引擎最重要的核心部分——video、scene的实现模块搞定。 ...
  • iduosi
  • iduosi
  • 2012年08月02日 20:59
  • 2450

Irrlicht引擎源码剖析——第五天

在目测了一番后,决定从io模块下手。 先看IFileList.h,顾名思义,创建了一个文件列表类,一个基类。然后看IReadFile.h,创建了用于读取文件的基类,在前两个的基础上实现了IF...
  • iduosi
  • iduosi
  • 2012年07月28日 20:29
  • 3248

irrlicht引擎源码剖析 - 引用计数

在研究irrlicht的video driver和scene graph之前,必须先了解在irrlicht中广泛应用的引用计数机制。irrlicht的接口IReferenceCounted实现了引用计...
  • Chinamming
  • Chinamming
  • 2013年11月21日 16:48
  • 789

irrlicht引擎源码剖析 - 引用计数

在研究irrlicht的video driver和scene graph之前,必须先了解在irrlicht中广泛应用的引用计数机制。irrlicht的接口IReferenceCounted实现了引用计...
  • pizi0475
  • pizi0475
  • 2010年05月29日 18:12
  • 1582
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Irrlicht引擎源码剖析——第十八天
举报原因:
原因补充:

(最多只允许输入30个字)