《游戏编程算法与技巧》笔记(1~3)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Le_eG/article/details/82382434

第一章 游戏编程概述

游戏循环:游戏程序核心控制流程。

传统游戏循环(单线程):处理输入;更新游戏世界;生成输出。

多线程下的游戏循环:主线程处理输入、更新游戏世界、处理所有图形外的输出,将相关数据交给线程,令线程渲染图像。

游戏时间:单纯使用帧率控制游戏世界会产生很多问题,可以考虑使用真实时间,引入增量时间(deltatime)。

游戏对象:需要更新且绘制的对象;只需要绘制的对象;只需要更新的对象。

第二章 2D图形

1.CRT显示器(阴极射线管)

像素

扫描线

场消隐期:扫描复位时间(电子枪从右下角移动到左上角所花费时间)。

扫描二维码关注公众号,回复: 3112410 查看本文章

像素缓冲区

屏幕撕裂:当前帧尚未绘制完成,下一帧已开始向像素缓冲区写数据

双缓冲区

垂直同步:缓冲区交换在场消隐期,解决屏幕撕裂问题。但会导致输入延迟(降低响应速度)。

2.精灵

图片格式的选取:PNG格式占用空间小,但通常硬件不支持直接绘制,会被转换成其它格式。TGA可以直接绘制,但空间占用大。在IOS上较好的是PVR,其经过压缩且可以直接绘制。

绘制精灵:画家算法,将精灵进行分层,按序绘制。

动画精灵:帧率至少达到24FPS。用一组图片表示对象的所有状态,按顺序进行排序。声明动画片段类,记录动画片段的起始索引以及所有图片数量。在播放动画时,记录当前播放动画索引、图片在动画中的索引、动画的FPS(可以控制原动画的速度)。

精灵表单(图集):可以减少内存空间;减少图片切换频率,提高效率。

3.滚屏

单轴滚屏:将背景图片按屏幕大小切割。摄像机在玩家越过半屏时更新。

无限滚屏

平行滚屏:将背景拆分成不同层次,按不同速率进行滚动。

四向滚屏

砖块地图(瓦片)

斜视等视角砖块地图

第三章 线性代数

1.向量

长度、单位向量、正规化卡马克快速平方根

点乘:夹角;投影;反射

叉乘:法线

线性插值:Lerp

坐标系

2.矩阵

猜你喜欢

转载自blog.csdn.net/Le_eG/article/details/82382434