标签:des blog os 使用 文件 数据 2014 log 代码
游戏循环:
初始化:执行一些基本的初始化操作,如内存分配,资源获取,从磁盘加载数据等。
进入游戏循环:进入主游戏循环,用户不断地执行动作,知道退出主循环为止。
读取玩家输入:处理玩家输入,或将其存储到缓存区中,供AI和游戏逻辑使用。
执行AI和游戏逻辑:这部分为游戏代码的主体部分,将执行AI,物理系统,和通用系统逻辑,并根据结果在屏幕上绘制下一帧。
渲染下一帧:首先游戏绘制的下一帧图像在离频offscreen缓存中绘制,然后进行一系列的渲染。在基于3D软件的引擎中,由一个非常复杂的3D图形流水线来进行渲染构成世界的无数多边形;而在基于OpenGL或Direct3D的3D硬件加速引擎中,大部分工作有硬件来承担。
同步显示:控制固定帧率,30帧为可接收的最小值,60帧为最大值,一般通过一些定时函数或等待函数来同步游戏到某个最大帧频。
循环。
大型游戏是一种超高性能计算机程序,为了效率,关键代码部分不会去使用高级API。一般来说,必须编写与游戏代码内部循环有关的一切内容,否则游戏达不到需要的速度和性能。如使用memset()函数,这个函数相当快,但其实进行单字节填充,而一般使用的都是4字节或8字节的基础数据类型组成内存结构,所以一般会使用四字节填充或者更多,效率也会提高很多,如下面实现的一次写入4字节的函数,为内联汇编语言函数,进一步提高效率:
inline void Memset_QUAD(void *dest,UINT data,int count){ //每次填充4字节 32位 _asm { mov edi,dest; mov ecx,count; mov eax,data; rep stosd; }//汇编代码使一些时间关键代码部分和内存关键代码部分的效率大幅提升,以后有空还是要研究一下汇编的。 }
标签:des blog os 使用 文件 数据 2014 log 代码
原文地址:http://blog.csdn.net/luo_xianming/article/details/39506425