做一些初級到點, 線,面的編程,比如, 遊戲特效, 就可以用到鼎鼎大名的opengl及其附屬庫:
OpenGL support libraries(from wikipedia)
- GLUT – The OpenGL utility toolkit.
- SDL – The Simple DirectMedia Layer.
- GLU – Some additional functions for OpenGL programs.
- GLee - The OpenGL Easy Extension library.
- GLEW – The OpenGL Extension Wrangler Library.
- GLUI - a GUI toolkit made with GLUT
- GLFW - a portable framework for OpenGL application development.
- Framebuffer Object - an off-screen rendering extension.
- GLM - C++ mathematics toolkit for OpenGL based on GLSL specification.
- SFML - Simple and Fast Multimedia Library.
- Glux - The OpenGL Utility & Auxiliary Library.
OpengGL只是定義了一組接口, 具體的實現一般由各顯卡廠商提供(Nvidia, ATI,...),也因此能更好的利用硬件的性能, 所以, 我們可以看到OpenGL-compatible這樣標註的顯卡。 這也從一個側面反應了opengl的底層性。僅以畫點, 線, 面來說,當性能要求高時, 應當考慮opengl。 一般的桌面應用Gtk應該夠了。
我注意到GNU Xaos(一個分形演示軟件)用的是libx11-dev來做圖形繪製, 那麼, libx11和gtk又有什麼聯繫?
拜讀了X Window System Architecture Overview HOWTO以後, 我才明白這之間的關係: X window System(X11, Xlib)提供最底層的圖形應用,Cairo構建於X System上, 而GTK又依賴於Cairo, Gtk又是Gnome的一部分.
回過頭來, Cairo和OpenGl都是比Gtk+更低層次的抽象, 但他們是同一層次的抽象嗎?Opengl和X window system 誰更底層?
這裏說:
"In the X Window System, OpenGL rendering is made available as an
extension to X in the formal X sense: connection and authentication are
accomplished with the normal X mechanisms"
也就是說, X system可以通過opengl來構建。 果然, Xgl就是一個構建於opengl驅動上的X server(wikipedia: Xgl is an X server architecture designed to take advantage of modern graphics cards via their OpenGL drivers, layered on top of OpenGL via glitz.). 原來opengl是驅動級別的啊。但X server也有其他實現, 不一定是基於opengl的,X.Org reference implementation是最常用的X server.
這篇文章<<X11,GTK,QT,GNOME的區別與聯繫>>也可以參考一下.
附:
GNOME/KDE是一個桌面環境, 集成了這麼一些組件(wikipedia):
- ATK——可達性工具包
- Bonobo——複合文檔技術
- GObject——用於C語言的面向對象框架
- GConf——保存應用軟件設置
- GNOME VFS——虛擬檔案系統
- GNOME Keyring——安全系統
- GNOME Print——GNOME軟件打印文檔
- GStreamer——GNOME軟件的多媒體框架
- GTK+——構件工具包
- Cairo——複雜的2D圖形庫
- Human Interface Guidelines——Sun微系統公司提供的使得GNOME應用軟件易於使用的研究和文檔
- LibXML——爲GNOME設計的XML庫
- ORBit——使軟件組件化的CORBAORB
- Pango——i18n文本排列和變換庫
- Metacity——窗口管理器