OpenGL、OpenGL ES、OpenVG、GLX、EGL的简介
X 视窗系统(X Window System)是一个分布式的、网络透明的、设备独立的、多任务的 windowing 和制图系统,它提供标准工具箱和协议来构建图形用户界面 (GUI), 在 Unix,类 Unix 系统和 OpenVMS-几乎所有的现代操作系统都支持它。
X 为 GUI 环境提供基本的架构:绘制和移动屏幕上的视窗和能与鼠标和/或键盘相交互。
xserver提供X服务,X server 不是指某台机器,而是指一个进程,它负责接受客户的要求,在屏幕上显示客户请求的图形,并且把消息(键盘,鼠标,窗口消息)通知客户程序。
xclient是X应用终端。
1、OpenGL、OpenGL ES、OpenVG:
OpenGL是行业领域中最为广泛接纳的2D/3D图形API, 其自诞生至今已催生了各种计算机平台及设备上的数千优秀应用程序。
(既然是API, 那就说明各家都有不同的实现,在性能方面会有差异)
OpenGL是独立于视窗操作系统或其它操作系统的,亦是网络透明的。OpenGL帮助程序员实现在 PC、工作站、超级计算机等硬件设备上的高性能、极具冲击力的高视觉表现力图形处理软件的开发。
OpenGL ES是免授权费的,跨平台的,功能完善的2D和3D图形应用程序接口API,它针对多种嵌入式系统专门设计。它由精心定义的桌面OpenGL子集组成,创造了软件与图形加速间灵活强大的底层交互接口。 OpenGL ES包含浮点运算和定点运算系统描述以及EGL,针对便携设备的本地视窗系统规范。
OpenGL ES 1.X 面向功能固定的硬件所设计并提供加速支持、图形质量及性能标准。
OpenGL ES 2.X 则提供包括遮盖器技术在内的全可编程3D图形算法。说白了,就是OpenGL的子集、可以应用于ES上。
OpenVG是针对诸如Flash和SVG的矢量图形算法库提供底层硬件加速界面的免授权费、跨平台应用程序接口API。
OpenVG现仍处于发展阶段,其初始目标主要面向需要高质量矢量图形算法加速技术的便携手持设备,用以在小屏幕设备上实现动人心弦的用户界面和文本显示效果,并支持硬件加速以在极低的处理器功率级别下实现流畅的交互性能。
2、GLX、EGL:
GLX是OpenGL Extension to the X Window System的缩写。它作为x的扩展,是x协议和X server的一部分,已经包含在X server的代码中了。GLX提供了x
window system使用的OpenGL接口,允许通过x调用OpenGL库。OpenGL 在使用时,需要与一个实际的窗口系统关联起来。
在不同平台上有不同的机制以关联窗口系统,在Windows上是WGL,在Linux上是GLX,在 Apple OS上是AGL等。
EGL则是OpenGL ES在嵌入式平台上(WGL,GLX,AGL)的等价物。EGL假设OS会提供窗口系统,但EGL与平台无关,并不局限于任何特定的窗口系统,所有用到本地窗口系统的地方都用屏蔽指针来处理。我觉得这就是它易于移植的关键。
3、其它:
Mesa 3D是OpenGL的一个开源本的实现,支持3D硬件加速,X.Org和DRI都使用它作为OpenGL驱动。
DRI是Direct Rendering Infrastructure的缩写。DRI是一个安全且有效率的直接对显示硬件存取的方法。它包含对X server,一些client函数库、以及对内核的变更。DRI的一个主要目的就是提供高效能的OpenGL支持。
XGL项目由Novell发起,是一个X server架构,其设计意图在于通过OpenGL驱动充分发挥最新显卡的功能,支持所有X、OpenGL和XVideo的硬件加速。该项
目最初于 2006年1月在X.Org中发布,但随后由于AIGLX的出现,在2008年1月被X.Org抛弃。Xgl可以使用Xglx和Xegl作为后台的 server。作为其衍生品,compiz和Xgl是完全兼容的。
AIGLX是Accelerated Indirect GLX的缩写。该项目由Red Hat和Fedora社区发起。此处Indirect的含义在于:client端应用程序的OpenGL命令首先送给X server,再通过X server调用显卡驱动层的OpenGL接口,这里X协议走的是GLX。Xgl则是另外一种方式:建立一个OpenGL窗口,由OpenGL库直接调用显卡驱动。X.Org 7.1开始,已经加入了AIGLX。
Xglx是Xgl框架的一个后台 server,但他仍然需要一个现有的 x server,Xglx通过x server的GLX创建OpenGL窗口,然后使用它,类似于Xnest;同时,Xglx还对x server做一些使用OpenGL显示和绘图的初始化操作。尽管使用另外一个x server显得多余,Xglx却避免了和不同的图形硬件直接打交道。
Xegl是Xgl框架的另一个后台server,继承了Xglx中绘图相关的代码,但它对OpenGL环境的初始化部分,调用的是EGL接口(而非Xglx使用的GLX)。由于一些硬件的闭源驱动不提供支持EGL的接口,Xegl的开发有些停滞。
OpenGL、OpenGL ES、OpenVG、GLX、EGL的简介相关推荐
- 关于openGL, openGL ES, openVG及android中2D调用关系的报告
关于openGL, openGL ES, openVG及android中2D调用关系的报告 http://blog.chinaunix.net/u3/99423/showart_2203591.htm ...
- QuantitativeFinance:量化金融之金融时间序列分析之ES/ETS/GARCH模型的简介、Box-Jenkins方法-AR/MA/ARMA/ARIMA模型的简介及其建模四大步骤之详细攻略
QuantitativeFinance:量化金融之金融时间序列分析之ES/ETS/GARCH模型的简介.Box-Jenkins方法-AR/MA/ARMA/ARIMA模型的简介及其建模四大步骤之详细攻略 ...
- OpenGL/OpenGL ES入门:渲染YUV数据实践
纹理:GPU中的一块数据结构,YUV数据先经过采样,转成rgb显示. 着色器代码,先通过compile编译成GPU能识别的机器语言,再交由GPU进行显示. shader着色器,texture纹理,Ut ...
- 基于ffmpeg+opengl+opensl es的android视频播放器
最近做了一个android视频播放器,在jni中采用c/c++现了播放器的播放,暂停,快进等基本的播放器功能. 使用开源库FFMpeg来解码,得到音视频数据,FFMPEG是一个功能强大的音视频解码,编 ...
- 小白的OpenGL整合环境入门(搭建以及简介)
目录 写在前面 第三方库简介 OpenGL发展历史及库的更替 OpenGL发展 库的分类 库所对应的版本 环境搭建 方法一:NuGet包管理 方法二:使用整合的环境 写在前面 本文的环境搭建适用于VS ...
- java opengl es_OPENGL ES 3.0编程指南
OPENGL ES 3.0编程指南 OPENGL ES 3.0编程指南\.gitignore, 215, 2017-05-03 __MACOSX __MACOSX\OPENGL ES 3.0编程指南 ...
- 20分钟让你了解OpenGL——OpenGL全流程详细解读
导语: 对于开发者来说,学习OpenGL或者其他图形API都不是一件容易的事情.即使是一些对OpenGL有一些经验的开发者,往往也未必对OpenGL有完整.全面的理解.市面上的OpenGL文章往往零碎 ...
- Hello OpenGL——OpenGL在Visual c++6.0安装和配置
1.下载并安装glut库 opengl的glut库 GLUT不是OpenGL所必须的,但它会给我们的学习带来一定的方便,推荐安装. Windows环境下的GLUT下载地址:(大小约为150k) h ...
- [OpenGL] opengl常见问题汇总
OpenGL程序运行提示glut32.dll丢失问题 http://blog.csdn.net/liufeng520/article/details/8064170 [OpenGL] 如何去掉open ...
最新文章
- 最年轻院士入职浙大,近两年浙大引进45位高层次人才~
- php gif裁剪,PHP实现图片裁剪与缩放的几种方法
- Java反编译Jar包和Android APK(类似.NET Reflector)
- lambda在python中的意思_Python中的lambda的简单介绍
- Felgo之初体验--安装与运行
- Windows CE的电源管理之三
- [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了
- 【学习笔记】第三章——内存 I(交换技术、进程七状态模型、动态分区分配、动态分区算法)
- php不常用,却很实用的6个字符串函数
- Appium python自动化测试系列之Capability介绍(五)
- Chrome 终究走上了 IE 6 的老路
- Apache无法加载PHP模块的解决方案
- 趣谈网络协议-数据中心
- Discuz! ML远程代码执行(CVE-2019-13956)
- c#样条曲线命令_C#绘制由点定义的贝塞尔样条曲线
- 测量平差个人知识总结
- ARouter路由简单使用以及源码解析
- aquarius数据库建模配置详解
- 什么是xmlhttp
- 软件测试 | 测试开发 | 探究 PHP_CodeSniffer 的代码静态分析原理