计算机图形学
本部分对应第26~
图形用户界面
图形用户界面(graphical user interface/GUI)
WIMP INTERFACE: windows+icons+menus+pointer
一开始微软用DOS操作系统做GUI做的稀烂,后面开发了windows95就好起来了。
3D图形
projection-投影
画简单的图形可以用直线,但是复杂的图形用三角形更适合,因为三角形简单,而且三角形的三个3D点一定在同一个确定的平面上,完美!
在3D图形学中,三角形这种作为画图基准的图形被称为 多边形(polygon)。如下图,一堆三角形。三角形越密,图形越精致,但是计算量越大。
渲染(render) 是为了将3D图形上的每块多边形转化为一块填满像素的区域。一种算法是扫描线渲染算法,就是取一个多边形,找到y轴上的最高点和最低点,然后从上往下一行一行扫描,位于内部像素的就填充。填充速度叫 填充速率(fillrate)。
但是这样的色块就是一个三角形区域,边缘全是锯齿,于是有了 抗锯齿(anti-aliasing)。原理就是扫描的时候,如果像素再内部就完全填充,如果落在边线上就淡化。这种技术被广泛应用
关于光源渲染,一个简单的方法就是比较各多边形的发现与光源的夹角。然后以此进行渲染。这叫 平面着色(flat shading),是最基本的照明算法。
图形学中还有一个概念叫 纹理(texture),指外观而非手感。实现纹理的一种算法是 纹理映射,简单来说就是扫描渲染的时候一个一个像素涂上相应位置的纹理的平均色。
如上,我们介绍了渲染中的 扫描线填充、抗锯齿、光线、纹理化 四个方面。
CPU一开始设计时就没想过做图形渲染,为了加快渲染速度,人们设计了专门负责图形计算的处理器 图形处理单元(graphics processing unit/GPU)。CPU位于显卡上,周围有专用的RAM——之前提到过,所有的网格和纹理都会储存在里面,让GPU能够高速读取。常见的显卡有GeForce GTX 1080 TI,有3000多个处理核心,每秒可处理上亿个多边形。