首页 > 代码库 > 计算机图形学笔记-图形系统

计算机图形学笔记-图形系统

图片由图片元素(像素 pixel)的阵列(光栅 raster)生成。一个像素对应图像中的一个位置或一块小的区域。

目前几乎所有计算机图形系统都基于光栅。

 

帧缓存 frame buffer:用于保存像素的一个储存区域,可以看做是图形系统的核心元素。一般使用特殊类型的存储器芯片(可以快速重新显示帧缓存中的内容)实现。在基于软件的图形系统(如:用于高分辨率绘制的系统、生成复杂不能实时生成视觉效果的系统)中,帧缓存是系统存储器的一部分。

分辨率 resolution:帧缓存中像素的数目,决定从图像中可以分辨多少细节。

 

帧缓存的深度depth精度precision:表示每个像素所用的bit数,决定诸如给定系统中可以表示多少种颜色之类的性质。

exp:深度为1bit的帧缓存允许有两种颜色,深度为8bit的帧缓存可以表示28=256种颜色。

 

全彩色系统 Full color:每个像素有24个bit(或更多)。可以表示足够多的颜色从而逼真显示绝大多数图像,也被成为真彩色系统 true color RGB颜色系统 RGB-color

每个像素对应的三组bit位分配给三原色。

 

高动态范围的应用需要使用超过24bits的定点数来表示RGB颜色,近来有些帧缓存将RGB值存储为标准IEEE格式浮点数。

故真彩色应该解释为:具有足够深度的帧缓存,用RGB值而不是一个有限的颜色集索引来表示颜色。

 

处理器要完成的主要图形处理功能:获取由应用程序生成的图元属性、为帧缓存中的像素赋值、以最佳方式表示图元。

 

光栅化rasterizaion扫描转换scan conversion:从几何实体到帧缓存中像素的颜色和位置。

 

GPU graphics processing unit图形处理单元:专门用来完成图形处理功能,可以在系统的主板或者图形卡中。帧缓存可以被GPU访问,而且可能就在GPU中。

 

光栅系统中两种把帧缓存中像素显示为屏幕上的点的方式:

  1. 逐行扫描 progressive非隔行扫描 noninterlaced

  像素按照刷新率一条一条扫描线显示

  1. 隔行扫描 interlaced

  奇数行和偶数行被交替刷新。

 

成像过程中必须有的两个基本实体:对象和观察者。

对象在空间中的存在不依赖于任何图像生成过程和任何观察者。

对象和观察者处在一个三维世界,由观察者所定义的图像是二维的,对对象的指定与对观察者的指定组合在一起获得一副二维图像。

 

光线和对象表面相互作用的细节决定了有多少光线进入照相机。

几何光学geometric optics把光源建模为具有固定强度的光能辐射器。光线从光源出发沿直线到达与其相互作用的对象。一个理想的点光源point source从一个点向所有方向均匀地发射光线(可以是单一频率或包含多个频率)。

一个特定光源由其发出光线的能量依频率和方向的分布来表征。

 

如果API要遵从虚拟照相机模型,需要有相应的函数来确定4个要素:

  1. 对象
  2. 观察者
  3. 光源
  4. 材质属性

 

确定照相机位置必须指定4个要素:

  1. 位置。照相机的位置由投影中心COP给出。
  2. 方向。以投影中心为原点设置一个照相机坐标系,可以分别绕坐标系的三个坐标轴旋转照相机。
  3. 焦距。决定了在胶片平面上成像的尺寸。
  4. 胶片平面。照相机的后部有一定的高度和宽度,胶片平面方向与透镜方向无关,可独立调节。

 

gluLookat(cop_x, cop_y, cop_z, at_x, at_y, at_z, up_x, up_y, up_z);

使照相机从投影中心指向所期望的位置(at)并且制定照相机的观察正向为up。

 

glPerspective(field_of_view, aspect_ratio, near, far);

为透视投影选择了透镜(视域),确定了场景中那一部分要被成像(宽高比与near和far距离)。

 

图形绘制流水线 顶点→像素

  1. 顶点处理模块:执行坐标变换和计算顶点的颜色值
  2. 裁剪和图元组装模块: 对成像场景进行裁剪。(裁剪必须针对逐个图元,不能针对逐个顶点)
  3. 光栅化模块:将裁剪模块得到的用顶点表示的图元输出一组片元fragment。
  4. 片元处理模块:利用光栅化模块生成的片元来更新帧缓存中的像素。

 

计算机图形学笔记-图形系统