Qt/C++ 发表于 2017-6-12 21:44:09

OpenVG EGL GLX WGL AGL嵌入式OpenGL ES Android 2D/3D图形API显卡加速

OpenVG EGL GLX WGL AGL嵌入式OpenGL ES Android 2D/3D图形API显卡加速
X 视窗系统 (X Window System) 是一个分布式、网络透明、设备独立、多任务的 windowing 窗口化制图系统。
X Window System 可提供标准工具箱和协议,构建 GUI 图形用户界面。Unix 系统、类 Unix 系统及 OpenVMS,几乎所有现代操作系统都支持 X Window System。X Window System 为 GUI 图形用户界面环境,提供了基本架构:绘制和移动屏幕上的视窗,及与鼠标 "和/或" 键盘交互。
X server 可提供 X 服务,X server 不是指某台机器,而是指一个进程。X server 负责接受客户要求,在屏幕上显示客户请求图形,并把键盘、鼠标、窗口消息通知 X client 客户程序。X client 是 X 应用终端。
OpenVG
OpenVG 是针对诸如 Flash 和 SVG 矢量图形的算法库,提供底层硬件加速界面的免授权费、跨平台的 API。
OpenVG 仍处于发展阶段,其初始目标主要面向需要高质量矢量图形算法加速技术的便携手持设备,用以在小屏幕设备上实现动人心弦的用户界面和文本显示效果,并支持硬件加速,以在极低的处理器功率级别下实现流畅的交互性能。
OpenGL
OpenGL 是 IT 行业领域中,最为广泛使用 2D/3D 图形 API。从 OpenGL 诞生至今,已催生出了各种计算机平台及设备上的数千款优秀应用。既然 OpenGL 是 API,那各家就有不同实现,在性能方面也各有差异。
OpenGL 独立于 Window System 视窗系统或其它操作系统,OpenGL 也是网络透明的。OpenGL 可帮程序员实现 PC、工作站、超级计算机等硬件设备上的高性能、极具冲击力的高视觉表现力图形处理软件的开发。
百度网盘https://pan.baidu.com/s/1jIzOgzs

软件仓库
https://github.com/digitser
https://digitser.sourceforge.io/https://pan.baidu.com/s/1dGxcM7R
高效 Python Qt/C++ HTML5 编程 静态网站站群 GUI文档翻译 "数字 IDE 专业版"http://dts.digitser.cn/zh-CN/ide/idepro/index.htmlhttp://forum.digitser.cn/thread-2184-1-1.html
OpenGL ES
OpenGL ES 是 OpenGL 的子集、可应用于 ES 上。 OpenGL ES 是免授权费,跨平台,功能完善的 2D/3D 图形应用程序 API。OpenGL ES 是针对多种嵌入式系统,专门设计的。
OpenGL ES 由精心定义的桌面 OpenGL 子集组成,其创建了软件与图形加速间灵活强大的底层交互接口。OpenGL ES 包括:浮点运算、定点运算系统描述及 EGL,针对便携设备的本地视窗系统规范。
OpenGL ES 1.X 是面向功能固定硬件,设计并提供加速支持、图形质量及性能标准。OpenGL ES 2.X 则提供包括遮盖器技术在内的,全可编程 3D 图形算法。
EGL
EGL 是 OpenGL ES 在嵌入式平台上 WGL、GLX、AGL 的等价物。EGL 标准是 C 的,在 Android 系统 Java 层封装了相关 API。
OpenGL 是一个操作 GPU 的 API,它通过驱动向 GPU 发送相关指令,控制图形渲染管线状态机运行状态。但 OpenGL 需要与本地视窗系统进行交互,这就需要一个中间控制层,最好与平台无关。因此 EGL 被独立设计出来,作为 OpenGL ES 和本地窗口的桥梁。
EGL 假设 OS 会提供窗口系统,但 EGL 与平台无关,并不局限于任何特定窗口系统,所有用到本地窗口系统的地方都用屏蔽指针来处理。因此,这也是 EGL 易于移植的关键。
EGL 是 OpenGL ES (嵌入式) 和底层 Native 平台视窗系统之间的接口。EGL API 是独立于 OpenGL ES 各版本标准的独立 API ,其主要作用是为 OpenGL 指令创建 Context 、绘制目标 Surface 、配置 Framebuffer 属性、Swap 提交绘制结果等。
此外,EGL 还为 GPU 厂商和 OS 窗口系统之间提供了一个标准配置接口。一般来说,OpenGL ES 图形管线的状态被存储于 EGL 管理的一个 Context 中。而 Frame Buffers 和其他绘制 Surfaces 通过 EGL API 进行创建、管理和销毁。 EGL 同时也控制和提供了对设备显示和可能的设备渲染配置的访问。
GLXGLX 是 OpenGL Extension to the X Window System 的缩写,用于Linux 系统。
GLX 作为 x 的扩展,是 x 协议和 X server 的一部分,已包含在 X server 代码中。GLX 提供了 X window system 使用的 OpenGL 接口,允许通过 X 调用 OpenGL 库。
OpenGL 在使用时,需要与一个实际窗口系统关联起来。在不同平台上有不同的机制关联窗口系统,在 MicroSoft Windows 上是 WGL,在 Linux 上是 GLX,在 Apple OS 上是AGL 等。
Mesa 3D
Mesa 3D 是 OpenGL 的一个开源版本实现。
Mesa 3D 支持 3D 硬件加速,X.Org 和 DRI 都使用它作为 OpenGL 驱动。
DRI
DRI 是 Direct Rendering Infrastructure 的缩写。DRI 的主要目的,是提供高效 OpenGL 支持。
DRI 是一个安全且有效率的,直接对显示硬件存取的方法。它包含对 X server、client 函数库、及内核的变更。
XGLXGL 项目由 Novell 发起,是一个 X server 架构。XGL 设计意图在于通过 OpenGL 驱动,充分发挥最新显卡的功能,支持所有 X、OpenGL 和 XVideo 硬件加速。
XGL 项目最初于 2006 年1 月在 X.org 中发布,随后由于 AIGLX 的出现,在 2008 年 1 月被 X.org 抛弃。XGL 可使用 XGLx 和 xEGL 作为后台的 server。作为其衍生品,compiz 和 XGL 是完全兼容的。
AIGLX
AIGLX 是 Accelerated Indirect GLX 的缩写。AIGLX 项目由 Red Hat 和 Fedora 社区发起。
Indirect 的含义:client 端应用程序的 OpenGL 命令,会首先发送给 X server,再通过 X server 调用显卡驱动层 OpenGL 接口,这里 X 协议走的是 GLX。
XGL 则是另外一种方式:建立一个 OpenGL 窗口,由 OpenGL 库直接调用显卡驱动。X.Org 7.1 开始,已加入了 AIGLX。
XGLx
XGLx 是 XGL 框架的一个后台 server,但仍需一个现有 x server,XGLx 通过 X server 的 GLX 创建 OpenGL 窗口,然后使用此窗口,类似于 Xnest;
同时,XGLx 还对 X server 做一些使用 OpenGL 显示和绘图的初始化操作。尽管使用另外一个 X server 显得多余,XGLx 却避免了和不同图形硬件直接打交道。
xEGLxEGL 是 XGL 框架的另一个后台 server,继承了 XGLx 中绘图相关代码。
xEGL 对 OpenGL 环境的初始化部分,调用的是 EGL 接口,而非 XGLx 使用的 GLX。
由于一些硬件的闭源驱动,不提供支持 EGL 的接口,xEGL 的开发有些停滞。
http://forum.digitser.cn/data/attachment/forum/201605/19/132155fevczeyds5e5y1wy.jpg
"长按二维码" 或 "扫一扫" 关注 "德云社区" 微信公众号
版权声明:
本文为独家原创稿件,版权归 德云社区,未经许可不得转载;否则,将追究其法律责任。

页: [1]
查看完整版本: OpenVG EGL GLX WGL AGL嵌入式OpenGL ES Android 2D/3D图形API显卡加速