Irrlicht_0.1源码学习(1)——Welcome to the Irrlicht Engine

关于Irrlicht这一引擎,想必不用过多介绍什么了,下面是我从其首页上搬来的一段介绍文字,以供参考

  The Irrlicht Engine is an open source high performance realtime 3D engine written in C++. It is completely cross-platform, using D3D, OpenGL and its own software renderers, and has all of the state-of-the-art features which can be found in commercial 3d engines. We‘ve got a huge active community, and there are lots of projects in development that use the engine. You can find enhancements for Irrlicht all over the web, like alternative terrain renderers, portal renderers, exporters, world layers, tutorials, editors, language bindings for java, perl, ruby, basic, python, lua, and so on. And best of all: It‘s completely free.

正式开始学习之前先推荐一篇博客

事实上这篇博客在笔者的学习过程起到了很大的帮助,唯一感到遗憾的是其中内容没有照顾到引擎实现的个中细节。同样,笔者也先对Irrlicht初代的版本(0.1)进行剖析,剖析方法也是一样——自己新建一个项目,源码看到哪,自己就写到哪。

按照规矩,这里放上Irrlicht各版本源码下载的传送门

从下一篇开始我们将逐步揭开Irrlicht中的方方面面。写在前面,笔者所使用的开发环境为:Windows10-64bit操作系统 + Visual Studio 2013 IDE,请自行对照参考。

时间: 2024-08-02 07:07:03

Irrlicht_0.1源码学习(1)——Welcome to the Irrlicht Engine的相关文章

Irrlicht_0.1源码学习(3)—include/Irrlicht.h

从这一篇开始分析学习irrlicht源码,第一次就交给include目录下的Irrlicht.h头文件吧:) 文件的最开始是一大段绿油油的注释块,主要写了一些版权相关的东西,这里直接忽略...,有兴趣的自行阅读 然后是一连串预编译指令,没啥好说的,引用了n多的头文件,这里暂不作添加,以后分析完再一个一个慢慢添加进来就可以了. 继续向下看,这个文件包含的内容很简单,先声明一个创建引擎设备对象的函数(createDevice),然后建立一个命名空间irr,在该命名空间里又分别包含了:core.gui

Irrlicht_0.1源码学习(5)—include/core/dimension2d.h、include/core/position2d.h、IUnknown.h、Keycodes.h & include/IrrlichtDevice.h

因为之前的学习中有遇着引擎核心模块中dimension2d和position2d这两个头文件,这里我们先把这两个文件过一遍. 首先是include/core下的dimension2d.h,这个头文件里面定义了一个叫做dimension2d的模板类,用以包装一个二维尺寸. 该类的字段只有Width和Height两个,比较容易理解,然后根据其构造方式的多样性实现了三种不同的构造方法,再接着是一些重载的运算符,分别用于判断相等.不等以及赋值. 同样,include/core下的position2d.h

Irrlicht_0.1源码学习(4)—include/irrTypes.h & include/IeventReceiver.h

irrTypes.h这个文件做的事很简单,通过一系列typedef操作定义了Irrlicht引擎中的所有基本数据类型,以保证引擎的可移植性. IeventReceiver.h则定义了一些用于事件系统中的枚举和结构/类.其中包含了EEVENT_TYPE.EMOUSE_INPUT_EVENT.EGUI_EVENT_TYPE三种枚举类型以及SEvent结构和IEventReceiver类. EEVENT_TYPE:用于枚举irrlicht引擎中所有的事件类型(gui事件.鼠标事件.键盘事件) //!

Irrlicht_0.1源码学习(6)—include/core/*

由于irrlicht引擎core部分的主要内容为一系列的自定数据结构以及一些重要的常量,理解难度着实不大,毕竟都是一些coding的基本功了. 首先打开irrmath.h,该文件在core命名空间里定义了4个常数:用于32位浮点数比较的误差精度ROUNDING_ERROR.圆周率常量PI.以及角度弧度相互转换的转换系数GRAD_PI和GRAD_PI2. 接着我们打开heapsort.h,看文件名就能猜到,这个文件应该是用来实现堆排序功能的.果不其然,该文件中只实现了两个堆排序相关的函数:heap

FireMonkey 源码学习(5)

(5)UpdateCharRec 该函数的源码分析如下: procedure TTextLayoutNG.UpdateCharRec(const ACanvas: TCanvas; NeedBitmap: Boolean; var NewRec: PCharRec; HasItem: Boolean; const CharDic: TCharDic; const AFont: TFont; const Ch: UCS4Char; const NeedPath: Boolean = False);

jquery源码学习

jQuery 源码学习是对js的能力提升很有帮助的一个方法,废话不说,我们来开始学习啦 我们学习的源码是jquery-2.0.3已经不支持IE6,7,8了,因为可以少学很多hack和兼容的方法. jquery-2.0.3的代码结构如下 首先最外层为一个闭包, 代码执行的最后一句为window.$ = window.jquery = jquery 让闭包中的变量暴露倒全局中. 传参传入window是为了便于压缩 传入undefined是为了undifined被修改,他是window的属性,可以被修

Hadoop源码学习笔记(1) ——第二季开始——找到Main函数及读一读Configure类

Hadoop源码学习笔记(1) ——找到Main函数及读一读Configure类 前面在第一季中,我们简单地研究了下Hadoop是什么,怎么用.在这开源的大牛作品的诱惑下,接下来我们要研究一下它是如何实现的. 提前申明,本人是一直搞.net的,对java略为生疏,所以在学习该作品时,会时不时插入对java的学习,到时也会摆一些上来,包括一下设计模式之类的.欢迎高手指正. 整个学习过程,我们主要通过eclipse来学习,之前已经讲过如何在eclipse中搭建调试环境,这里就不多述了. 在之前源码初

HSQLDB源码学习——数据库安装启动及JDBC连接

HSQLDB 是一个轻量级的纯Java开发的开放源代码的关系数据库系统.因为HSQLDB的轻量(占用空间小),使用简单,支持内存运行方式等特点,HSQLDB被广泛用于开发环境和某些中小型系统中. 在http://sourceforge.net/projects/hsqldb/files/下载了HSQLDB 1.8.0版本.把下载的zip文件解压缩至任意目录例如c:\hsqldb1.8便完成安装. hsqldb有四种运行模式: 一.内存(Memory-Only)模式:所有数据都在内存里操作.应用程

lodash源码学习(10)

_.delay(func, wait, [args]) 延迟wait毫秒之后调用该函数,添加的参数为函数调用时的参数 //delay.js var baseDelay = require('./_baseDelay'),//baseDelay方法 baseRest = require('./_baseRest'),//创建使用rest参数方法 toNumber = require('./toNumber');//转化为数字 /** * * @param {Function} func 需要延迟执