Aiglx学习总结

来源:互联网 发布:淘宝最低迷产品排行榜 编辑:程序博客网 时间:2024/05/21 22:51
                                                                Aiglx学习总结

Aiglx Accelerated Indirect GLX的缩写,它的主要功能是为了使基于X的客户应用程序能通过glx(X的一个扩展)完成3D的硬件加速。在一个窗口系统中,有两种方法可以让OpenGL的接口函数访问显卡设备:第一种(也是Aiglx所使用的方法)是通过glx协议把gl的命令传送给X Server,然后X Server会把该命令发送给显卡设备,让其完成相应的显示动作;第二种是让OpenGL函数接口直接给显卡设备发送命令。

由于aiglx使用的是间接访问的方式,因此我们下面就来说一下在aiglx架构下3D应用程序的流程。在说此之前不得不先介绍一下X Window MesaGLX

X Window linux下最流行的窗口系统,它采用客户/服务器模式。所有的资源(屏幕、字体、windowgc等)都由服务器来管理,客户端唯一所能做的就是请求服务器做某些操作,如画一条直线,创建窗口等。对X的客户/服务器模式的理解,可能大家都会有些迷惑,需要指出的是X的客户/服务器模式与网页的客户服务器模式有所不同,一般网页的显示会通过网页服务器(如apache)的解析,然后把内容发给客户机显示,然而,X的显示是在服务器机上进行的,为了更好的理解X的客户/服务器模式我们举个例子:

找两台装有linux的并且网络相联的机子,把其中一台当服务器,另一台当客户机,在服务器上启动X server(通过在终端输入X xinit startx), 然后运行xhost +客户机的ip地址, 然后再在客户机上运行export DISPLAY=服务器ip:0.0,最后在客户机上随便运行一个基于X的程序,你会发现它能在X server上显示出来。

X Window 主要分为3部分:客户端、协议和服务器。所有基于X的程序都可以看成是一个客户端,该程序可以看成是命令集,这些命令通过协议发送到服务器,服务器根据协议定义的格式解析这些命令,然后按照命令去执行相应的操作。

由于X Core已经远远不能满足需求,所以需要通过扩展来完成一些特殊的功能,如GLX就是X Window的一个扩展,它的主要功能是将OpenGLX Window有效的结合在一起,OpenGL 的接口函数可以通过GLX协议发送到X ServerX Server再解析执行。

Mesa OpenGL标准的一种实现,OpenGL标准接口的实现是相当复杂的,我们就不去讨论具体函数的实现了。但是我们应该知道,Mesa用软件实现了OpenGL标准接口,并且还可以使用硬件加速实现OpenGL标准接口(通过调用3D驱动实现,按我的理解,3D驱动是DRI的一部分)。 GLXServer会调用Mesa 来满足Client的请求。

GLXX WindowOpenGL的扩展,它的主要功能是为X窗口系统实现3D效果,当然,3D效果的真正实现并不是由GLX来实现的,而是由MESA实现的,GLX就是为X WindowMESA起到了桥梁的作用。

总上所述,Aiglx就是一种X窗口系统上实现3D特效的架构,它采用扩展的方式使用最小的改动来实现具有硬件加速的3D效果,它的结构图如下:

原创粉丝点击