OpenGL(英语:Open Graphics Library,译名:开放图形库或者“开放式图形库”)是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口(API)。这个接口由近350个不同的函数调用组成,用来从简单的图形比特绘制复杂的三维景象。而另一种程序接口系统是仅用于Microsoft Windows上的Direct3D。OpenGL常用于CAD、虚拟实境、科学可视化程序和电子游戏开发

OpenGL的高效实现(利用了图形加速硬件)存在于Windows,部分UNIX平台和Mac OS。这些实现一般由显示设备厂商提供,而且非常依赖于该厂商提供的硬件。开放源代码库Mesa是一个纯基于软件的图形API,它的代码兼容于OpenGL。但是,由于许可证的原因,它只声称是一个“非常相似”的API。OpenGL规范由1992年成立的OpenGL架构评审委员会(ARB)维护。ARB由一些对创建一个统一的、普遍可用的API特别感兴趣的公司组成。根据OpenGL官方网站,2002年6月的ARB投票成员包括3Dlabs、Apple Computer、ATI Technologies、Dell Computer、Evans & Sutherland、Hewlett-Packard、IBM、Intel、Matrox、NVIDIA、SGI和Sun Microsystems,Microsoft曾是创立成员之一,但已于2003年3月退出。OpenGL规范描述了绘制2D和3D图形的抽象API。尽管这些API可以完全通过软件实现,但它是为大部分或者全部使用硬件加速而设计的。OpenGL的API定义了若干可被客户端程序调用的函数,以及一些具名整型常数(例如,常数GL_TEXTURE_2D对应的十进制整数为3553)。虽然这些函数的定义表面上类似于C编程语言,但它们是语言独立的。因此,OpenGL有许多语言绑定,值得一提的包括:JavaScript绑定的WebGL(基于OpenGL ES 2.0在Web浏览器中的进行3D渲染的API);C绑定的WGL、GLX和CGL;iOS提供的C绑定;Android提供的Java和C绑定。OpenGL不仅语言无关,而且平台无关。规范只字未提获得和管理OpenGL上下文相关的内容,而是将这些作为细节交给底层的窗口系统。出于同样的原因,OpenGL纯粹专注于渲染,而不提供输入、音频以及窗口相关的API。OpenGL是一个不断进化的API。新版OpenGL规范会定期由Khronos Group发布,新版本通过扩展API来支持各种新功能。每个版本的细节由Khronos Group的成员一致决定,包括显卡厂商、操作系统设计人员以及类似Mozilla和谷歌的一般性技术公司。除了核心API要求的功能之外,GPU供应商可以通过扩展的形式提供额外功能。扩展可能会引入新功能和新常数,并且可能放松或取消现有的OpenGL函数的限制。然后一个扩展就分成两部分发布:包含扩展函数原型的头文件和作为厂商的设备驱动。供应商使用扩展公开自定义的API而无需获得其他供应商或Khronos Group的支持,这大大增加了OpenGL的灵活性。OpenGL Registry负责所有扩展的收集和定义。每个扩展都与一个简短的标识符关系,该标识符基于开发公司的名称。例如,英伟达(nVidia)的标识符是NV。如果多个供应商同意使用相同的API来实现相同的功能,那么就用EXT标志符。这种情况更进一步,Khronos Group的架构评审委员(Architecture Review Board,ARB)可能“祝福”该扩展,那么这就被称为一个“标准扩展”,标识符使用ARB。第一个ARB扩展是GL_ARB_multitexture。OpenGL每个新版本中引入的功能,特别是ARB和EXT类型的扩展,通常由数个被广泛实现的扩展功能组合而成。

图形处理之 OpenGL相关推荐

  1. ANDROID 高性能图形处理 之 OPENGL ES

    原文:http://tangzm.com/blog/?p=20 在之前的介绍中我们说到在Android 4.2上使用RenderScript有诸多限制,我们于是尝试改用OpenGL ES 2.0来实现 ...

  2. iPhone 应用开发:音频播放

    在 iPhone 应用或者是游戏的开发过程中,对声音的支持是必不可少的.没有音效的软件是残缺的,用户体验也会大打折扣,下面是自己对iPhone音频的一点总结. iPhone OS 音频分类: (1)H ...

  3. 树莓派okdo_创客的AK47—树莓派4正式发布,性能大幅提升,售价仅为35美元。

    树莓派(英语:Raspberry Pi),是一款基于Linux的单片机计算机.它由英国的树莓派基金会开发,目的是以低价硬件及自由软件促进学校的基本计算机科学教育.该基金会于2016年2月发布了树莓派3 ...

  4. iOS 播放音频的几种方法

    Phone OS 主要提供以下了几种播放音频的方法: System Sound Services AVAudioPlayer 类 Audio Queue Services OpenAL 1. Syst ...

  5. CSDN日报20170312——《成功人士的七个习惯》

    [程序人生]成功人士的七个习惯 作者:liumiaocn 所谓温故而知新,重读往往会带来新的收获,即使没有新的收获,能够带来新的思考也是非常不错.在个人成长的历程中,习惯所扮演的角色不言而喻,Step ...

  6. iOS图像显示原理与优化你都不知道?不是吧,不是吧

    站在巨人的肩膀上,总结原理实现与优化及卡顿监测,一气呵成,气脉通畅,还要啥自行车huaixiao 图像图形渲染原理 图形渲染主要是利用GPU并行运算能力,实现图形渲染并显示在屏幕的每一个像素上.渲染过 ...

  7. iPhone音频基础

    原文:http://www.raywenderlich.com/zh-hans/20608 前提:每个音频文件有两部分:1是文件格式(也叫音频容器),2是数据格式(也叫音频编码). 数据格式(或者是音 ...

  8. ios系统html播放音频播放器,iOS音频播放之AVAudioPlayer,AVPlayer,AVQueuePlayer

    本文以婚语APP为例,来讲解集体使用方法. 在婚语APP中,分别使用了AVAudioPlayer,AVPlayer,AVQueuePlayer来实现音频播放功能,下面以婚语的实际需求分别介绍它们的使用 ...

  9. iOS开发之音频播放AVAudioPlayer 类的介绍

    主要提供以下了几种播放音频的方法: 1. System Sound Services System Sound Services是最底层也是最简单的声音播放服务,调用 AudioServicesPla ...

最新文章

  1. Go 分布式学习利器(16) -- go中可复用的package构建
  2. Android 点击跳转到蓝牙设置界面
  3. Django 学习资源
  4. Kafka 集群数据备份 MirrorMaker 详解
  5. 这可能是现实版程序员!
  6. 详解rel=”nofollow”的用法与意义
  7. php对象的表示方法,PHP对象相关知识总结
  8. Windows 7安全指南
  9. 【ArcGIS|空间分析】数据采集处理(全国大学生GIS技能大赛试题)
  10. 【MPI0】学习资料搜集
  11. 2021 年“认证杯”网络挑战赛 B 题(第二阶段)
  12. 【实验技术笔记】细胞表型检测之细胞周期(PI 染色)
  13. C# vb .net实现相机视图效果滤镜
  14. 循序渐进Linux目录
  15. 每个开发人员都应该学习的5种编程语言(上)
  16. LATEX 幻灯片入门
  17. 【高德地图进阶】--- 添加城市版块纹理
  18. 教你从零开始成为优秀交互设计师(四):工具资源
  19. RedHat Linux 9.0系统的安装(图文并茂) 下载地址在最后面
  20. delphi+python混合编程

热门文章

  1. 脑电数据分析方法与应用实例简介-EEG Processing and Feature 1
  2. Deepfakes教程及各个换脸软件下载
  3. 【php】注册系统和使用Xajax即时验证用户名是否被占用
  4. 【实验总结1】在LCD1602液晶显示屏上显示字符、数字、流动字幕等
  5. JAVA--GUI:MenuBar组件
  6. 软件测试常规测试方法有哪些?
  7. android switch 未定义,源生Switch控件在Android4.4无法显示?
  8. map容器/multimap容器
  9. gta5结局杀老崔我哭了_gta5大结局:你选谁死?杀老崔和三人行吵起来了,其实r星多作怪...
  10. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 5 Octave Tutorial