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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《游戏引擎架构》读书笔记1-游戏引擎中的C++相关的知识,希望对你有一定的参考价值。

       3月底,我暂时结束了北京的工作,从原来的公司离职,主要是为了学习游戏开发的底层知识和3D引擎相关的内容,并进行技术转型,为了鞭策自己的学习,未来博客更新会比较频繁,现阶段主要是《游戏引擎架构》读书笔记系列和unity学习笔记系列。

       《游戏引擎架构》在两年前就买了,而且自己也大体的看过一遍,因为自己想学习引擎的底层知识,所以重新又找出了这本书再读一遍,并把根据自己的理解写一些读书笔记在这里与大家交流,另外因为想有一个新的开始,近期都会在博客园这里写技术博客了,前些日子搞了个自己的网站(www.manshuoquan.cn)但是服务器有些问题,后面还是会尝试自己建站,并把博客传上去。

       闲话少续,开始本篇的内容,这本书的第一部分是基础篇,第一章概述了一些引擎概念,第二章讲解了一些工具的用法(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开发的小端设备可能会涉及到数据转换问题。

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

以上是关于《游戏引擎架构》读书笔记1-游戏引擎中的C++的主要内容,如果未能解决你的问题,请参考以下文章

《逐梦旅程 WINDOWS游戏编程之从零开始》读书笔记1——创建窗口

《游戏引擎架构》笔记三

《游戏引擎架构》笔记六

《游戏引擎架构》笔记十三

《游戏引擎架构》笔记十四

windows 游戏编程大师 读书笔记