温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2020-04-25 02:14:32 来源:网络 阅读:620 作者:GuangYao_Li 栏目:编程语言

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

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

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

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI