3D引擎的任务是在屏幕上显示整个世界,更为精确的应该是显示用于感兴趣的部分。这意味着,3D引擎只需要显示整个世界的一个子集,这个子集是用户视野当中可见的部分。
  所以,3D引擎的一个任务就是以尽可能快的速度找出整个游戏世界中的可见部分的这个子集。为了达到这个目的,我们将世界分成多个区域,每个区域中保存了该区域中包含的3D物体。然后,引擎会通过照相机的视点(camera point of view)来找到可视的区域,从而得知哪些物体需要进行渲染。这个过程称作拣选(culling)。
  渲染是3D引擎的另一个任务。当引擎找到了需要渲染的物体的最小子集时,它必须以尽可能快的速度将他们渲染出来。那些相互独立的硬件制造商如AMD,NVIDIA,PowerVR等,出版了许多文章来介绍快速渲染的方法,其中有两个主要点:一个是最少化状态变换,另一个是几何数据批量化。
  3D引擎还有一个任务,就是让游戏角色(character)做出动画,这在现在一般使用的是蒙皮(skinning)。蒙皮的过程是这样的:模型内部处理顶点外还有骨骼(skeleton)数据,骨骼通过骨骼节点(bone)的形式组织成一个层次结构(这样child bones跟随着parent bone一起移动),动画计算时,计算出每个骨骼节点的偏移(transform)信息;模型内部的顶点和骨骼节点之间拥有绑定关系,一个顶点可能跟随几个骨骼节点进行移动,不同骨骼节点对顶点的影响用权重表示,拿权重*偏移之和作为顶点的偏移对顶点进行变换就可以将游戏角色移动到正确的位置。这个计算过程比较大,一般是在帧更新时进行的。
  这三个步骤按照下面的顺序进行:更新,拣选,渲染。为了做到最好,3D引擎必须高效地执行这三个步骤。为了达到这个目的,必须正确的使用一套3D API。