1.1 什么是OpenGL

来源:互联网 发布:vb.net 开发手机页面 编辑:程序博客网 时间:2024/06/05 22:56

OpenGL是图形硬件的一种软件接口。

这是书中的定义。

先来看OpenGL,这是我们要学的这个东西的名称。

图形硬件,通常指显卡,显示器的信号连接线就是从显卡接出来的。

软件接口,这个不好理解。先看接口,接口就是一个物体与外界进行交互的部分。一个东西如果没有接口,那么它就不能与外界交互,不能访问外界,也不能被外界访问。再来看硬件接口,常见的鼠标USB接口,属于硬件接口,这个USB接口是的鼠标可与电脑主板进行交互。鼠标插到主板上就能用,从主板上拔出,电脑就没有鼠标用了。拔出和插入相当于控制这个硬件接口的开与关。软件接口就是指一个物体与外界的交互是通过软件实现的,而不是硬件的开关了。比如我们C语言的printf("Hello,world!);这个函数,将"Hello,world"这样一个字符串送到了屏幕输出窗口进行显示。这其实就是软件接口。

所以我们可以把OpenGL看成是由一些函数组成的函数库,这些函数库与图形硬件打交道,控制图形硬件工作。


如上图所示,可以从两方面来看待OpenGL。

 从位置上来说,OpenGL位于图形硬件的外层接口处,图形应用软件通过OpenGL来与硬件进行交互。

从它自己的内容上来说,它就是一些函数的集合。比如glBegin, glVertex3f,glEnd...


OpenGL不能干什么

1. 不能创建窗口。啊,不能创建窗口,那图形显示到哪里去?寄居到别人的窗口中去呗。等别人创建好窗口以后,OpenGL再去讨好别人,大哥,让我显示一下,好吗?

2. 不能描述三维模型。三维模型,什么东东?玩过游戏吗,游戏里面的人物,数目,怪物啊,那都是一个个的三维模型。

那不能搞这两样,那你OpenGL还能干啥? 还怎么形成图像? 答,能搞点、线、多边形。好吧,真尼玛原始。


OpenGL能干什么

这个参见《OpenGL编程指南》的彩图,那些都能用OpenGL搞出来。看了这个之后,我感觉OpenGL还是很强大的嘛。
然后就是一大堆鸟语。什么线框模型、深度提示、抗锯齿、单调着色、平滑着色、光照、阴影、纹理贴图、运动模糊、雾、景深效果...我想说的是,什么苍井空,小泽玛利亚....我一个都不认识。
那封面的那些彩图都那么牛逼,OpenGL怎么搞出来的。这是经过一系列步骤弄出来的,这个弄出来的过程,叫做渲染。

OpenGL渲染步骤

渲染是计算机根据模型创建图像的过程。
它OpenGL要创建图像,首先得有个创建图形的依据,是吧。比如我的手机能照相,我现在想要一个美女图像,但是身边没有美女,那即使我能照相,也还是得不到美女图像,我没有美女Model是吧。更何况它OpenGL就是一堆函数,这堆函数只操作图形硬件,不操作摄像机,那它要产生图像,怎么办?答,模拟摄像机,然后用美女模型来取代真实的美女。给它一个美女模型,它才能给我搞一张美女图片来。
那好,加入我已经有一个美女模型了,那OpenGL怎么渲染出美女图像呢?它需要经过一系列步骤。
1. 根据几何图元创建形状。 几何图元,什么玩意? 先看图元。图元,图形元素,可以编辑的最小图形单元。图元就是图形的基本组成单位,一个图形由多个图元组成。那几何图元呢?就是说这个图元是一个几何体,比如点、直线、多边形。那怎么根据几何图元创建形状呢?比如我描述了一个等边三角形,它的三个顶点位于一个圆上,圆的中心与等边三角形的外心位于同一点。那你就知道我描述的是这样一个图形了。


2. 在三维空间中排列物体,并选择观察场景的有利视角。这个好说,把刚才的图形放到你电脑屏幕的背面,那你想看到这个图形,你就不能站在屏幕的前面了。
3. 计算所有物体的颜色。光有形状还不够,现实中的物体,通常呈现出各种各样的颜色。而之前的两个步骤,都没考虑颜色,所以还需要给物体着色。
4. 把物体的数学描述以及物体相关的颜色信息转换为屏幕上的像素。这个过程叫光栅化。这就好比你拿出手机,从屏幕侧面或背面,对着刚才的物体,拍照。就得到了改物体的一个二维图像。

上述步骤总结起来就是 一,要有东西,这个东西有自己的形状。 二、这个东西放到合适的位置,选一个合适的角度去观察它。三、给这个东西上颜色。四、这个东西从三维变成屏幕上的二维图形。这个三维变二维的过程,叫做光栅化。
上面这些步骤,每一步都只做一点事,然后将剩下的工作交给下一步去做,下一步做完,又交给下一步,直到最终产生屏幕上的图像。这个过程有点像工厂的流水线,所以渲染过程中这一系列的处理节点,叫渲染流水线,又叫渲染管线。
那渲染管线和渲染有什么区别呢? 渲染是指根据模型创建图形的过程,而这个过程中的一系列处理阶段叫渲染管线。所以渲染管线是渲染的细分。
网上对于渲染管线的定义是:显示芯片内部处理图形信号相互独立的并行处理单元。这么说的话,渲染管线就是硬件了,而不是处理阶段。我还是以书上的为准,认为渲染管线是处理阶段。

0 0
原创粉丝点击