感谢支持
我们一直在努力

初探Mobile Linux上GL/ES等 3D APP与XServer的关系

转自:software.intel.com


众所周知,Mobile Linux上的3D APP是基于OpenGL,或者OpenGL ES,后者是前者面向嵌入式设备的一个简化版本。目前基于是OpenGL/ES上的一个图形封装类库Clutter也渐渐为人们所熟知。这些都是众所周知的废话,下面想探讨的是基于OPENGL/ES等 3D APP与Linux原来的面向2D的X Server是什么关系?


当然不是吃饱了撑着平白无故想这个问题,对这个问题的疑惑来自于Moblin平台上的Clutter Destop上一个GTK程序调用gtk_widget_show时的CoreDump问题,该GTK程序在Gnome Destop下运行正常。于是想,是不是3D的UI仍然依赖于XServer?


想深一层:Linux原有的XServer系统会接管屏幕的各种输入事件,例如,键盘、鼠标、触摸屏,其配置放在Xorg.conf中。这一点从Xerver的原理图及维基百科上对Xserver的描述可以了解到。an X server communicates with various client programs. The server accepts requests for graphical output (windows) and sends back user input (from keyboard, mouse, or touchscreen). 如果3D的应用不挂在XServer上,用户的输入事件如何到达应用?


初探Mobile Linux上GL/ES等 3D APP与XServer的关系

在网上查找资料的时候发现了台湾黄敬群大牛的讲解的PPT《支援硬体加速的OPENGL/ES实做》,该大牛不愧为敬业乐群的好名字,技术精湛,乐于分享,读后深有启发。


GLX (OpenGL Extension to the X Window System)为X Windows System提供Open GL的扩展。因此3D的APP不是抛离X Server,而是与之共存。下图是敬群大牛PPT中GLX的图。


初探Mobile Linux上GL/ES等 3D APP与XServer的关系

GLX包含了下面的内容:


1、X Window System application中的OpenGL API扩展


2、X 协议的扩展, 上图中的除了原有的Xpackets,新扩展一种GLX Packets。使客户端(the OpenGL application)发送 3D 渲染命令给 X server (the software responsible for the display)。 我的理解是,原有的X 协议不变基础上添加新的GLX扩展,因此,原有的用户事件输入处理流程是不变的。


3、X server的功能扩展,使之可以接收渲染命令。 (如果无硬件加速的OpenGL类库则使用 Mesa 类库)。


如果X Window System application和X server运行在同一台机器上,并且3D加速的图形卡及驱动能够支持,可以使用DRI(Direct Rendering Infrastructure)直接访问图形硬件设备。


直接的3D图形渲染和间接的3D图形渲染。如下图所示:


初探Mobile Linux上GL/ES等 3D APP与XServer的关系

赞(0) 打赏
转载请注明出处:服务器评测 » 初探Mobile Linux上GL/ES等 3D APP与XServer的关系
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏