当前位置:首页 > 经验 >

opengl图解(opengl三个基本操作)

来源:原点资讯(www.yd166.com)时间:2022-10-25 10:06:33作者:YD166手机阅读>>

在喜欢玩游戏的程序员眼里,OpenGL的魅力是极大的。这个用于渲染2D、3D矢量图形的API,在众多应用程序编程接口中,算是相当年轻有为了。

早年间,要想开发可以用在各种各样图形硬件上的软件,程序员就需要为每种硬件编写自定义的接口和驱动程序,这极其繁杂的程序和高昂的成本使用起来相当吃力。而OpenGL拥有的跨语言、跨平台特性,让其一面世就收到了程序员的喜爱。

OpenGL在渲染上表现游戏,现在市场上很多大型电脑游戏,都有它的身影,比如大家熟知的《反恐精英》。但实际上,OpenGL的创始之初,并非想要应用于游戏。

那什么原因让它转向游戏开发领域,短短几十年里,这个充满活力的API都经历什么呢?一起来了解一下OpenGL的前世今生吧。

opengl图解,opengl三个基本操作(1)

应运而生,出身即不凡

1992年,为方便计算机图形开发,美国硅图公司(Silicon Graphics,简称SGI)研发的2D/3D图形应用程序编程接口(API)OpenGL正式问世,成为当时业界的翘楚。

作为业界高性能计算系统、复杂数据管理及可视化产品的重要提供商,SGI在IT行业可谓大名鼎鼎,除了提供了世界上最优秀的服务器系列以及具有超级计算能力的可视化工作站,还是世界上发展最快的一家计算机公司。


1982年,斯坦福大学Jim Clark教授离开大学开发三维计算机图形技术,创办了Silicon Graphics。两年后就推出第一台高端三维工作站计算机,并在1996实现了年总收入36.6亿的成绩。虽然SGI最后因为经营不善的问题退出市场,但这个魅力十足的计算机公司也确实给IT行业留下了不少经典产品。

上世纪90年代,SGI旗下的高端图像工作站在计算机图形领域处于领先地位,比如1993年上映的《侏罗纪公园》就是使用 SGI 图形工作站渲染的。SGI拥有专利性的图形API,叫做IRIS GL。后来SGI意识到可移植性的重要性,于是决定对IRIS GL进行修改,并把它当作一种开放标准,这就是1992年6月所发布的OpenGL 1.0版本!

由于OpenGL本身并不拘泥于操作系统的种类,可运行在采用不同操作系统的各种计算机上,并能在网络环境下以客户/服务器模式工作。于是,OpenGL自然而然地就成了计算机3D领域里专业图形处理、科学计算等高端应用领域的标准图形API,为当时的电影、电视图像处理提供了很大的支持。

“雪藏”7年,OpenGL颠沛的发展之路

在3D游戏高速发展之下,OpenGL的竞争对手逐渐增多,有3dfx Interactive所开发的私有图形API——Glide,还有微软发的DirectX。

OpenGL的发展一直处于一种较为迟缓的态势,每次版本的提高新增的技术很少,大多只是对其中部分做出修改和完善。在谋求新发展阶段的时期,微软开始和SGI合作,试图将 OpenGL并入DirectX中,建立一个可运行于Windows之内和之外的通用API,这就是当时的“Fahrenheit”计划。

但合作并没有顺利开展,由于微软和SGI都期望自己的API能在计划中占据主流,两者间的矛盾始终不能调和,计划最终不了了之。

1998年,SGI遭遇财务危机,微软的战略原因以及普遍缺乏行业支持,没过多久OpenGL就被“雪藏”,微软的DirectX成为了行业主流。

直到2006年, OpenGL体系结构审查委员会投票通过将OpenGL API标准的控制权转让给Khronos集团,这个强大的API又回来了。

重新回归,与时俱进

不得不说,OpenGL是充满活力的,且对软件开发者特别友好,重新回归之后,迅速发展成适应当下需求的API。

在OpenGL兴起的早期,像Recality Engine 2这种最高端的SGI系统售价80000美元,每秒可以渲染200000个带纹理的三角形,或者每帧消染3333个三角形,频率为60 Hz,所需时间、精力消耗较大,而且很费钱。

如今,经过几十年的发展,OpenGL越来越健全和成熟,可以运行的高端GPU成本大约为1000美元,在关于GPU产品的基本描述中甚至不会再出现每秒渲染三角形数量的信息,但是这个数字已超过60亿。

opengl图解,opengl三个基本操作(2)

2012年8月7日, Khronos Group组织也公布了桌面版OpenGL的最新版本4.3,也算是给这个3D API二十岁生日的最好礼物。先后历经二十年的发展,衍生了四个世代,功能日渐强大,普及范围也是越来越广。虽然它没有微软DirectX在游戏中那么风光,但也在专业图形等领域成为众多开发者的首选,而且陆续衍生了OpenGL ES、OpenCL、WebGL等一帮同门师兄弟,生态系统日臻完善。

与语言无关,与平台无关,OpenGL的专注于渲染,而不提供输入、音频以及窗口相关的API,这份简单纯粹,也令人着迷。

为了方便大家更加深入的认识、了解、学习OpenGL,给大家推荐一本好书《OpenGL超级宝典》(第7版)。

参考资料:

https://en.wikipedia.org/wiki/OpenGL

图书推荐

opengl图解,opengl三个基本操作(3)

OpenGL超级宝典(第7版)

作者:[美]格雷厄姆•塞勒斯(Graham Sellers)[美]小理查德赖特(Richard S.Wright,Jr)[美]尼古拉斯海梅尔(Nicholas Haemel)

翻译:颜松柏 薛 陶 张林苹

OpenGL超级宝典(第7版)

作者:[美]格雷厄姆·塞勒斯(Graham Sellers)

当当

内容简介:

本书是 OpenGL及3D图形编程的经典入门指南,涵盖了使用 OpenGL进行编程所需要的主要知识。

本书内容分3部分。第一部分介绍经典 OpenGL绘图的基础知识,涉及管线、数学知识、数据、着色器和程序等;第二部分着重介绍 OpenGL的一些高级功能,涉及顶点处理与绘图命令、基元处理片段处理与帧缓冲、计算着色器、高级数据管理、管线监控等:第三部分介绍些实战技巧,涉及消染技巧、高性能的 OpenGL、调试和稳定性等。

本书适合希望系统学习 OpenGL的读者阅读,经验丰富的 OPENGL程序员也能从中获益。本书既可以作为学习 OpenGL的教材,也可以作为随时查阅的参考手。

栏目热文

opengl工具(opengl学习网站)

opengl工具(opengl学习网站)

GL StudioGL Studio是美国DiSTI公司的旗舰产品,它是一个独立平台的快速原型工具,用来创建实时的、照片...

2022-10-25 10:26:32查看全文 >>

opengl使用说明书(opengl学习教程)

opengl使用说明书(opengl学习教程)

OpenGL是业界使用最广泛的2D和3D图形API,将成千上万的应用程序带到各种计算机平台上。它与窗口系统和操作系统无关...

2022-10-25 10:22:29查看全文 >>

opengl入门学习(opengl学习可以掌握哪些技术)

opengl入门学习(opengl学习可以掌握哪些技术)

作者:灵魂奏响曲博客:https://www.jianshu.com/p/21f4d6ee6863这是在Android中...

2022-10-25 10:22:35查看全文 >>

opengl使用手册(opengl学习教程)

opengl使用手册(opengl学习教程)

作者 | 天元浪子来源 | CSDN博文精选【编者按】OpenGL(开放式图形库),用于渲染 2D、3D 矢量图形的跨语...

2022-10-25 10:40:20查看全文 >>

2022年达飞兑付能完成吗(达飞云贷不还5年了)

2022年达飞兑付能完成吗(达飞云贷不还5年了)

拿着结清证明都没用,因为助贷平台和资金方没有协商一致,导致借款人被再次催收、上逾期名单,甚至被起诉。这样的事情就发生在达...

2022-10-25 10:30:25查看全文 >>

opengl自学看什么(opengl适合什么人学)

opengl自学看什么(opengl适合什么人学)

图形编程是计算机科学中最具挑战性的主题之一,并因此而闻名。当今,图形编程是基于着色器的——也就是说,有些程序是用诸如C ...

2022-10-25 10:27:15查看全文 >>

opengl学习(opengl学习入门篇)

opengl学习(opengl学习入门篇)

如果想系统的学习OpenGL(ES),最好能先通读一遍红宝书,如上图所示,其中讲的非常系统,对学习OpenGL绝对大有裨...

2022-10-25 09:57:11查看全文 >>

如何使用opengl(opengl基础教程)

如何使用opengl(opengl基础教程)

一、Opengl ES简介  Opengl是一种跨平台的编程语言。可以对图形硬件设备访问的软件库,显卡基本都支持Open...

2022-10-25 10:17:45查看全文 >>

opengl编写教程(opengl使用步骤)

opengl编写教程(opengl使用步骤)

在开始这段旅程之前我们先了解一下OpenGL到底是什么。一般它被认为是一个API(Application Program...

2022-10-25 10:42:49查看全文 >>

opengl开发软件(opengl软件下载)

opengl开发软件(opengl软件下载)

OpenGL开发通常需要两个库,一个用于新建窗口,初始化OpenGL Context,另一个是方便调用OpenGL AP...

2022-10-25 10:08:59查看全文 >>

文档排行