![[整理]Linux图形基础_第1页](http://file2.renrendoc.com/fileroot_temp3/2021-11/11/a119c797-1355-415b-a64f-dc58c6ab3abe/a119c797-1355-415b-a64f-dc58c6ab3abe1.gif)
![[整理]Linux图形基础_第2页](http://file2.renrendoc.com/fileroot_temp3/2021-11/11/a119c797-1355-415b-a64f-dc58c6ab3abe/a119c797-1355-415b-a64f-dc58c6ab3abe2.gif)
![[整理]Linux图形基础_第3页](http://file2.renrendoc.com/fileroot_temp3/2021-11/11/a119c797-1355-415b-a64f-dc58c6ab3abe/a119c797-1355-415b-a64f-dc58c6ab3abe3.gif)
![[整理]Linux图形基础_第4页](http://file2.renrendoc.com/fileroot_temp3/2021-11/11/a119c797-1355-415b-a64f-dc58c6ab3abe/a119c797-1355-415b-a64f-dc58c6ab3abe4.gif)
![[整理]Linux图形基础_第5页](http://file2.renrendoc.com/fileroot_temp3/2021-11/11/a119c797-1355-415b-a64f-dc58c6ab3abe/a119c797-1355-415b-a64f-dc58c6ab3abe5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 linux图形领域的基础设施1.1 x window也成为x11,是协议。冇三个部分x server和x client, widgets。是x server和x client z间的通f吉协议。x server是xfree86/xorg驱动f的显示设备鼠标键盘统称,x client 通过xii协议和xfree86/xorg实现的x server通信,比如,告诉它画一个左上角坐标为(x,y),宽为w,高为 h的窗口,xfree86就让显示器把屏幕上的小灯(像素)打亮,然后你就看 到了一个窗口。为了方便开发人员编写x clients,就有了 xlib來封装协议;xlib不够方便,于是就有了 q
2、t和gtk,提供 了很多窗口控件(widgets)。1.2 svgalibsvgalib是linux上底层的图形库,也是linux系统中最早出现的非x图形 支持库,它支持标准的vga图形模式和一些其他的模式,svgalib的缺点是程序 必须以roo(权限登录,并且它是基于图形卡的,所以不是所有的硬件都支持它。 白从framebuffer这个挛牛姐妹诞牛后,许多软件由只支持svgalib改变为同时 支持两者,甚至一些流行的高层函数库如qt和gtk只支持framebuffer,作为一 个老的图形支持库,svgalib冃前的应川范围越來越小,尤其是在linux内核增 加了 framebuffer驱动
3、支持之后。1.3 framebufferframebuffer是岀现在2.2.xx内核当中的一种驱动程序接口。这种接口将 显示设备抽彖为帧缓冲区。用户可以将它看成是显示内存的一个映像,将其映射 到进程地址空间之示,就可以肓接进行读写操作,而写操作可以立即反映在屏幕 上。该驱动程序的设备文件一般是/dev/fbo、/dev/ft)l等等。在应用程序中,一般通过将framebuffer设备映射到进程地址空间的方式使 用,比如下面的程序就打开/dev/fbo设备,并通过mmap系统调用进行地址映 射,随后用memset将屏幕清空(这里假设显示模式是1024x766-8位色模式, 线性内存模式):in
4、t fb;unsigned char* fb_mem:fb = open (vdev/fbo*, o_rdur):fb_mem = mmap (null, 1024*76&prot_readiprot_write, iap_shared fb, 0): memser0, 1024*768):framebuffer设备还提供了若干ioctl命令,通过这些命令,可以获得显示 设备的一些固定信息(比如显示内存人小)、与显示模式相关的可变信息(比如分 辨率、象索结构、每扫描线的字节宽度),以及伪彩色模式下的调色板信息等等。framebuffer实际上只是一个提供显示内存和显示芯片寄存器从物理内
5、存映 射到进程地址空间中的设备。所以,对于应用程序而言,如果希望在framebuffer 之上进行图形编程,还需要完成其他许多工作。framebuffer就像一张画布,使 用什么样子的画笔,如何画画,还需要你口己动手完成。1.4 libggilibggi试图建立一个一般性的图形接口,而这个抽彖接口连同相关的输入(鼠标、键盘、游戏杆等) 抽彖接口一起,可以方便地运行在x window. svgalib、framebuffer等等z上。建立在libggi z上 的应用程序,不经重新编译,就可以在上述这些底层图形接口上运行。但不知何故,libggi的发展儿乎 停滞。2 linux图形领域的高级函数库
6、2.1 xlib及其他相关函数库在x window系统中进行图形编程时,可以选择肓接使用xlib。xlib实际是对底层x协议的封装, 可通过该函数库进行-般的图形输出。如果你的x server支持dga,则可以通过dga扩展直接访问 显示设备,从而获得加速支持。对-般用户而言,由于xlib的接口太原始而且复杂,因此一般的图形程 序选择其他高级一些的图形库作为基础。比如,gtk、qt等等。这两个函数同时还是一些高级的图形用 户界而支持函数库。由于种种原因,gtk、qt等函数库存在冇庞大、占用系统资源多的问题,不太适合 在嵌入式系统中使用。这时,你可以选择使用fltk,这是一个轻量级的图形函数库,
7、但它的主要功能集 中在用户界面上,提供了较为丰富的控件集。2.2 sdlsdl (simple directmedia layer)是一个跨平台的多媒体游戏支持库。其屮包含了对图形、声音、游 戏杆、线程等等的支持,目前可以运行在许多平台上,其中包括x window、x window with dga> linux framebuffer 控制台、linux svgalib,以及 windows directx. beos 等等。因为sdl专门为游戏和多媒体应用而设计开发,所以它对图形的支持非常优秀,尤其是高级图形能 力,比如alpha混和、透明处理、yuv覆盖、gamma校正等等。而且在
8、sdl环境中能够非常方便地 加载支持opengl的mesa库,从而提供对二维和三维图形的支持。可以说,sdl是编写跨平台游戏和多媒体应用的最佳平台,也的确得到了广泛应用。相关信息,可参 阅 /。2.3 allegroallegro是一个专门为x86平台设计的游戏图形库。最初的allegro运行在dos环境下,而目前可 运行在linux framebuffe控制台、linux svgalib、x window等系统上。allegro提供了一些丰富的图 形功能,包括矩形填充和样条曲线生成等等,而且具冇较好的三维图形显示能力。由于allegro的许多关 键代码
9、是采用汇编编写的,所以该两数库貝有运行速度快、资源占用少的特点。然而,allegro也存在如下 缺点:1)对线程的支持较差。allegro的许多函数是非线程安全的,不能同时在两个以上的线程中使用。2)对硕件加速能力的支持不足,在设计上没冇为硕件加速提供接口。有关 allegro 的进一步信息,可参阅 http:/www.allegro.cc/o2.4 mesa3dmesa3d是一个兼容opengl规范的开放源码函数库,是目前linux上提供专业三维图形支持的惟 一选择。mesa3d同时也是一个跨平台的函数库,能够运行在x window. x window with dga, beos、 lin
10、ux svgalib 等平台上。有关 mesa3d 的进-步信息,可参阅 /。2.5 directfbdirectfb是专注于linux framebuffer加速的一个图形库,并试图建立一个兼容gtk的嵌入式 gui系统。它以可装载函数库的形势提供对加速framebuffer驱动程序的支持。hl前,该函数库止在开 发之中(最新版木 0.9.97),详情可见 /o3面向嵌入式linux系统的图形用户界面3.1 micorowindows/nanoxmicrowindows ( century software公
11、司主持开发。该项目的开发一度非常活跃,国内也冇人参与了其屮的开发,并编写了 gb2312 等字符集的支持。但在qt/embedded发布以來,该项h变得不太活跃,并长时间停酣在0.89pre7版本。 可以说,以开放源码形势发展的microwindows项目,基本停滞。microwindows是一个基于典型客户/服务器体系结构的gui系统,基木分为三层。最底层是面向图 形输出和键盘、鼠标或触摸屏的驱动程序;屮间层提供底层硕件的抽彖接口,并进行窗口管理;最高层分 别提供兼容于x window和windows ce (win32子集)的apl该项目的主要特色在于捉供了类似x的客户/服务器体系结构,并
12、提供了相对完善的图形功能,包括 一些鬲级的功能,比如alpha混介,三维支持,truetype字体支持等。但需要注意的是,microwindows 的图形引擎存在许多问题,可以归纳如下:1)无任何硕件加速能力。2)图形引擎中存在许多低效算法,同时未经任何优化。比如在直线或者i员i弧绘图函数中,存在低效的逐点 判断剪切的问题。3)代码质量较差。由于该项目缺少一个强冇力的核心代码维护人员,因此代码质量参差不齐,影响整体系 统稳定性。这也是microwindows长时间停甜在0.89pre7版本上的原因。microwindows采用mpl条款发布(该条款基本类似lgpl条款)。3.2 opengui
13、opengui(http:/www.tutok.sk/fastgl/)在linux系统上存在己经很长时间了。最初的名字叫fastgl, 只支持256色的线性显存模式,但目前也支持其他显示模式,并且支持多种操作系统平台,比如 ms-dos、qnx和linux等等,不过目前只支持x86硬件平台。opengui也分为三层。最低层是由汇 编编写的快速图形引擎;中间层提供了图形绘制api,包括线条、矩形、圆弧等,并且兼容于borland的 bgiapl第三层用c+编写,提供了完整的gui对象集。opengui采用lgpl条款发布。opengui比较适合于基于x86平台的实时系统,可移植性稍差, 目前的发
14、展也基本停滞。3.3 qt/embeddedqt/embedded是著名的qt库开发商trolltech ( 的qt版本。因为qt是kde等项目使用的gui支持库,所以冇许多基于qt的xwindow程序可以 非常方便地移植到qt/embedded版本上。因此,自从qt/embedded以gpl条款形势发布以來,就有 大量的嵌入式linux开发商转到了 qt/embedded系统上。比如韩国的mizi公司,台湾省的某些嵌入式 linux应用开发商等等。不过,在笔者看來,qt/embedded还冇一些问题值得开发者注意:1) 目前,该系统采用两种条款发布,其中包括gpl条款。对函数库使用gpl条款
15、,懑味着其上的应用 需要遵循gpl条款。当然了,如呆要开发商业程序,trolltech也允许你采用另外一个授权条款,这时, 就必须向trolltech交纳授权费用了。2) qt/embedded是一个c+函数库,尽管qt/embedded声称可以裁剪到最少630k,但这时的 qt/embedded库已经基本上失去了使用价值。低的程序效率、大的资源消耗也对运行qvembedded的 硕件提岀了更高的耍求。3) qt/embedded库h前主要针对手持式信息终端,因为对便件加速支持的庚乏,很难应用到对图形速度、 功能和效率要求较高的嵌入式系统当中,比如机顶盒、游戏终端等等。4) qt/embedd
16、ed提供的控件集风格沿用了 pc风格,并不太适合许多手持设备的操作要求。5) qt/embedded的结构过于复杂,很难进行底层的扩充、定制和移植,尤其是那个用来实现signal/slot 机制的著名的moc文件。因为上述这些原因,目前所见到的qt/embedded的运行环境,几乎是淸一色基于strongarm的 ipaqo3.4 miniguiminigui (/)是山笔者主持,并山许多自由软件开发人员支持的一个自山软件 项目(遵循lgpl条款发布),其目标是为棊于linux的实时械入式系统提供一个轻量级的图形用户界而 支持系统。该项hl自1998年
17、底开始到现在,已历经3年多的开发过程。到h前为止,已经非常成熟和 稳定。目前,我们已经正式发布了稳定版本1.0.9,并且开始了新版本系列的开发,即minigui version 1.1.x,该系列的正式版也即将发布。在minigui儿年的发展过程中,冇许多值得一提的技术创新点,正是由于这些技术上的创新,才使得minigui更加适合实时嵌入式系统;而且minigui的灵活性非常好,可以应用在包括手持设备、机顶盒、 游戏终端等等在内的各种高端或者低端的嵌入式系统当中。这些技术创新包括:1)图形抽象层。图形抽彖层对顶层api基本没冇影响,但人人方便了 minigui应用程序的移植、调试 等工作。目前
18、包含三个图形引擎,svgalib、libggi以及直接基于linux framebuffer的native engine, 利用libggi时,可在xwindow上运行minigui应川程序,并可非常方便地进行调试。与图形抽彖层 相关的还冇输入事件的抽象层。minigui现在己经被证明能够在基于arm, mips、strongarm以及 powerpc等的嵌入式系统上流畅运行。2)多字体和多字符集支持。这部分通过设备上下文(dc)的逻辑字体(logfont)实现,不管是字体 类型还是字符集,都可以非常方便地进行扩充。应用程序在启动时,可切换系统字符集,比如gb、big5、 euckr、ujis
19、e利用drawtext等函数时,可通过指定字体而获得其他字符集支持。对于一个窗口來说, 同时显示不同语种的文字是可能的。minigui的这种字符集支持不同于传统通过unicode实现的多字 符集支持,这种实现更加适合于嵌入式系统。3)两个不同架构的版本。最初的minigui运行在pthread库之上,这个版本适合于功能单一的诙入式 系统,但存在系统健壮性不够的缺点。在0.9.98版本中,我们引入了 minigui-lite版本,这个版本在提 高系统健壮性的同时,通过一系列创新途径,避免了传统c/s结构的弱点,为功能复杂的嵌入式系统提 供了一个高效、稳定的gui系统。在minigui 1.1.0
20、版本的开发中,我们参照sdl和allegro的图形部分,重新设计了图形抽象层, 并增强了图形功能,同时增强了 minigui丄ite版木的某些特性。这些特性包括:1)minigui-lite支持层的概念。同一层可容纳多个能够同时显示的客户程序,并平铺在屏幕上显示。2)新的gal能够支持硬件加速能力,并能够充分使用显示内存;新gal z上的新gdi接口得到进一 步增强。新的gdi接口可以支持alpha混和、透明位块传输、光栅操作、yuv覆盖、gamma校正, 以及高级图形功能(椭圆、多边形、样条曲线)等等。minigui新版本在图形方而的増强和提高,将人人扩展它的应用领域,希望能够对嵌入式lin
21、ux上的 多媒体应用、游戏开发提供支持。纵观嵌入式linux系统上的各种图形系统方案,我们发现,许多图形系统(如qt/embedded和 micorowindows),只注重手持设备上的需求,却不太注重其他应用领域的需求,而其他许多需要图形支持 的嵌入式linux系统却需要许多独特的、高级的图形功能,而不仅仅是图形用户界而。为此,在接下來的 开发中,我们还将在如下领域继续开发minigui:1)提供运行在minigui上的java虚拟机awt组件的实现。2)提供minigui上的opengl实现。3)提供类qt控件集的c+封装。3)提供窗口/控件风格主题支持。4)在minigui丄ite当中增
22、加对矢量字体的支持。linux/unix系统图形界面原理简单介绍及gtk qt gnome kde的关系最近it新闻出现较多的就是诺基亚的新版手机操作系统symbian 3。今天看到在 cnbeta上看人家为这个系统争论不休,其焦点也逐渐转移到到赛班新系统的核心技 术:qt。评论区大家唇枪舌战,不过很多人连基本概念都没搞明白,今天正好无事 可做,稍微整理下x",gtk,qt,gnome的区别与联系。一、在这之前你必须要了解:l.linux是基于unix的2塞班symbian>苹果max os等系统的最底层也是unix3.linux木身没冇图形界iftijinux现在的图形界面的
23、实现只是linux下的应用程序实现 的4.xwindow xfree中的x是协议,不是具体的某个软件5.linux图形界面层次关系:linux本身->x服务器v通过x协议交谈卜窗口管理器 (综合桌而坏境)应用程序二、linux和windows下界面系统的区别:图形界面并不是linux的一部分,linux只是一个基于命令行的操作系统,linux和 xfree的关系就相当于当年的dos和windows3.0 一样,windows3.0不是独立的 操作系统,它只是dos的扩充,是dos卜-的应用程序级别的系统,不是独立的操作系 统,同样xfree只是linux下的一个应用程序而已.不是系统的一
24、部分,但是x的存在 可以方便用户使用电脑.windows95及以后的版本就不-样了,他们 的图形界面 是操作系统的一部分,图形界面在系统内核屮就实现了,没有了图形界面windows就 不成为windows 了,但linux却不一样,没有图形 界面linux还是linux,很多装linux 的web服务器就根本不装x服务器.这也windows和linux的重耍区别三、关于linux两大图形界面kde和gnomekde早于gnome出现,但是kde基于的qt是不遵循gpl开源协议的,qt是一 个跨平台的c+图形用户界面库,它是挪威trolltech公司的产品(2008年底被 nokia收购)。qt具有优良的跨平台特性(支持windows. linux、各种unix、 os390和qnx等)、面向对象机制以及丰富的api,同时也可支持2d/3d渲染和 openglapl在当
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《网络成瘾的影响》课件
- 2025工程咨询委托合同范本
- 2025年个人向银行借款合同模板
- 初期支护课件
- 车站治安保卫管理和安全管理车站日常治安保卫工作由地铁公安
- (68)-考点68 作文-想象作文
- (8)-专题08 句子衔接与排序
- 潍坊环境工程职业学院《数字时代品牌传播》2023-2024学年第二学期期末试卷
- 商丘职业技术学院《画法几何与土建制图》2023-2024学年第二学期期末试卷
- 临沂科技职业学院《检体诊断学》2023-2024学年第二学期期末试卷
- 市政园林劳务合同范本
- 维克多高中英语3500词汇
- 一人有限公司章程(范本)
- 员工惩罚通知单
- GB/T 25742.4-2022机器状态监测与诊断数据处理、通信与表示第4部分:表示
- 特殊感染手术的配合与术后处理
- 萧红《呼兰河传》课件
- 机动车驾驶人考试场地及其设施设置规范
- 大学生三生教育主题班会
- 2023年宜昌市中医医院医护人员招聘笔试题库及答案解析
- 内部控制建设课件
评论
0/150
提交评论