《游戏引擎架构》读书笔记-游戏引擎中的C++

原创 2016年06月09日 09:38:18

      《游戏引擎架构》在两年前就买了,而且自己也大体的看过一遍,因为自己想学习引擎的底层知识,所以重新又找出了这本书再读一遍,并把根据自己的理解写一些读书笔记在这里与大家交流。

       闲话少续,开始本篇的内容,这本书的第一部分是基础篇,第一章概述了一些引擎概念,第二章讲解了一些工具的用法(Visual Studio等),第三章介绍了C++,和一般的C++书不一样的是,本书讲解的C++应该更多的是引擎中常用的一些概念,另外还包括一些软件工程基础思想,笔者觉得比较重要的有以下几点

      首先,“让错误的程序显而易见”,这部分是在介绍编码标准的时候介绍的,其中推荐了一篇文章--“让错误的程序显而易见”(http://chinesetrad.joelonsoftware.com/Articles/Wrong.html),这篇文章介绍了通过命名方式的前缀反应变量的性质,从而让错误的程序显而易见,介绍了匈牙利命名法的使用方式。

       然后是对象的内存布局,这部分会对程序的性能优化很有帮助,在class和struct中,编译器不会把数据程序员紧凑的包裹在一起,因为每种数据都有其天然的对齐方式,供CPU高效的从内存读/写。对齐方式即内存地址为对齐字节大小的倍数,另外编译器可能会为了数组的对齐,会在末端加入填充,以下是32位系统下各个类型的大小(单位:字节):

int:4字节;float:4字节;double:8字节;bool:1字节;char:1字节;short:2字节;long:4字节或者8字节

       需要说明的是,当class中有虚函数的时候,或者是继承的类中有虚函数的时候,通常会在类的布局最前端加入一个虚表指针,它指向名为虚函数表的一个数据结构,因为指针是int类型的。

       了解内存布局的意义是,当我们写类和结构体的时候,最优化的处理方式是自己按照内存布局规则把数据排列好,从而可以降低类或者结构体所占的大小。

       另外需要说明的是类型大小的问题,因为标准C++基本数据类型设置为可以移植的,因而不做明确的规定,在游戏引擎的开发中,有时候需要知道某些变量的确切尺寸,多数游戏引擎会自定义基本的数据类型;另外还有大端和小端的转换问题,Wii、Xbox360和PS这种使用PowerPC开发的小端设备可能会涉及到数据转换问题。

       最后介绍了实现错误检测及处理,将断言分为两个宏中,方便在发布版时关掉不必要的断言从而避免不必要的效率损失。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

OpenGL ES2.0教程:使用VBO索引(4)

转自:http://4gamers.cn/archives/331 在上一篇文章中,我们介绍了uniform和模型-视图-投影变换,相信大家对于OpenGL ES 2.0应该有一点感觉了。在这篇...

关于cocos2d-x权威指南,关于我

非常高兴的告诉大家,我本人编写cocos2d-x书籍----cocos2d-x权威指南已经出版了,感谢大家一直以来的支持,可以说,正是有了大家对于我原创cocos2d-x文章的支持,才有了这本书。  ...

Cocos2dx-OpenGL ES2.0教程:初识MVP(3)

在上一篇文章中,我在介绍vertex shader的时候挖了一个坑:CC_MVPMatrix。它其实是一个uniform,每一个cocos2d-x预定义的shader都包含有这个uniform, ...

OpenGL ES2.0教程:纹理贴图(6)

转自http://4gamers.cn/archives/551 在上一篇文章中,我们介绍了如何绘制一个立方体,里面涉及的知识点有VBO(Vertex Buffer Object)、IBO(...

Cocos2dx-OpenGL ES2.0教程:你的第一个立方体(5)

在上篇文章中,我们介绍了VBO索引的使用,使用VBO索引可以有效地减少顶点个数,优化内存,提高程序效率。 本教程将带领大家一起走进3D–绘制一个立方体。其实画立方体本质上和画三角形没什么区别,所...

Cocos2dx-OpenGL ES2.0教程:使用VBO索引(4)

在上一篇文章中,我们介绍了uniform和模型-视图-投影变换,相信大家对于OpenGL ES 2.0应该有一点感觉了。在这篇文章中,我们不再画三角形了,改为画四边形。下篇教程,我们就可以画立方体...

cocos2D-X源码分析之从cocos2D-X学习OpenGL(1)----cocos2D-X渲染结构

cocos2D-X 3.0渲染结构代码讲解,也是cocos2D-X源码讲解系列文章和从cocos2D-X学习OpenGL系列文章的开始
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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