《游戏引擎架构》读书笔记-游戏引擎中的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开发的小端设备可能会涉及到数据转换问题。

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

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

cocos2d-x游戏实例(25)-简易动作游戏(3)

小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man 本篇进行垂直方向上的碰撞检测,测试的方法...

cocos2d-x游戏实例(27)-简易动作游戏(5)

小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man继续简易动作游戏实例,本篇加入小怪并且加入小怪与...

《游戏引擎架构》读书笔记(三)

一.动画系统 (1)动画系统的演变: a)传统的帧动画:2D游戏中,将动作逐帧播放。好吧,我只停留在这个水平。 b)动画纹理:与帧动画差不多,使用面向摄像机的四边形,贴上一连串的纹理。虽然很挫,但是现...

[读书笔记]<游戏引擎架构>|管理器的启动与终止

每个游戏都会包含一些底层支持系统, 例如资源管理器、日志系统、对象池、动画管理器、音乐/音效管理器等。这些管理器通常是一个单例类,如下面这段代码:class ResourceManager { pri...
  • zryxh1
  • zryxh1
  • 2016年11月28日 01:03
  • 204

《游戏引擎架构》读书笔记(二)

一.调试技巧及工具 (1)基础调试 a)   日志及追踪,有些bug难以用VS自带的调试来进行单步调试,最好的解决方案就是printf调试法,打印一组数据,观察情况。之前我的做法是单独生成一个控制台,...

《游戏引擎架构》 笔记(一)

博客搬家自http://zhouyuanchao.com/wordpress/archives/41 游戏团队:工程师、艺术家、游戏设计师、制作人 平台游戏(platformer)...

游戏引擎学习笔记:介绍,架构,设计及实现

By Long Luo 从小到大,虽然玩过的游戏不少,但是从写程序开始,目前为此仅仅写过2个游戏。其一是2011年在MTK平台下写的贪食蛇,其二是2010年在嵌入式开发板上写过一个迷宫的游戏。第...

《游戏引擎架构》 笔记(二) 动画系统

博客搬家自http://zhouyuanchao.com/wordpress/archives/44 每顶点动画技术:存储随时间改变的顶点位置和法线 变形目标动画: 移动网格顶点,仅制作相...

【Visual C++】游戏开发笔记三十五 站在巨人的肩膀上:游戏引擎导论

看到在留言中很多朋友提到不太清楚DirectX与游戏引擎的区别的问题,在这里浅墨就专门把自己对游戏引擎的一些理解写成一篇文章,作为我们《Visual C++游戏开发》专栏的游戏引擎导论,也希望能通过这...

【Visual C++】游戏开发笔记三十五 站在巨人的肩膀上:游戏引擎导论

本系列文章由zhmxy555(毛星云)编写,转载请注明出处。  文章链接: http://blog.csdn.net/zhmxy555/article/details/8250057作者:毛星云(浅墨...
  • zhmxy555
  • zhmxy555
  • 2012年12月03日 02:40
  • 71246
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《游戏引擎架构》读书笔记-游戏引擎中的C++
举报原因:
原因补充:

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