具体描述
X-Wind0w/Motif是计算机工作站和大型机主要的图形用户界面系
统,也是自由操作系统Lin以的用户界面,目前已经成为应用最广泛的图
形用户界面标准。采用X-Window/Motif技术开发的应用软件,具有很高
的可移植件。
0pen0L是二维图形设训与制作的接口标准,广泛应用于可视化技
术、实体造型、CAD/CAM、模拟仿真等诸多领域,是一套独立于操作系
统和硬件环境的三维图形库,具有强大的图形功能和优秀的跨平台移植能
力,已经得到IT工业界的广泛认可。
本书力求以通俗精炼的语言,介绍了在LinuxRedHat6.0平台上开发
Motif和OpebGL程序的技术,可供广大希望从事图形界面、图形设计制作
方面软件开发的Linux爱好者参考,也可作为Linux下C语言开发的入门教
材,同时对其他Dnix系统下的开发人员也有 定借鉴作用。
作者简介
目录信息
序
前 言
第1部分 Linux程序开发基础知识
第1章认识Linux
1.1Linu是自由的操作系统
1.2Linu和自由软件
1.3Linu的发展简史
1.4Linu在中国
1.5总结
第2章 Linux系统C语言开发支撑工具
2.1支撑工具简介
2.2C语言编译器―gcc
2.2.1gcc简介
2.2.2gcc的执行过程
2.2.3gcc的基本用法和选项
2.2.4gcc的错误类型及对策
2.3程序维护工具――make
2.3.1make简介
2.3.2基本原理和用法
2.3.3宏(marco)和注释
2.4程序调试工具
2.4.1调试工具简介
2.4.2调试使用场合
2.4.3调试的功能
2.4.4调试对编译的要求
2.4.5gdb的常用命令
2.4.6xxgdb介绍
2.5程序版本维护
2.5.1RCS简介
2.5.2程序版本结构
2.5.3RCS使用
2.6总结
第3章 熟悉程序开发环境
3.1程序开发流程
3.2程序的编辑之一――使用vi
3.2.1vi简介
3.2.2快速掌握vi
3.2.3vi的使用
3.2.4进一步学习vi
3.3程序的编辑之二――使用EMACs
3.3.1Emacs简介
3.3.2快速掌握Emacs
3.3.3Emacs使用
3.3.4Emacs的程序开发功能
3.3.5使用Emacs编辑程序实例
3.4程序的编译和调试
3.4.1人工编译连接
3.4.2使用make编译连接
3.4.3在Emac8中编译程序
3.4.4调试
3.5获取帮助之一――联机帮助获取
3.5.1联机帮助手册
3.5.2系统帮助文档
3.5.3Motif帮助获取
3.6获取帮助之二――网络帮助获取
3.6.1LDP文档
3.6.2BBS(中文)
3.6.3UsEMET新闻组
3.6.4小结
3.7总结
第2部分 Motif程序开发技术
第4章 X-Window与Motif入门
4.1图形用户界面
4.1.1图形用户界面的特征
4.1.2图形用户界面的结构
4.1.3Linux的图形用户界面
4.2 X-WindoW系统
4.2.1X-Window简介
4.2.2X-WindoW发展历史
4.2.3X系统的特征
4.2.4X系统基本概念
4.3Motif介绍
4.3.1Motif简介
4.3.2Motif的组成
4.3.3窗口管理
4.4Motif程序开发基础
4.4.1Motif程序开发简介
4.4.2Motif程序开发接口
4.4.4Widgets组件构成
4.4.5基本原则
4.5UIL基础
4.5.1UIL与MRM
4.5.2UL的特征
4.6 总结
第5章 Motif程序开发基础
5.1开始Motif程序开发
5.1.1第一个实例
5.1.2程序分析
5.1.3Motif程序的结构
5.2Motif的资源
5.2.1Motif资源简介
5.2.2Motif资源的控制方式
5.2.3Motif资源文件
5.2.4Motif资源的使用
5.3Motif的组件
5.3.1主窗口和菜单系统
5.3.2对话框
5.3.3标签和按钮
5.3.4其他组件
5.3.5小结
5.4Motif的事件处理
5.4.1事件类型与处理方式
5.4.2回调函数
5.4.3动作函数
5.4.4小结
5.5X系统的字体
5.5.1复合字符串
5.5.2字体
5.5.3字体处理实例
5.6 总结
5.6.1Motif程序的结构
5.6.2资源及管理
5.6.3组件对象
5.6.4事件
5.6.5字体和复合字符串
5.6.6实例
第6章 UIL开发基础
6.1UIL简介
6.2UIL语言基础
6.2.1字符集
6.2.2名字
6.2.3关键字
6.2.4数据类型
6.2.5表达式
6.2.6取值函数
6.3UIL模块
6.3.1UIL模块内容
6.3.2UIL模块结构
6.3.3UIL模块书写规则
6.4使用UIL的Motif程序实例
6.4.1程序的功能
6.4.2程序的组成
6.4.3编译连接过程
6.5使用UIL的C程序结构
6.5.1初始化Mrm
6.5.2建立组件对象
6.6使用UIL进行资源管理
6.6.1颜色与字体管理
6.6.2像图管理
6.7总结
第3部分 OpenGL程序开发技术
第7章OpenGL概述
7.1OpenGL的发展历程
7.2Open0L特点及功能
7.2.1OpemGL基本功能
7.2.2OpenGL1.2的部分特性
7.3Mesa简介
7.4OpenGL函数库
7.4.1gl核心函数库
7.4.2glu实用库
7.4.3glaux辅助库
7.4.4gltk工具库及与glaux库的比较
7.4.5其他扩展函数库
7.5OpenGL的语法规则及状态机制
7.5.1语法规则
7.5.2状态机制
7.6OpenGL的相关信息
7.6.1OpenGL技术评审委员会
7.6.2Lin以下OpenGL的网址
7.6.3使用或支持0penGL的一些相关产品
7.7总结
第8章 Mesa/OPenGL编程要点
8.1一个简单Mesa程序示例
8.1.1迷宫程序代码
8.1.2程序分析
8.1.3Linux及Windows系统下Mesa/OpenGL程序框架的比较
8.2图形绘制的辅助技术
8.2.1清除缓冲区
8.2.2消隐
8.2.3强制绘图完成
8.2.4交换缓冲区
8.3总结
第9章 绘制几何实体
9.1基本几何图元
9.1.1绘制开始与结束命令
9.1.2点
9.1.3线
9.1.4多边形
9.1.5法向量
9.2颜色
9.2.1颜色模式
9.2.2颜色过渡模式
9.3变换
9.3.1模型―取景变换
9.3.2投影变换
9.3.3视口变换
9.3.4附加裁剪平面
9.3.5矩阵堆栈
9.3.6程序示例
9.4总结
第10章 显示列表
10.1立即执行模式与显示列表
10.1.1立即执行模式
10.1.2显示列表方式
10.2显示列表的创建与执行
10.2.1创建显示列表
10.2.2执行显示列表
10.2.3显示列表嵌套
10.3程序示例
10.4总结
第11章 光照、材质与纹理
11.1光照处理
11.1.1光照基本概念
11.1.2光源属性
11.1.3光照模式
11.1.4程序示例
11.2材质
11.2.1材质属性
11.2.2材质程序示例一
11.2.3材质程序示例二
11.3纹理映射
11.3.1纹理基本概念
11.3.2纹理的定义
11.3.3纹理坐标
11.3.4程序示例
11.3.5纹理缠绕方式
11.3.6本章程序综合示例
11.4总结
第12章 雾化、融合与反走样
12.1雾化
12.1.1雾化效果设置
12.1.2程序示例
12.2融合
12.2.1融合效果设置
12.2.2程序示例一
12.2.3程序示例二
12.3反走样
12.3.1反走样效果设置
12.3.2程序示例
12.4总结
第13章 位图与图像
13.1位图
13.1.1位图绘制函数
13.1.2位图程序示例
13.1.3字体程序示例
13.2图像
13.2.1像素的读写、拷贝、缩放操作
13.2.2像素的存贮 传输 映射操作
13.2.3程序示例
13.3总结
第14章 求值器与NURBs
14.1求值器
14.1.1求值器的计算原理
14.1.2求值器函数
14.1.3程序示例
14.2NURBs
14.2.1NURBs编程思路
14.2.2NURBs函数
14.2.3程序示例
14.3总结
第4部分 综合使用Motif与OpenGL
第15章 Motif与OpenGL联合编程
15.1Motif与Open0L联合编程
15.2实例介绍
15.2.1程序功能与运行结果
15.2.2程序源代码
15.2.3编译连接
15.3实例程序剖析
15.3.1组件对象层次结构
15.3.2便利函数与回调函数
15.3.3OpenGL处理
15.4 总结
附录A GPL声明
附录B Xt和Motif组件类族
附录C X系统设计7原则
附录D 通用包含头文件
参考文献
· · · · · · (收起)
读后感
用户评价
说实话,我对OpenGL部分的期待是最高的,毕竟“Motif”和“OpenGL”的结合,意味着要构建的是那种兼具传统控制面板的稳健性和三维渲染的震撼力的应用程序。这本书在OpenGL部分的叙述方式,明显偏向于传统的固定管线(Fixed-Function Pipeline)编程范式。这对于接触过现代着色器(Shader)编程的读者来说,可能会感到有些不适应。书中详细讲解了矩阵的堆叠、视口变换、光照模型的设置,每一个步骤都精确到数学公式的推导。它并没有过多地去探讨GLSL语言的强大之处,反而更像是重现了90年代末期,工程师们如何用纯粹的C语言和OpenGL API,在没有强大GPU支持的情况下,模拟出复杂的三维场景。我特别欣赏其中一章,专门对比了不同光照模型(如高氏、冯氏)在不同数据精度下对渲染效果的微妙影响。虽然我们现在更多依赖于引擎自动处理这些,但理解这些基础数学原理,能让你在遇到渲染错误或性能瓶颈时,拥有“庖丁解牛”般的洞察力。这本书的价值在于,它训练了你的“三维思维”——如何在抽象的坐标系中定位物体,如何思考投影和观察者的关系,而不是仅仅停留在调用函数层面。
阅读体验上,这本书的排版风格非常“务实”。大量的代码示例穿插其中,而且往往是相当长的片段,这对于边阅读边敲代码的实践者来说是友好的。但同时,它的叙事节奏略显平铺直叙,缺乏现代技术书籍中常见的趣味化比喻或案例分析。它更像是一位经验丰富的老工程师,坐在你面前,一板一眼地讲解他多年积累的经验和教训。例如,在讨论Motif的事件处理机制时,书中反复强调了“锁定/解锁”机制的重要性,以及当网络延迟影响到用户输入时,如何设计一个优雅的异步反馈系统。这种细节的关注,在如今许多追求快速交付的开发环境中是极为稀缺的。它让我深刻体会到,早期的GUI开发,更多的是一种系统级的工程管理,需要在用户体验、资源消耗和稳定性之间找到一个极度微妙的平衡点。我可以想象,这本书在当年一定被大量应用在科学计算和工业控制软件的开发团队中,因为它提供的是一套近乎“铁律”的开发规范,而非随意的建议。
从内容深度来看,这本书的覆盖面虽然聚焦于两个特定的技术栈,但其对“程序开发”这四个字的诠释是极其全面的。除了核心的API调用,书中还涉及到了关于用户界面设计的原则性问题。它探讨了如何利用Motif提供的Widget集合来构建符合人机工程学标准的界面,而不是仅仅为了展示3D图形而堆砌功能。有一章关于错误处理和日志记录的章节给我留下了深刻印象,它建议在进行复杂图形渲染时,必须建立一个多层次的错误上报机制,以区分是应用程序逻辑错误、OpenGL驱动问题,还是底层X服务器的故障。这种系统级的、面向健壮性的设计思维,在许多只关注功能实现的前端开发中已经逐渐淡化了。因此,这本书不只是教你“如何做”,更重要的是教你“如何做得可靠”和“如何做得有章法”。它像一本软件工程的“历史教材”,通过讲解过往的技术抉择,反过来映照出当前我们所处技术环境的优势与缺失。
这本书的独特价值,恰恰在于它对“UNIX”环境的深度绑定。它不仅仅是一本关于Motif和OpenGL的教程,它更是一部关于如何在特定操作系统生态中进行高性能应用开发的实战指南。书中对于`make`文件、编译时链接外部库的依赖管理、以及与底层X服务器通信的细节处理,都展现出一种近乎苛刻的精确度。例如,如何正确地设置`LD_LIBRARY_PATH`以确保Motif库能够被正确加载,或者在编译时如何利用特定编译器优化标志来提升窗口重绘的速度。对于那些希望脱离现代IDE的“黑箱”操作,重新体验一下“裸金属”般编程乐趣的资深开发者来说,这本书提供的视角是无可替代的。它迫使你思考软件的每一个组成部分是如何协同工作的,从源代码到最终在屏幕上点亮的像素,中间经历了多少层抽象和转换。这种对构建过程的完全控制感,是现代抽象框架难以给予的。
这本书的封面设计着实吸引人,那深邃的蓝色背景上,交织着代码的荧光绿线条,仿佛预示着即将踏入一个充满技术挑战与美学构建的数字世界。我原本是冲着“Motif”这个名字来的,毕竟在那个时代,Motif代表着UNIX工作站界面开发的黄金标准,一种兼顾了强大功能和特定视觉风格的框架。然而,当我翻开前几页时,立刻感受到了一种强烈的时代气息——这种气息并非陈旧,而是一种扎根于特定技术栈的深度。书中对早期X Window System的底层机制探讨,细致入微,几乎是手把手地教你如何从零开始理解事件循环、窗口管理器之间的交互协议。它没有急于抛出那些花哨的API调用,而是花费大量篇幅解释了为什么Motif会以那种方式设计,背后的设计哲学是什么。对于一个习惯了现代Qt或GTK+的开发者来说,这种对“根源”的追溯,无疑是一次宝贵的“考古之旅”。尤其是在讨论资源文件和编译链接选项时,那种需要精确控制每一个编译旗帜的严谨性,让人怀念起那个软件开发还带着一丝“手工艺品”味道的年代。如果你的目标是深入理解图形用户界面(GUI)的历史演进,特别是如何在资源极其有限的系统上榨取出最大的性能和最优雅的交互,这本书绝对能提供一个坚实的技术基石。它更像是一本工艺手册,而不是一本快速入门指南,需要耐心和对底层原理的敬畏之心。