3D 图形
2D 屏幕显示 3D 的方式是将 3D 的坐标做投影 projection,这样就得到了 2D 的坐标,然后再显示在屏幕上 wireframe rendering。这个投影的方式有很多种,常见的有正交投影 orthographic projection 和透视投影 perspective projection。
在屏幕上显示 3D 物体时,一般三角形更常用,而不是正方形,源于三角形的简单性,而且三个点可以确定一个平面,要比四边形更加简洁。
有了三角形描绘图形后,需要做图形填充,一种经典的算法是扫描线算法 scan-line algorithm,填充的速度叫 fillrate。
一种减轻锯齿的方法叫 抗锯齿 anti-aliasing。
对于有景深的渲染,一般借助于排序,基于视图的远近依次渲染,这样就可以避免后面的物体遮挡前面的物体。
为了优化渲染效率,z-buffering 算法不再需要排序,而是默认每个像素距离是无限大,然后根据渲染数据更新,更新逻辑是保留最小值,这样加速了渲染。
除此之外,还有很多算法被发明出来处理光源明暗、阴影和物体纹理等效果。
3D 渲染的计算量是非常巨大的,CPU 不适合做这样大量的计算,GPU 专门为此而生。既支持大规模并行处理渲染计算,也支持将一些存储放到 RAM 上方便内核高速访问。\