【wiki】OpenGL

转载 2011年03月19日 15:28:00

 

 

OpenGL(全寫Open Graphics Library)是個定義了一個跨程式語言、跨平台编程接口(Application programming interface)的規格,它用於生成二維三維圖像。這個接口由近三百五十個不同的函數调用組成,用來從簡單的图元繪製複雜的三維景象。而另一种编程接口系统是仅用于Microsoft Windows上的Direct3D。OpenGL常用於CAD虛擬實境、科學視覺化程式和電子遊戲開發

OpenGL的高效實現(利用了图形加速硬件)存在于Windows,很多UNIX平台和MacOS。這些實現一般由顯示裝置廠商提供,而且非常依賴於該廠商提供的硬體。開放原始碼函式庫Mesa是一個純基於軟體的圖形API,它的代码兼容於OpenGL。但是,由于许可证的原因,它只声称是一个“非常相似”的API。

OpenGL规范由1992年成立的OpenGL架构评审委员会(ARB)维护。ARB由一些特别兴趣于建立一个统一的普遍可用的API的公司组成。根据OpenGL官方网站,2002年6月的ARB投票成员包括3DlabsApple ComputerATI TechnologiesDell ComputerEvans & SutherlandHewlett-PackardIBMIntelMatroxNVIDIASGISun MicrosystemsMicrosoft曾是创立成员之一,但已于2003年3月退出)。

目录

[隐藏]

[编辑] 扩展

当独立厂商建立一种新技术时,OpenGL标准允许它们通过“扩展”的方法提供所扩展的功能。然后一个扩展就分成两部分发布:包含扩展函数原型的头文件和作为厂商的设备驱动。每个厂商有一个用于命名它们的新函数和常量的字母缩写。例如,NVIDIA的缩写(“NV”)用于定义它们的专有函数“glCombinerParameterfvNV()”和它们的常量“GL_NORMAL_MAP_NV”。如果多于一个厂商同意实现相同的扩展功能,那么就用缩写“EXT”。进一步,架构评审委员会可能“祝福”这个扩展,那么这就被称为一个“标准扩展”,使用缩写“ARB”。第一个ARB扩展是GL_ARB_multitexture。根据官方扩展提升路径,多纹理不再是可选实现的ARB扩展,它已经是OpenGL 1.4以后的核心API的一部分。

几个库建立在OpenGL之上,提供了OpenGL本身没有的功能:

特别是,OpenGL Performer库——由SGI开发并可以在IRIXLinuxMicrosoft Windows的一些版本上使用,构建于OpenGL,可以建立实时可视化仿真程序。

当开发者需要使用最新的OpenGL扩展时,他们往往需要使用GLEW或者是GLEE库提供的功能,可以在程序的运行期判断当前硬件是否支持相关的扩展,防止程序崩溃甚至造成硬件损坏。

[编辑] 绑定

为了加强它的多语言和多平台特性,已经用很多语言开发了OpenGL的各种绑定和移植。最值得注意的是,Java3D库已经可以利用OpenGL(另一个选择可能是DirectX)作为它的硬件加速了。OpenGL官方网页[1] 列出了用于JavaFortran 90PerlPikePythonAdaVisual Basic的多个绑定。

[编辑] 高级功能

OpenGL被設計為只有輸出的,所以它只提供渲染功能。核心API没有窗口系统、音频、打印、键盘/鼠标或其他输入设备的概念。雖然这一开始看起来像是一种限制,但它允许进行渲染的代码完全独立于他运行的操作系统,允許跨平台開發。然而,有些整合于原生窗口系统的东西需要允许和宿主系统交互。这通过下列附加API實現:

另外,GLUT库能够以可移植的方式提供基本的窗口功能。

[编辑] 历史

OpenGL进化自(而且风格很相似)SGI的早期3D接口IRIS GL。IRIS GL的一个限制是它只能访问底层硬件提供的特性。如果图形硬件不支持例如纹理映射这样的功能,那么应用程序就不能使用它。OpenGL通过在软件上对硬件不支持的特性提供支持的方法克服了这个问题,允许应用程序在相对低配置的系统上使用高级的图形特性。Fahrenheit项目是Microsoft和SGI之间的联合行动,为了统一OpenGL和Direct3D接口的目的。它一开始提出了一些把规则带给交互3D计算机图形API世界的承诺,但因为SGI的财政限制,这个项目后来被放弃了。

2002年微軟的DirectX 9提出了全新的Shader繪圖功能以及高階著色語言 (HLSL),OpenGL霸主地位開始被瓦解。這使得3DLabs了解到必須開發全新的OpenGL 2.0版本,但僅加入支援GLSL的功能。2006年Khronos接手OpenGL,立刻著手發展Longs Peak與Mount Evans。2008年推出OpenGL 3,但評價普遍不高。

2010年3月10日, OpenGL同時推出了3.3和4.0版本,同年7月26日又发布了4.1版本。

[编辑] 參見

[编辑] 外部链接

【LWJGL2 WIKI】【现代OpenGL篇】用投影、视图、模型矩阵画方形

原文:http://wiki.lwjgl.org/wiki/The_Quad_with_Projection,_View_and_Model_matricesIntroduction 介绍在OpenG...

【LWJGL2 WIKI】【现代OpenGL篇】用纹理画方形

原文:http://wiki.lwjgl.org/wiki/The_Quad_texturedIntroduction 介绍本教程将讲怎样对模型贴纹理,其他方形的部分就和之前教程中讲的差不多。后面可以...

【LWJGL2 WIKI】【现代OpenGL篇】版本选择

原文:http://wiki.lwjgl.org/wiki/Version_selectionIntroduction 介绍OpenGL有许多版本可以用。写教程的时候,最新版是4.2,开发期间决定逐渐...

【LWJGL2 WIKI】【现代OpenGL篇】用DrawArrays画方形

原文:http://wiki.lwjgl.org/wiki/The_Quad_with_DrawArraysIntroduction 介绍随着3.0发布,“弃用”机制被引入。所有被标记为弃用的函数,在...

【LWJGL2 WIKI】【现代OpenGL篇】画颜色方形

原文:http://wiki.lwjgl.org/wiki/The_Quad_coloredIntroduction 介绍本教程介绍颜色。每个方形的角将被分配一个不同的颜色,为此我们必须使用shade...

【LWJGL2 WIKI】【现代OpenGL篇】用BufferSubData更新VBO方形

原文:http://wiki.lwjgl.org/wiki/The_Quad_updating_a_VBO_with_BufferSubDataIntroduction 介绍VBO一旦设置好,我们可以...

【LWJGL2 WIKI】【现代OpenGL篇】交叉数据画方形

原文:http://wiki.lwjgl.org/wiki/The_Quad_interleavedIntroduction 介绍我们之前把顶点数据分别存在不同的VBO之内。其实也可以交叉或混合保存数...

极客学院算法wiki

  • 2017年10月28日 21:14
  • 5.41MB
  • 下载

wiki colletion

  • 2015年03月09日 22:29
  • 50MB
  • 下载

Wiki 人工智能 深度学习 TensorFlow 下载与安装

下载与安装 你可以使用我们提供的 Pip, Docker, Virtualenv, Anaconda 或 源码编译的方法安装 TensorFlow. Pip 安装 列表 首先安...
  • hxa6475
  • hxa6475
  • 2017年07月02日 09:00
  • 129
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【wiki】OpenGL
举报原因:
原因补充:

(最多只允许输入30个字)