本篇教程内容续上篇。
在实际接触OpenGL之前,需要先了解一些计算机图像领域的基础知识。
1.RGB颜色模型
或许你曾听说过三原色理论,这个理论奠定了RGB颜色模型的基础。光的三原色,即红、绿、蓝。我们普遍认为世界上所有颜色都能由这三种颜色混合得到,实际效果可见下图。
RGB颜色模型的全称是Red Green Blue颜色模型,它将任意一种颜色表示成红、绿、蓝三种分量。一般在计算机中,我们使用三个字节来表示一种颜色,从低位到高位依次是红色分量、绿色分量和蓝色分量。这种表示方法也是业界的一种标准,称为RGB888,其中8的意思是8bit。
然而实际上在处理图像时,光有红绿蓝三种颜色分量是不够的。随着图像技术的发展,人们提出了透明度的概念,并为其定义了一个度量Alpha。于是传统的RGB模型变成了RGBA模型,即Red Green Blue Alpha模型。该模型在RGB模型的基础上添加了一个新的度量Alpha,代表颜色的透明度。我们一般用四个字节来表示RGBA,即业界标准RGBA8888。
2.矢量图和位图
在计算机中,有两种方式表示一幅图像。第一种是使用图形代码表示,被称为矢量图;第二种是使用点阵表示,被称为位图。
使用图形代码表示可以从字面意思上理解,即使用图形语言来描述一副图像的构成,典型的有SVG语言描述的SVG图片,详情可以百度;点阵是最常见的一种图像表示法,平时我们打交道的图片几乎都是点阵表示的。点阵是一个颜色矩阵,图像按照宽高分成一个个小格子,每个格子中储存一种颜色。当格子密而多时,就能表现出一张完整的图片。
因此,位图可以使用一个RGBA类型的二维数组来存储。而OpenGL的渲染实质便是将矢量图转换成位图。