学习篇——纸上谈兵4:Linux的XServer续二:OpenGL和Clutter

来源:互联网 发布:通达信资金博弈源码 编辑:程序博客网 时间:2024/04/25 19:33

 在Moblin的文档中,对于XClient,支持使用GTK,QT,建议使用clutter(native clutter),而GTK和QT都是可选已经嵌入clutter。对于linux的图型界面还需要继续在网上共产主义中学习。下面是收集的资料。

十、OpenGL
  OpenGL(全写Open Graphics Library)是个定义了一个跨编程语言、跨平台的编程接口的规格,它用于生成二维、三维图象。这个接口由近三百五十个不同的函数调用组成,用来从简单的图元绘制复杂的三维景象。
  OpenGL的高效实现(利用了图形加速硬件)存在于Windows,很多UNIX平台和MacOS。这些实现一般由显示设备厂商提供,而且非常依赖于该厂商提供的硬件。开放源代码库Mesa是一个纯基于软件的图形API,它的代码兼容于OpenGL。但是,由于许可证的原因,它只声称是一个“非常相似”的API。
  OpenGL规范由1992年成立的OpenGL架构评审委员会(ARB)维护。ARB由一些特别兴趣于建立一个统一的普遍可用的API的公司组成。根据OpenGL官方网站,2002年6月的ARB投票成员包括3Dlabs、Apple Computer、ATI Technologies、Dell Computer、Evans & Sutherland、Hewlett-Packard、IBM、Intel、Matrox、NVIDIA、SGI和Sun Microsystems(Microsoft曾是创立成员之一,但已于2003年3月退出)。
  几个库建立在OpenGL之上,提供了OpenGL本身没有的功能:* GLU    * GLUT    * GLUI    * GLEW    * GLEE。特别是,OpenGL Performer库——由SGI开发并可以在IRIX、Linux和Microsoft Windows的一些版本上使用,构建于OpenGL,可以建立实时可视化仿真程序。当开发者需要使用最新的OpenGL扩展时,他们往往需要使用GLEW或者是GLEE库提供的功能,可以在程序的运行期判断当前硬件是否支持相关的扩展,防止程序崩溃甚至造成硬件损坏。
  为了加强它的多语言和多平台特性,已经用很多语言开发了OpenGL的各种绑定和移植。最值得注意的是,Java3D库已经可以利用OpenGL(另一个选择可能是DirectX)作为它的硬件加速了。OpenGL官方网页[1]列出了用于Java、Fortran 90、Perl、Pike、Python、Ada和Visual Basic的多个绑定。
  OpenGL被设计为只有输出的,所以它只提供渲染功能。核心API没有窗口系统、音频、打印、键盘/鼠标或其他输入设备的概念。虽然这一开始看起来像是一种限制,但它允许进行渲染的代码完全独立于他运行的操作系统,允许跨平台开发。然而,有些整合于原生窗口系统的东西需要允许和宿主系统交互。这通过下列附加API实现:GLX - X11(包括透明的网络),WGL - Microsoft Windows。另外,GLUT库能够以可移植的方式提供基本的窗口功能。
  OpenGL进化自(而且风格很相似)SGI的早期3D接口IRIS GL。IRIS GL的一个限制是它只能访问底层硬件提供的特性。如果图形硬件不支持例如纹理映射这样的功能,那么应用程序就不能使用它。OpenGL通过在软件上对硬件不支持的特性提供支持的方法克服了这个问题,允许应用程序在相对低配置的系统上使用高级的图形特性。

十一、Clutter
  Clutter是一个开源的支持硬件加速(支持OpenGL规范)的图形库,由OpenedHand公司所开发,后来被Intel收购。目前开发者正在积极开发当中,稳定版1.0就快发布了。
  Clutter与GTK+一样,基于GObject,并用Cairo图形绘制。所以可以很容易地嵌入至GTK+应用程序中,基本可以做到天衣无缝。
  GNOME 3中,将大量应用Clutter,创建出应用软件级别的3D应用,而非像Compiz这类在是整个桌面级别的。
  OpenGL作為工業的繪圖標準,獲得巨大的成功。以 OpenGL 為基礎、活躍開發的開放原始碼函式庫 -- Clutter toolkit 的應用,透過其精簡的 API,去開發具有科技質感的使用介面。

 

原文链接:http://flyingandflowing.spaces.live.com/blog/cns!7CE7F50A92172CE2!689.trak

有关Moblin的更内容,请访问:Moblin中文站

 

原创粉丝点击