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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值