OpenGL是什么

对OpenGL有一个大概的认识!

今天是我们OpenGL 系列教程的第零讲。在后面的教程我们中会讲述OPenGL工作的详细流程以及原理,以及怎么使用OpenGL,这一听起来很牛叉的东西。 现在我们先来大概认识一下openGL到底是个什么东东。OpenGL的全称是 Open Graphic Library, 即 开放的图像库。图形库嘛,就是用来显示图形的程序。我们都知道,再复杂的图形都是由点 线 面 三种元素构成的,而OpenGL就是使用GPU、显卡来绘制这些基础元素的,从而组成我们看到的的各种图形。话说在很久以前,老王在他们软件公司是负责开发软件图形界面的,总是调用 Nvidia、Intel、AMD提供的GPU驱动进行软件图形的编程,但是三家的实现思路不一致,老李家的驱动画一个矩形要传入 X 、Y、宽度、 高度这四个参数、 但是呢、老赵家却要传入传入左上角的 X、Y以及右下角的 X、Y。 这让老王那个烦啊,搞得他那个生活都不和谐了。于是他就去了老赵,老李家,打算跟他们商量一下统一调用的问题、恰巧老赵老李不在家,只有他俩媳妇儿在家,于是。。 老王就走了。。。。改天再来。后来呢,老王就根据自己丰富的图形编程经验,给老赵老李出了一个参考标准,其实呢、就是一个头文件,这里边规定了一个函数实现什么功能,传入什么样的参数,并且对他们说,你们谁实现的好,我就多买谁家的GPU。于是呢 ,老王从此以后,只要写一套程序就可以运行在所有的GPU上了。老王呢就是 KHRONOS,这里我们不多做介绍,只需要知道从此我们使用GPU进行图形编程,只需要调用openGL就可以实现同样的效果就可以了。

一套API,就是说,包含同一个头文件,调用各个显卡厂商提供的驱动函数,就可以实现同样的功能,。

一套标准,就是说,这个标准对大多数的硬件都是适用的,正如这张图里所展示的,所有的接口都是规定好的,无论我们买哪一家的内存,都是可以直接插上去使用的。对于软件也是如此。大多数的显卡厂商都实现了这个API,业内进行GPU图形编程的时候、首先想到的应该是opengl。 等等,为什么是应该,因为在Windows上还有DirectX 以及最近的新标准 ValKan,不过这是后话,我们这里不多说。

但是当我们提到 OpenGL,又会听 openGL 2.0 3.0 openGL ES 2.0 OpenGL ES 3.0, 那么他们之前有什么区别呢。2.0 和 3.0 主要区别就是,3.0比2.0多了1.0,其次才是进行了一些支持特性上的升级,Dock本人知道的也不太多,就不卖弄呢,只需要知道3.0比2.0更高级,但是 3.0的一些高级新特性显卡厂商还没有进行完全支持。 ES主要就是指 Emebed System , 顾名思义,就是针对针对手机、PDA和游戏主机等嵌入式设备而设计的。 是 OpenGL三维图形 API 的子集,我们的安卓手机,Iphone手机就是运行的 ES版本。 那么 固定管线和非固定管线有什么区别呢,

假如你的面前有一条河,固定管线就相当于由一个老伯乘着船将你们渡过去, 来了牛,度过去,来了车, 度过去, 来了老王、度过去、来了老王媳妇儿、。。。 渡过出去。可以看出,功能比较单一。但是呢,非固定管线就不一样了,我们可以从桥上边开车过去,可以骑车过去。可以跑过去,甚至呢,滚过去都可以、非固定管线不再提供固定功能-这里就是指撑船的老伯,而是建好一个通道,让你自己决定 怎么过去。那么我们怎么过去的方式就是Shader,我们自己编写的运行在GPU上的程序。关于Shader怎么写,我们会在后续的章节中详细介绍。

使用 OpenGL 我们可以在几乎你能想到的所有操作系统上写出绚丽多彩,运行高效的程序!

版权声明:本文为博主原创文章,转载需声明为转载内容并添加原文地址。

原文地址:http://coderdock.com

Dock wechat
欢迎您扫一扫上面的微信公众号,订阅我的公众号