OpenGL、OpenGL ES、OpenVG、GLX、EGL扫盲帖

讨论openbox,awesome,FVWM等WM
回复
头像
Loop.wu
帖子: 102
注册时间: 2011-03-28 11:04
来自: 我躲着,你来找
送出感谢: 0
接收感谢: 0
联系:

OpenGL、OpenGL ES、OpenVG、GLX、EGL扫盲帖

#1

帖子 Loop.wu » 2011-04-21 10:08

【本文为OurUnix--Linux's境原创,转载请注明源地址www.ourunix.org

今天研究了一些和图形处理相关的技术,其中遇到了一些让人费解的缩写,晚上我抽空整理了如下,希望对大家有点帮助。

(1)OpenGL、OpenGL ES、OpenVG:
OpenGL是行业领域中最为广泛接纳的2D/3D图形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支持。详细:http://www.linuxgraphics.cn/xwindow/dri_intro.html
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的开发有些停滞。

更多与图形处理/加速相关的请参看源网站
上次由 Loop.wu 在 2011-04-22 11:31,总共编辑 1 次。
achen.han
帖子: 442
注册时间: 2010-09-08 23:33
送出感谢: 0
接收感谢: 1 次

Re: OpenGL、OpenGL ES、OpenVG、GLX、EGL扫盲帖

#2

帖子 achen.han » 2011-04-21 20:41

学习了
长头发的和尚
论坛版主
帖子: 12127
注册时间: 2008-01-11 17:02
送出感谢: 0
接收感谢: 4 次

Re: OpenGL、OpenGL ES、OpenVG、GLX、EGL扫盲帖

#3

帖子 长头发的和尚 » 2011-05-08 23:07

achen.han 写了:学习了
你往幸福的方向挥挥手,从此我便追随你永不回头。
回复

回到 “窗口管理器”