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引擎源码剖析——第十六天

作者在对于引擎场景管理的实现,其大部分内容是指场景节点是如何渲染的,分为哪些不同的场景结点,诸如动画网格节点、广告牌节点、二叉空间分割树(BspTree)节点、摄像机节点、光源节点、八叉树节点等等。把...
  • iduosi
  • iduosi
  • 2012年08月09日 12:24
  • 2966

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

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

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

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

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

在研究irrlicht的video driver和scene graph之前,必须先了解在irrlicht中广泛应用的引用计数机制。irrlicht的接口IReferenceCounted实现了引用计...

Irrlicht 0.1引擎源码分析与研究(二)

设备的创建   同时也可以看到,使用Irrlicht实际上是很简单的,它帮助我们完成了大多数的功能。下面对这段代码这段代码的内部实现进行详细剖析(仅针对Windows平台,下面未说明都指Windo...

Irrlicht 0.1引擎源码分析与研究(一)

Irrlicht引擎主要是由一个名叫Nikolaus Gebhardt奥地利人所设计,是sourceforge上的一个开源项目。 Irrlicht是一个德国神话故事中的一种动物的名字,它能够发光和飞翔...

Irrlicht 0.1引擎源码分析与研究(三)

IEventReceiver源代码总共有两个例子,第一个例子没有操作任何3D对象或者摄像机,所以没有用到事件接收器。第二个例子“Quake3DMap”中涉及到摄像机的操作,所以添加一事件处理部分的代码...

Irrlicht游戏引擎(V0.1)源码学习系列之一

Irrlicht是完全使用C++开发的一款高效实时的3D渲染引擎,相对于Ogre来说,他没有Ogre里面那些复杂的脚本技术,对于初学者的我来说,希望能够看到一个纯粹点的引擎,如果使用脚本封装的太多层,...

irrlicht引擎入门——安装和运行第一个实例

想找个图像引擎体验下,网上多番chac

Irrlicht学习备忘录——0 引擎特点

0引擎特点 Irrlicht是一个采用C++开发的、开源的、完全跨平台的、具有商业引擎特性的、高效的、实时渲染的3D引擎。 编程语言:官方C++,wiki上有java,dot NET Fram...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Irrlicht引擎源码剖析——第十八天
举报原因:
原因补充:

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