第一篇
一,颜色像素和缓存
A.基本颜色理论
物理世界中,光是由光子所组成的,简单来说,细小的粒子沿着一条直线路径进行运动,每个粒子都有自己的色彩.
图形学和OpenGL的关系:
色彩的三原色:红色,绿色和蓝色,是我们通常所说的RGB颜色空间,在OpenGL中,我们通常会在这三个后面加上第四个,即Alpha,合成就是我们通常所说的RGBA.
颜色空间的种类:RGBA,HSV(色调,饱和度,值),CMYK(靛,紫,黄,黑)
B.颜色缓存
颜色缓存:每个RGB分量所占用的位数,得到一个像素深度为24位的颜色缓存
几乎所有的图形程序都有一个共同的目标,就是在屏幕上绘制图像.
帧缓存:(屏幕)是由矩形的像素数组组成的,每个像素都可以在图像对应的点显示一小块的颜色值,经过光栅化之后,得到片元,每个片元都包含与像素位置对应的坐标数据,以及颜色和深度的存储值.
颜色缓存:一般是屏幕分辨率的乘法结果就是像素个数,颜色缓存只是记录像素信息的多个缓存中的一个,一个像素可能会关联多个颜色缓存,也就是渲染缓存.
C.深度缓存
深度缓存为每个像素保存一个深度值。这里深度是物体与观察者眼睛的距离,因此深度值较大的像素会被深度值较小的像素所覆盖。深度缓存有时也叫做z缓存(z_buffer).
D.模板缓存
模板缓存来限制屏幕特定区域的绘制,模板缓存经典用途就是模拟汽车的后视镜视角.
二.颜色与OpenGL
A.颜色的表达与OpenGL
OpenGL内部是如何使用颜色值的,OpenGL内部会使用浮点数来表示一个颜色分量,并且负责维护它的精度,直到保存数据到帧缓存为止。
B.顶点颜色
颜色数据也必须保存在顶点缓存对象中
C.光栅化
OpenGL的管线中,顶点着色阶段(顶点,细分和几何着色)以及片元着色阶段之间的过程被称为光栅化。它的主要职责是判断屏幕空间的哪个部分被几何体(点,线,三角形)所覆盖。