|
|
|
|
Clutter-释放 OpenGL 威力的新途径
作者:
Jim Huang (jserv)
日期:
2009-04-10
本文根据 jserv 在台南昆山科技大学的演讲稿整理而成,详细介绍了 Clutter 的背景、功能、设计思路、编程方法,是个难得的教程。
|
简介
作为一个概念性的介绍,该演讲探讨以 OpenGL 为基础、开发比较活跃的开放源
码函数库 clutter toolkit 的应用,包含 MID、NetBook、GPS/GND、Media
Center 等等。过去开发 OpenGL 应用程序时,往往专注于繁复的数学运算与模
型表示,而很难兼顾“物件”本身的行为表现,而 Clutter 独到之处,就是让开
发者得以快速构建场景 (stage)与物件 (Actor)的互动,进而开发具有科技质感
的使用界面。
OpenGL 可提供绚丽的 2D/3D 视觉呈现,但开发应用不容易;
Clutter 之于 OpenGL/GLX 犹如 GTK+ 之于 Xlib/X。
- 提供透过 OpenGL 的场景 (scenegraph)/画布(canvas)描绘的函数库;
- 采用 GNU LGPL 授权
- 使用既有的开放源码函数库: GObject(物件)+ Glib (数据结构/算法)+
GdkPixBuf(图形) + Pango(文字处理)
- 快速建立丰富的视觉体验
- 支持多个软硬件平台与图形系统
- 2D with 3D Effects
即:打造绚丽的特效时不再需要掌握复杂的数学运算。
Clultter 的预期应用场合
- Media box, Media Center
- Desktop Effects (iTunes' Coverflow, slideshow)
- Embedded UI (Microsoft Zune, iPhone, ...)
- Glib, GObject, Pango, ATK, GdkPixbuf, GDK, Cairo
- GTK+/GObject
- 使用 C 语言搭配 GObject 来实现丰富的物件导向;
- GTK+ 骨子里都是物件;
- 重点是“如何思考”,而非仅是“如何表达”;不受限于程序语言(原则);
- 在 C 语言中通过 struct 与 define/macro 实现;
- property 和 signal
Clutter 对于 2D/3D 的基本概念
- 全世界是一座舞台,所有的男人女人不过是演员;
- Stage/Actor
- transform
- 置于 3D 空间中
- 沿着三轴旋转
- Sized, Scaled, Opacity, Clipped.
- 层次结构 (parent-child)
- Animation:timelines, Behaviour, Alpha Function,Event
- 采用 Fixed-point运算,非浮点运算,对嵌入式系统非常有利;
- cogl 抽象 OpenGL 与 OpenGL/ES
深入阅读
强烈推荐阅读 jserv 的演讲 ppt。
Reference
- jserv blog 上的原文
- 演讲稿ppt下载
|
|