煤矿开采区域的三维地层可视化的研究.pdf
山东科技大学 硕士学位论文 煤矿开采区域的三维地层可视化的研究 姓名丁玉财 申请学位级别硕士 专业计算机软件与理论 指导教师贾作皆 20040501 山东科技大学硕士学位论文摘要 摘要 本文紧紧围绕采区地层三维模型的建立与可视化这一主题,将三维地层模型分为岩 层模型和断层模型,根据我国煤矿的现状和条件,对岩层模型采用多层等高线方法建立 模型,对断层模型采用分而治之的方法,对断层分层建立模型。在对岩层的底板和顶板 重构时,提出了点的属性值概念,对每一个点赋一个属性值,根据点的属性值来进行点 的连接。并以潞安矿务局张村煤矿为例,用V B 和O p e n G L 开发了三维地层可视化系统, 系统实现了三维地层的可视化的任意角度显示,以及地层的填充、线框显示、任意面剖 分、单层显示和单独显示某一区域的地层等功能。 关键词地层,断层,岩层,可视化,三维,多层等高线,模型 坐查型垦盔兰 堕圭堕堡L 一 塑鐾 A b s t r a c t T h i sp a p e rc e n t r e sO i lt h es e t t i n g u pa n dv i s u a l i z a t i o no ft h es t r a t u mt h r e e d i m e n s i o n a l m o d e lo f e x p l o i t i n gf i e l d ,i td i v i d e st h et h r e e d i m e n s i o n a ls t r a t u mm o d e li n t ot h er o c ks t r a t u m m o d e la n df a u l tm o d e l ,a c c o r d i n gt Ot h ec u r r e n ts i t u a t i o na n dc o n d i t i o no f t h ec o l l i e r yo f0 u r c o u n t r y , w ea d o p tt h em u l t i ~l a y e rc o n t o u rm e t h o dt ob u i l dt h em o d e l .p r o p o s ean e w m o d e l i n g m e t h o do f d i v i d i n gf a u l ti n t os e v e r a l ,t h e nf o r me a c hl a y e rm o d e ls e p e r a t e l y .W h e nc o n s t r u c t t Ot h ef l o o ra n dr o o fo f £h er o c ks t r a t u m a g a i n .h a v ep u tf o r w a r dt h ea t t r i b u t ev a l u ec o n c e p to f p o i n t s .c o m p o s eo d e a t t r i b u t ev a l u et oe v e r y p o i n t ,c o n n e c tp o i n t sa c c o r d i n gt oa t t r i b u t ev a l u e . A n dt h es y s t e mh a sa p p f i e di nL uA n m i n e r a lb u r e a u ,u t i l i z eV Ba n d O p e n G L t o d e v e l o pt h e v i s u a l s y s t e m ,h a s r e a l i z e dt h e f o l l o w i n gf u n c t i o n t h et h r e e - d i m e n s i o n a ls t r a t u mv i s u a l d i s p l a yo fa n ya n g l e ,p a c k i n gt h es t r a t u m ,l i n ef r a m es h o w i n g ,s u b d i v i s i o n s ,s i n g l el a y e r s h o w i n g ,s h o w i n g as t r a t u mi nac e r t a i na r e a ,e t c . K e y w o r d s s t r a t u m ,f a u l t ,r o c ks t r a t u m , v i s u a l i z a t i o n ,t h r e e - d i m e n s i o n a l ,m u l t i l a y e rc o n t o u r , m o d e l 2 声明 本人呈交给山东科技大学的这篇硕士学位论文,除了所列参考文献和世所 公认的文献外,全部是本人在导师指导下的研究成果。该论文资料尚没有呈交 于其它任何学术机关作鉴定。 硕士生签字 丁玉对 日 期砂币9 .i ,7 A F F I R M L A T I o N Id e c l a r et h a tt h i sd i s s e r t a t i o n ,s u b m i t t e di nf u l f i l l m e n to ft h er e q u i r e m e n t sf o rt h e a w a r do fM a s t e ro f e n g i n e e r i n gi nS h a n d o n gU n i v e r s i t yo fS c i e n c ea n dT e c h n o l o g y , i sw h o l l ym yo w nw o r ku n l e s sr e f e r e n c e da c k n o w l e d g e .T h ed o c u m e n th a sl l o tb e e n s u b m i t t e df o rq u a l i f i c a t i o na ta n yo t h e ra c a d e m i ci n s t i t u t e . S i g n a t u r e 口旧枷矧 D a t e 2 桫呼.了、I ,7 山东科技大学硕士学位论文 1 绪论 1 .1 煤矿开采现状 煤炭占我国能源结构的7 0 %,我国目前已探明的煤炭储量9 0 0 0 多亿吨,以每年开采 1 5 亿吨计算可以延续开采5 0 0 多年。目前我国年产煤近1 2 亿吨,居世界之首。但安全和效 率排在世界主要产煤国家之末。可能涉及到整个矿井人员生命安全的重大瓦斯爆炸事故、 一次可能推垮上百米巷道的煤与瓦斯事故、冲击地压事故、上百米长工作面塌垮的重大 顶板事故,以及淹没矿井的水灾、造成窒息的火灾等重大事故仍然是目前煤矿职工身心 健康的最大威胁。目前由于奥陶纪灰岩承压水的威胁,右上百亿吨煤难以开采。由于地 质情况不明、开采引起的矿山压力规律不清、重大事故发生的机理研究不透,因决策不 当而造成的浪费每年都可能以1 0 亿元计。上述情况首先是由采掘工作面在地质条件复杂 多变的条件下推进,岩层运动与促使其运动的矿山压力不断变化的工程特点所决定的。 没有简单、可靠、易行的监控手段,搞清多变的地层条件和判断工程控制效果,也就不 可能保证控制决策的科学性和针对性,达到排除重大事故、提高开采效益的目的。针对 我国煤矿地质条件复杂、构造运动伴生的复合应力场相当普遍,特别是地方煤矿工程技 术人员的素质还难以完全适应采场不断推进的工程特点正确决策的现实,必须进一步完 善“以岩层运动为中心”的矿山压力理论、完善矿山压力及有关事故预测、控制设计和 控制效果判断三位一体的科学决策体系,依靠现代信息和工程控制理论及高新技术手段 包括动态信息传递技术手段和计算机等 ,把目前主要依靠人工经验统计决策推进到 能针对具体煤层条件和可能发生灾变的工作地点科学定量决策的新阶段,把我国煤矿安 全开采决策提高到国际领先水平。为此进行煤矿安全开采决策关键技术的基础性研究是 保证煤矿安全生产刻不容缓的大事。 控制开采沉陷对人类生存环境的破坏是煤矿安全开采面l | 缶的世界性难题。我国华北、 华东、东北等平原,不少矿区地表一片汪洋,上万公顷农田遭到破坏。开采沉陷引起的 建筑物、铁道、桥梁破坏,地面、河流、湖泊泄露,发生透水、淹井等重大事故都是不 容许的灾害。目前我国不少煤矿平均每采一吨煤花费在迁村、修路方面的费用高达l O 元, 达到了无法承受的地步。据统计,全国现有煤矿村庄下压煤已超过百亿吨。因此深入研 究井下岩层运动和地表沉陷规律,针对环境保护的需要,建立以控制井下岩层运动为主 1 山东科技大学硕士学位论文 绪论 体的沉陷控制理论和新技术,把沉陷灾害预测控制决策提高到针对具体地层和开采条件 科学定量的阶段,同样是我国煤矿安全开采的紧迫任务。 综上所述,采矿工程面对的是复杂多变的地层条件,采掘工作场所在不断推进,围 岩运动及促使其运动的矿山压力都在不断地发展和变化着,发生灾变的条件随时可能遇 到。一旦决策失误或措施不及时,都将会导致重大事故。这一工程特点对控制决策提出 了特殊的要求动态的、及时的和准确的把灾变可能性预测、控制措施决策、措施实施 的监控和效果判断结合成一个整体。其中预测和控制效果的判断是正确控制设计的前提。 建立完善的预测和控制新理论、成功的研制和运用高新技术装备的三位一体决策手段, 是实现完全开采预测和决策的基础。长期以来,由于没有更明确的针对采矿工程特点完 善矿山压力和围岩运动控制的理论,以及对与之相关的各种事故发生的机理和灾变条件 研究不够深入,没能客观的建立起相应的控制设计力学模型并找到安全控制的准则,没 能找到适应工程特点、解决上述问题的预测和决策手段,国内外安全开采决策多数停留 在主要依靠统计经验决策的阶段。 1 .2 课题的提出 煤在我国的能源生产中占据了主导地位,发挥着决定性的作用,所以要使煤矿创造 更大的经济效益就要对煤矿实行安全高效开采,而煤矿安全高效开采决策最大的特点, 就是必须面对复杂多变的地质构造和开采技术条件。但现在却不能够根据具体的地质条 件进行针对性的开采设计,特别是在采场推进过程中对上覆岩层赋存情况的变化以及由 此变化导致的覆岩运动规律及支承压力分布规律的差异认识不清,是当前煤矿事故频繁, 特别是重大事故和环境灾害没有能从根本上得到控制、开采经济效益不好的重要原因之 一。因此煤矿的安全必须得到重视,采煤更需要科技化、信息化。本课题就是针对这种 情况提出的,它是矿区煤矿开采的智能决策系统的一个子系统,主要是对煤矿主采 煤层、主采区域进行三维地层可视化工作,将地层以三维可视化的图形效果直观形象地 表达出来,为开采决策提供依据。 1 .3 研究背景及现状 三维地层建模与计算机可视化是目前研究的一个热门领域,但是包含断层的复杂地 2 些查型董盔芏堕主芏垡堡塞堕笙 质体的三维描述与模拟,目前仍处于研究探索阶段,至今还没有一个完善的系统实现。 其原因主要是由于断层在空间展布的几何形态的高度复杂性与不确定性,以及数据获取 的艰难性。从目前的国内外关于三维地层建模的方法研究现状来看,其主要技术路线是 首先根据钻孔岩芯数据或地震剖面解释而形成的剖面数据以及区域地质调查获得的有关 数据,基于2 D /3 D 剖面,形成合理的层面,然后建立地质体的网格模型,实现三维计算 机模拟。但是,这些方法要求丰富的样本数据,作为建模的依据;而且,基本上只能处 理表示单值面的正断层,对于存在多值面的逆断层,仍然缺乏有效的处理方法;另外, 也没有提供对采样数据区以外区域的断层延展性进行预测的手段。 我国矿山计算机应用始于8 0 年代初期,经过学术界和工业界的努力,计算机在我国 矿山的应用得到了长足的发展,国内自行开发的计算机矿床模型主要有霍林河矿矿床地 质模型,平庄西矿矿床地质模型等,这些矿模都是用高级语言 F O R T R A N ,B A S I C ,C 语言 开发的,其精度和可靠性都较高,基本能满足地质管理和采矿的要求但这些矿床模 型都是在D O S 系统下开发的二维平面模型,其可视性和通用性较差。国外在建立三维立 体矿床模型方面发展的比较快,现在已经进入试用阶段,比较有代表性的是澳大利亚 M A P T E K 公司生产的V U L C A 刚牛系统。该系统内容丰富、功能强大,三维立体效果好。 与发达国家相比,我国的计算机应用尚有很大的差距,特别是开发与研究方面仍处于初 级阶段。在软件方面,我国尚未形成专业的矿用软件开发队伍,矿用软件由高等院校和 科研院所针对协作矿山的具体条件进行设计,其通用性、系统性和用户界面友好性较差, 未形成商业化软件系统,且软件功能构思局限在模拟手工方法的框框里。结果造成矿用 软件在较低水平上重复进行,软件水平提高的进程缓慢。在我国,仅靠引进昂贵的外国 矿用软件来提高我国矿山计算机应用水平决非长远之计,也是不现实的,因为我国大部 分的大中型矿山的煤矿赋存条件和开采条件复杂,引进的软件往往在特殊问题上显得无 能为力,因此,尽快根据我国的实际情况,自主地开发出适合我国国情的商品化采矿软 件已是当务之急、大势所趋。 1 .4 图形显示的特点 人类发明了三种重要的信息交流方式语言 L a n g u a g e 、音乐 M u s i c 和图画 M a p p i n g ,而图画是其中最古老的.观看先于语言,儿童学说话先观看,后辨认,再 山东科技大学硕士学位论文 绪论 说话。一幅画抵一千字 Ap i c t u r ei sw o r t h at h o u s a n dw o r d s 。人类对图形图像有一种本能 的亲近感。图形图像比一般的文字语言更易于理解。一般人对图形图像的理解是阅读文 字的5 万倍。图形图像是一种高效的信息交流模型。并且据统计,人获取的有关现实世界 的信息中,大约有9 0 %是以各式各样的二维或三维图形图像的形式取得的。人类的文字 语言具有几千年的发展历史,达到很高的水平,是人类目前主要的交流方式。但文字语 言从时空维上看,有它的局限性。文字语言是把空间维转化为时间维来表现现实世界。 例如,对一朵花的结构形态描述,必须以一定的逻辑顺序如从花瓣的结构、纹理、数量、 大小、颜色等逐一介绍。人阅读理解这种文字语言,是以串行逐步展开的章节方式进行 的。而图形图像方式,直接在空间维上展开,人是以并行的方式处理信息,如果配合计 算机的动画技术,即把“瞬间”保留的图形图像片段连结起来,在时间维上展开,那么 就实现了以时空四维方式表达客观世界。所以,图形图像动态方式具有时空动态现实世 界相同的维数,是一种较完善的信息表达和交流模式。随着科学技术发展和人类的进步, 图形图像信息交流模型 工具 越来越得到人们的重视和研究。电影电视的普及,现代商 品社会铺天盖地的广告影像,漫画书籍和杂志对发达国家图书市场的充斥 例如,日本图 书市场的三分之一已被漫画书籍和杂志占领 ,计算机图形动画技术的发展,网络可视化, 虚拟现实技术给人类带来的不可低估的影响,视觉文化的形成,都说明图形图像对现代 社会的影响和作用,也预示了人类未来信息社会交流和思维方式的趋势,对图形图像信 息交流方式更加偏爱。计算机技术,尤其是计算机图形学的发展是图形图像信息交流方 式普及与加强的重要推动力。 1 .5 科学计算可视化的介绍 科学计算可视化 V i s u a l i z a t i o ni nS c i e n t i f i cC o m p u t i n g 是发达国家在2 0 f i t 纪8 0 年 代后期提出并发展起来的一个新的研究领域。1 9 8 7 年2 月,美国国家科学基金会在华盛顿 召开了有关科学计算可视化的首次会议。会议指出科学家们不仅需要分析计算机得出 的计算数据,而且需要了解在计算过程中数据的变化,这些都要借助计算机图形学及图 像处理技术。因而“将图形和图像技术应用于科学计算是一个全新的领域”。会议将这 一领域定名为“V i s u a l i z a t i o n i nS c i e n t i f i cC o m p u t i n g ”,简称为“S c i e n t i f i cV i s u a l i z a t i o n ”。 科学计算可视化的技术实现过程一般分为以下几个步骤 1 过滤抽取感兴趣的数据; 些丕型堇盔兰亟圭兰焦堡塞 堕堡 2 映射创建几何原语,即把第一步获取的抽象数据映射成可以绘制成图的几何 原语,即点、线、面、体特征的数据; 3 绘制把几何原语转变为图形图像,即确定每一帧的颜色、透明性、纹理、阴 影等,并启动图形图像绘制过程; 4 显示图形图像并反馈如果研究人员发觉图形图像并不理想,则反复上述过程。 参见图1 .1 。 图1 .1 科学计算可视化的一般过程 F i g1 .1T h e P r o c e d u r eo f V i s u a l i z a t i o ni nS c i e n t i f i cC o m p u t i n g 地学可视化是把有关地学的数据转换成人的视觉可感受的计算机图形图像,并可进 行数据查询计算和地学分析的过程。地学可视化从简单的计算机画点、画线、区域填充、 颜色选择、符号设计等的地学数据二维图形显示分析发展到真实感三维图形显示,以及 现在的地学多维图解、多媒体技术、网络可视化、虚拟现实技术等。 1 .6 论文的研究目标 考虑到在生产实际中数据较难获取这一事实,本文提出了一个新的三维地层建模思 路即本文的创新点,就是以煤层底板等高线和地质柱状图为建模基础信息,进行三维重 构,利用三维可视化技术,将二维抽象的等高线信息以三维可视化的图形效果直观形象 地表达出来,为开采决策提供依据。对于二维的等高线点的数字化,我们是通过数字化 仪来实现的,其特点是数据获取相对比较容易,能够节省大量的费用。本课题的最终目 标是实现矿区的三维地层可视化,因此主要针对煤矿主采煤层、主采区域进行三维地层 可视化工作。 生丕壁堑丕兰亟圭兰鱼垒塞一堡i 蔓 1 .7 论文的主要内容 第一章绪论,主要介绍课题的来源及背景。 第二章O p e n G L 的编程环境介绍,主要介绍O p e n G L 的基本原理和渲染过程。 第三章三维地层建模,主要介绍岩层和断层的建模技术。 第四章三维地层的实现,讲述了如何实现地层的三维可视化。 第五章总结与展望,讲述了研究的成果与不足。 6 山东科技大学硕士学位论文 O p e n G L 的编程环境介绍 2 O p e n G L 的编程环境介绍 2 .1 O p e n G L 的发展历史 人们对三维图形技术的研究已经经历了一个很长的历程,而且涌现了许多三维图形 开发工具,其中S G I 公司推出的G L G r a p h i c sL i b r a r y 三维图形库表现尤为突出,它 易于使用且功能强大。随着i t g t 机技术的迅速发展,G L 已经进一步发展成为O p e n G L , 现在O p e n G L 被认为是高性能图形和交互式视景处理的标准。 O p e n G L 即开放性图形库O p e nG r a p h i c sL i b r a r y ,是一个三维的计算机图形和模型 库,最初是美国S G I 公司为图形工作站开发的一种功能强大的三维图形机制 或者说是 一种图形标准 。O p e n G L 被设计成独立于硬件,独立于窗口系统,在运行各种操作系统 的各种计算机上都可用,并能在网络环境下以客户,服务器模式工作,是专业图形处理、 科学计算等高端应用领域的标准图形库。利用O p e n G L 可以创作出具有照片质量的、独 立于窗口系统 W i n d o w i n gS y s t e m 、操作系统 O p e r a t i n gS y s t e m 和硬件平台的三维 彩色图形和动画。O p e n G L 的核心库包括1 0 0 多个用于3 D 图形操作的函数,主要负责处 理对象外形描述、矩阵变换、灯光处理、着色、材质等和三维图形图像密切相关的事情。 O p e n G L 工具库所包含的辅助函数是O p e n G L 基本函数的补充。这些函数的功能相对高 级,可以用于处理坐标变换、错误处理、绘制球体、锥体、柱体、曲线、曲面等图形实 体。 O p e n G L 可以运行在当前各种流行操作系统之上,如M a c O S 、U n i x 、W i n d o w s 9 5 /9 8 、 W i n d o w sN T /2 0 0 0 、L i n u x 、O P E N S t e p 、r S t h o n 、B e O S 等。各种流行的编程语言都可以 调用O p e n G L 中的库函数,如C 、c 十、F o r t r a n 、A d a 、J a v a 。O p e n G L 完全独立于各种 网络协议和网络拓扑结构。目前,M i c r o s o f t 公司、S G I 公司、A T T 公司的U n i x 软件实 验室、m M 公司、[ S E E 公司、S U N 公司、k i P 公司等几家在计算机市场占主导地位的大 公司都采用了O p e n G L 图形标准。值得一提的是,由于M i c r o s o f t 公司在W i n d o w s N T 和 W i n d o W S9 5 /9 8 中提供O p e n G L 标准,使得O p e n G L 在微机中得到了广泛应用。尤其是 在O p e n G L 三维图形加速卡和微机图形工作站推出后,人们可以在微机上实现C A D 设 计、仿真模拟、三维游戏等,从而使得应用O p e n G L 及其应用软件来创建三维图形变得 山东科技大学硕士学位论文O p e n G L 的编程环境介绍 更有机会、更为方便。 2 .2 O p e n G L 体系结构 O p e n G L 是一套图形标准,它严格按照计算机图形学原理设计而成,符合光学和视 觉原理,非常适合可视化仿真系统。 首先,在O p e n G L 中允许视景对象用图形方式表达,如由物体表面顶点坐标集合构 成的几何模型,这类图形数据含有丰富的几何信息,得到的仿真图像能充分表达出其形 体特征;而且在O p e n G L 中有针对三维坐标表示的顶点的几何变换,通过该变换可使顶 点在三维空间内进行平移和旋转,对于由顶点的集合表达的物体则可以实现其在空间的 各种运动。 其次,O p e n G L 通过光照处理能表达出物体的三维特性,其光照模型是整体光照模 型,它把顶点到光源的距离、顶点到光源的方向向量以及顶点到视点的方向向量等参数 代入该模型,计算顶点颜色。因此,可视化仿真图像的颜色体现着物体与视点以及光源 之间的空间位置关系,具有很强的三维效果。 另外,为弥补图形方法难于生成复杂自然背景的不足,O p e n G L 提供了对图像数据 的使用方法,即直接对图像数据读、写和拷贝,或者把图像数据定义为纹理与图形方法 结合在一起生成视景图像以增强效果。为增强计算机系统三维图形的运算能力,有关厂 家已研制出了专门对O p e n G L 进行加速的三维图形加速卡,其效果可与图形工作站相媲 美。 一个完整的窗口系统的O p e n G L 图形处理系统的结构为最底层为图形硬件,第二 层为操作系统,第三层为窗口系统,第四层为O p e n G L ,第五层为应用软件。见图2 .1 所示。 由于O p e n G L 是一个与平台无关的三维图形接口,操作系统必须提供像素格式管理 和渲染环境管理。下面以W i n d o w sN T 操作系统为例具体介绍O p e n G L 运行的体系结构。 O p e n G L 在W m d o w sN T 上的实现是基于C l i e n t /S e r v e r 模式的,应用程序发出O p e n G L 命 令,由动态链接库O p e n G L 3 2 .D L L 接收和打包后,发送到服务器端的W I N S R V .D L L ,然 后由它通过D D I 层发往视频显示驱动程序。如果系统安装了硬件加速器,则由硬件相关 山东科技大学硕士学位论文 O p e n G L 的编程环境介绍 应用转件, 彳F l O p e a G L 、 1F l窗口系统.. 1F i操作系统一j l 彳r l图形硬件一 图2 .1O p e n G L 图形处理系统的层次结构 F i g 2 .1T h eS t r u c t u r eo f t h eG r a p h i c S y s t e m 的D D I 来处理。O p e n G L /N T 的体系结构图如图2 .2 所示。从程序员的角度看,在编写基 于W i n d o w s 的O p e n G L 应用程序之前必须清除两个障碍,一个是O p e n G L 本身是一个复 杂的系统,这可以通过简化的O p e n G L 辅助库函数来学习和掌握;另个是必须清楚地 了解和掌握W i n d o w s 与O p e n G L 的接口。 图2 .2O p e n G L /N T 体系结构 F i g 2 .2T h e S y s t e mS t r u c t u r eo f O p e n G L /N T 9 l “东科技大学硕士学位论文o p e n G L 的编程环境介绍 O p e n G L 的绘图方式与W i n d o w s 的一般的绘图方式是不同的,其区别主要表现在以 下三个方面 1 W i n d o w s 采用的是G D I 绘图; 2 O p e n G L 采用的是渲染上下文R C R e n d e rC o n t e x t ,又称渲染描述表 绘图; 3 O p e n G L 使用的是特殊的像素格式。 在W i n d o w s 中使用G D I 绘图时必须指定在哪个设备上下文 D e v i c eC o n t e x t ,又称 设备描述表 中绘制,同样地,在使用O p e n G L 函数时也必须指定一个所谓的渲染上下 文。正如设备上下文D C 要存储G D I 的绘制环境信息如笔、刷和字体等,渲染上下文 R C 也必须存储O p e n G L 所需的渲染信息如像素格式等。渲染上下文主要由以下六个w g l 函数来管理,下面分别对其进行介绍。 1 .H G L R C w g l C r e a t e C o n t e x tf f I D Ch d c l 该函数用来创建一个O p e n G L 可用的渲染上下文R C 。H d c 必须是一个合法的支持至 少1 6 色的屏幕设备描述表D C 或内存设备描述表的句柄。该函数在调用之前,设备描述 表必须设置好适当的像素格式。成功创建渲染上下文之后,h d c 可以被释放或删除。函 数返回N U L L 值表示失败,否则返回值为渲染上下文的句柄。 2 .B 0 0 L w g l D e l e t e C o n t e x t H G L R Ch g l r c 该函数删除一个R C 。一般应用程序在删除R C 之前,应使它成为非现行R C 。不过, 删除一个现行R C 也是可以的。此时,O p e n G L 系统冲掉等待的绘图命令并使之成为非 现行R C ,然后删除之。注意在试图删除一个属于别的线程的R C 时会导致失败。 3 .H G L R C w g l G e t C u r r e n t C o n t e x t v o i d 该函数返回线程的现行R C ,如果线程无现行R C 则返回N U L L 。 4 .H D C w g l G e t C u r r e n t D C v o i d 该函数返回与线程现行R C 关联的D C ,如果线程无现行R C 则返回N U L L 。 5 .B O O L w g l M a k e C u r r e n t a D Oh d c ,H G L R Ch g l r c 该函数把h d c 和h g l r c 关联起来,并使h g l r c 成为调用线程的现行R C 。如果传给h g l r c 的值为N U L L ,则函数解除关联,并置线程的现行R C 为非现行R C ,此时忽略h d c 参数。 传给该函数的h d c 可以不是调用w g l C r e a t e C o n t e x t 时使用的值,但是,它们所关联 的设备必须相同并且拥有相同的像素格式。注意,如果h g k c 是另一个线程的现行R C , 则调用失败。 6 .B O O Lw g l U s e F o n t B i t m a p s r t D Ch d c ,D W O R Dd w F i r s t ,D W O R Dd w C o u n t , D W O R Dd w B a s e 1 0 些查壁蓬奎兰婴主堂堡鲨墨堡 鱼 堑堡堑堡坌竺 该函数使用h d c 的当前字体,创建一系列指定范围字符的显示表。可以利用这些显 示表在O p e n G L 窗口画G D I 文本。如果O p e n G L 窗口是双缓冲的,那么这是往后缓冲区 中画G D I 文本的唯一途径。 一般地,在使用单个R C 的应用程序中,在相应W M C R E A T E 消息时创建R C ,当 W M _ C L O S E 或W M _ D E S T R O Y 到来时再删除它。在使用O p e n G L 命令往窗口中绘图之 前,必须先建立一个R C ,并使之成为现行R C 。O p e n G L 命令无需提供R C ,它将自动使 用现行R C 。若无现行R C ,O p e n G L 将简单地忽略所有的绘图命令。 一个R C 是指现行R C ,这是针对调用线程而言的。一个线程在拥有现行R C 进行绘 图时,别的线程将无法同时绘图。一个线程一次只能拥有一个现行R C ,但是可以拥有 多个R C ;一个R C 也可以由多个线程共享,但是它每次只能在一个线程中是现行R C 。 在使用现行R C 时,不应该释放或者删除与之关联的D C 。如果应用程序在整个生命期内 保持一个现行R C ,则应用程序也一直占有一个D C 资源。注意,W i n d o w s 系统只有有限 的D c 资源。 下面介绍两种管理R C 与D c 的方法。 方法一R C 由W MC R E A T E 消息响应时铋建,包建后立即释放D E ;当W M _ P A I N T 消息到来时,程序再获取D C 句柄,并与R C 关联起来,绘图完成后,立即解除R C 与 D C 的关联,并释放D C ;当W M _ D E S T R O Y 消息到来时,程序只需简单地删除R C 即 可。如图2 .3 所示。 W M C R E A T E - ‘ G e tt h eD C b 鳃8 { 贰g £l 黛£ ’ lC r e a t e t h eR C p I IR e l e a s e 廿1 eD Ch a n d /e r R e l e a s e D c v 南一 W Mp A l N T o G e tt h eD C 廷鹊Q 姒.Q 魅Q 9 “ M a k et h eK Cc u r r e “t √ D r a ww t h O p e n G L , M a k et h eR Cn o tC u r r e n t R e l e a s et h eD C h a n d l e 融d £鹦够一‘ W M _ D E ,S 豫o n D e l e t e 廿1 eR C “ 图2 .3 R C 与D C 的管理方法一 F i g2 .3T h e F t r s tM a n a g e m e n to f R Ca n dD C 1 1 蔓型垫垄兰堡圭兰壁笙茎2 1 1 1 竺塑塑堡堕垄垒塑 方法二R C 在程序开始时创建并使之成为现行R C 。它将保持为现行R C 直至程序 结束。相应地,G e t D C 在程序开始时调用,R e l e a s e D C 在程序结束时才调用。此种方法 的好处是在响应W M _ P A I N T 消息时,无需调用十分耗时的w g l M a k e C u r r e n t 函数,一般 它要消耗几千个时钟周期。如图2 .4 所示。如果应用程序需要使用动画或实时图形,建 议采用第二种方法。 图2 .4 R C 与D C 的管理方法二 b i g 2 .4T h eS e c o n d M a n a g e m e n t o f R Ca n dD C 2 .3 O p e n G L 像素格式管理 2 .3 .1 W i n d o w s 下的调色板 O p e n G L 可以使用1 6 色、2 5 6 色、6 4 K 和1 6 M 真彩色。真彩模式下不需要调色板, 而在1 6 色模式下根本不可能得到较为满意的效果,因此对O p e n G L 而言,调色板只有在 2 5 6 色模式下才有意义。我们知道,W i n d o w s 把调色板分为系统调色板和逻辑调色板。 每个应用程序都拥有一套自己的逻辑调色板 或使用缺省调色板 ,当该应用程序拥有 键盘输入焦点时可以最多使用从1 6 M 种色彩中选取的2 5 6 种颜色 2 0 种系统保留颜色 和2 3 6 种自由选取的颜色 ,而失去焦点的应用程序可能会有某些颜色显示不正常。系 1 2 些蔓登蔓奎兰堡主兰堡堡奎塑 里 塑塑堡堡堡坌塑 统调色板由W i n d o w s 内核来管理,它是由系统保留的2 0 种颜色和经仲裁后各个应用程 序设置的颜色组成,并与硬件的2 5 6 个调色板相对应。应用程序的逻辑调色板与硬件的 调色板没有直接的对应关系,而是按照最小误差的原则映射到系统调色板中,因此即使 应用程序自由选取2 5 6 种不同颜色构成自己的逻辑调色板,也有可能某些颜色显示到屏 幕上时是一样的。当应用程序的窗口接收到键盘输入焦点时,W i n d o w s 会向它发送一条 W M Q U E R Y N E W P A L E T T E 消息,让它设置自己的逻辑调色板,此时W i n d o w s 会在系 统调色板中尽量多地加入该应用程序需要的颜色,并生成相应的映射关系。接着W i n d o w s 会向系统中所有的覆盖型窗口和顶级窗口 包括拥有键盘输入焦点的窗E 1 发送一条 W M _ P A L E T I E C H A N G E D 消息,让它们设置逻辑调色板和重绘客户区,以便能更充分 地利用系统调色板,已拥有键盘输入焦点的窗口不应再处理这条消息,以避免出现死循 环。 2 .3 .2 O p e n G L 的颜色表示与转换 O p e n G L 内部用浮点数来表示和处理颜色,红绿蓝和A l p h a 值这四