Linux圖形編程用什麼開發包?

GUI開發用的多的就是QT, GTK, WxWidgets.

做一些初級到點, 線,面的編程,比如, 遊戲特效, 就可以用到鼎鼎大名的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.
但毫無疑問, GTK, QT也應該可以畫點, 畫線, 但他們設計的目的本來就在於圖形界面的開發, 他們是圖形系統中更高層次的抽象, 比方來說, GTK+從2.8起由Cairo來實現其組件的繪製, 而Cairo正和OpenGL一樣, 是更低層次的圖形庫。

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):



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章