openGL编程指南第一章
前言
这一章主要是介绍OpenGL技术里面的一些概念
OpenGL介绍
它是一个图形API,设计目标是作为一种流线型且独立于硬件的操作接口。基于此OpenGL并没有提供复杂的操作函数,而是提供一些简单的图元工具供给程序员使用。同时,在使用OpenGL进行编程的时候,我们会发现,OpenGL其实是巨大的状态机,我们可以通过设置一系列变量(假设状态是一个对象,而一个个对象是这个对象里面的每一个选项)来控制OpenGL的运行。
相关概念
图元(图形输出原语)
图形软件包当中描述各种图形元素的函数简称图元,图元包括每一个对象的结构信息以及在场景当中的坐标信息。例如,描述几何要素的输出图元一般称为几何图元(点、线、面)。
模型
根据各种几何图元结构组成的整体
渲染
根据模型创建图像的过程,最终的图像在计算机上面绘制的是由像素点构成。
像素
在计算机中,和像素有关的信息都由一个叫位平面存储,位平面是一块内存区域存储着每个像素1位信息。例如像素的颜色值需要32位2进制数来表示,则位平面如下图所示:
以下关于位平面的图片以及部分描述来自于:Erichn的博客
该图表示一张图像,而三十二位颜色值可以假设为竖直方向的三十二个方块:
那么,帧缓存大小可以表示为整个体积:
我们把这个立方体在竖直方向进行32此切割,得到图像在竖直方向上每一个像素的分布:
每个小方块代表一位二值,对一副用多个比特表示其灰度值得图像来说,其中每个比特可以看做表示了1个二值平面;通俗来讲,用图像作为底面,用灰度大小的8位(或则其他位数)作为高度,形成的立方体直方图,各像素位置相同的位形成了一个平面(如上图中的切面所示)称为位平面。各个位平面能够组织成缓冲区,而缓冲区保存了图形硬件为了控制屏幕上所有像素的属性(颜色、灰度值、强度等等)的信息
渲染模式
-
立即渲染模式
这种模式也叫固定渲染管线,该模式将图形计算大多数功能给隐藏起来了,使得开发者很难控制OpenGL进行灵活渲染,即使这种方式容易理解和使用,但是开发效率很低,因此很早被放弃。
-
核心模式
在该模式下,开发者对绘图的细节有了更多的掌控,而且迫使开发者用最新的函数,如果依然用废弃的函数,OpenGL会抛出错误并终止绘制,而最新函数优势是更高的灵活性以及效率,同时带来了很大的学习难度。
渲染管线
渲染管线的功能是在给定虚拟相机、3D场景物体、以及光源等场景要素来产生或者渲染一副2D的图像。即:
- 将物体的3D坐标转变为屏幕的2D坐标
- 为屏幕的每一个像素着色