MFC框架下基于Vega的视景驱动程序设计研究.pdf
《MFC框架下基于Vega的视景驱动程序设计研究.pdf》由会员分享,可在线阅读,更多相关《MFC框架下基于Vega的视景驱动程序设计研究.pdf(4页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、现代计算机(总第二六九期)MODERN CO MPUTER2 0 0 7.1 0开发案例0引 言视景仿真是仿真动画的高级阶段,也是虚拟现实技术的重要表现形式,它是使用户身临其境的交互式仿真环境,实现了用户与该环境直接进行自然交互 1。视景仿真的实时渲染依赖于图形库的支持,常见的最底 层 的 图 形 库 有 两 种:O p e n G L和D i r e c t X,其 中O p e n G L是跨平台的图形标准库,大多数渲染软件都是采用O p e n G L作为底层图形库 2。在O p e n G L的基础上,有许多用于虚拟现实系统的视景开发软件,比较常见的有:Wo r l dT o o l
2、K i t、O p e n G V S和V e g a,其中WT K和O p e n G V S对虚拟场景的控制更为灵活,但需要的编程工作也更多,开发过程更复杂,而V e g a提供有图形化的虚拟场景配置工具L y n X可以使开发过程大大简化,复杂的控制功能也可通过V e g a提供的A P I来实现。在工程应用上M u l t i G e n-P a r a d i g m公司的V e g a软件环境已经是视景仿真业界的主流开发平台3。1 V e g a软件介绍V e g a是美国M u l t i G e n-P a r a d i g m公司推出的先进的软件环境,它主要用于虚拟现实技术
3、中的实时视景仿真、声音仿真以及科学计算可视化等领域,它支持快速复杂的视觉仿真程序,为用户提供一种处理复杂仿真时间的便捷手段。V e g a把常用的软件工具和高级仿真功能结合起来,可使用户以简单的操作迅速地创建、编辑和运行复杂的仿真程序。由于V e g a大幅度地减少了源代码,从而大大地提高了工作效率,可以迅速创建各种实时交互的三维环境,以满足各种用户的需要 4。V e g a在实时视景仿真和虚拟现实中的应用中,是一个高性能的软件环境和工具包,其中包括了图形用户界面即L y n X、V e g a库和可调用的C函数的头文件。任何一个V e g a应用程序在开始运行时都要对各种参数提供初始值,在运
4、行期间要保持或不断修改参数值,这些数据信息都存放在一个应用程序定义的文件中,英文为A p p l i c a t i o n D e f i n i t i o n F i l e s,简称A D F文件。L y n X界面实际上是创建和修改A D F文件的一个编辑器。2 MF C框架下开发V e g a应用程序V e g a起初是应用在S G I U N I X平台上的开发工具,技术基本成熟后才移植到Wi n d o w s平台 5,移植最基本目标就是确保己存在于U N I X平台上的V e g a程序能够容易地在P C平台上应用,所以其程序设计风格仍保持与U N I X程序设计相近,在Wi
5、 n d o w s平台下Wi n 3 2控制台对U N I X的兼容性比较好,大多数Wi n-d o w s下的V e g a开发都是在Wi n 3 2控制台下进行的。对于Wi n d o w s平台上的V e g a应用程序开发,有3种开发环境分别为:Wi n 3 2控制台程序、传统的Wi n-d o w s应用程序(带有Wi n M a i n()函数)和基于M F C(M i c r o s o f t F o u n d a t i o nC l a s s e s)的应用程序 6。2.13种开发环境比较分析基于Wi n 3 2控制台的程序没有特定的窗口函数,V e g a函数库中提
6、供的窗口和事件管理的函数远不能MF C框架下基于 V e g a 的视景驱动程序设计研究李明泽,毛学刚,范文义(东北林业大学,哈尔滨1 5 0 0 4 0)摘要:关键词:程序开发;V e g a;MF C;视景驱动介绍V e g a视景开发软件的体系结构和在Wi n d o w s平台上V e g a可选择3种开发环境,根据实践详细地论述了基于MF C和V e g a应用程序设计的方法,以及MF C框架下开发V e g a视景驱动所遇到的问题及解决方法。该研究能够使开发者较容易的开发出基于MF C的V e g a应用程序,并为其提供很好的借鉴和帮助。收稿日期:2 0 0 7-0 8-0 3修稿
7、日期:2 0 0 7-0 9-3 0作者简介:李明泽(1 9 7 9-),男,在读博士,助教,研究方向为遥感和地理信息系统!MODERN CO MPUTER2 0 0 7.1 0现代计算机(总第二六九期)开发案例满足实际应用的要求,而且Wi n 3 2控制台下实现网络数据传输等操作相当繁琐,基于传统的Wi n d o w s应用程序开发也是一项繁琐的过程,很多基础工作(例如窗口、菜单的创建)都需要自己动手逐行编写代码,这导致工作量增大,而使用M F C框架开发程序能有效应用套接字等封装类,从而极大地减小程序开发工作量。相对而言,应用M F C类库是Wi n d o w s平台下开发具有良好图形
8、用户界面应用程序最方便的途径,V i s u a l C+6.0中的M F C类库已是一个相当成熟的类库,其中基于文档/视图结构的应用程序框架,己成为开发Wi n d o w s应用程序的主流框架结构。因此,选择把M F C作为V e g a应用程序的开发环境将是主流。2.2MF C框架下开发V e g a应用程序创建M F C框架下的V e g a应用程序主要有两种方法分别为:修改由向导生成的主视图类创建V e g a应用程序和用V e g a提供的z s V e g a V i e w类创建V e g a应用程序。下面就分别介绍这两种方法。(1)通过z s V e g a V i e w类
9、开发M F C的应用程序为了便于开发者开发基于M F C的V e g a应用程序,V e g a通过继承M F C中的C V i e w类而派生出一个子类z s V e g a V i e w,这个z s V e g a V i e w类提供了启动一个V e g a线程最基本的功能,还以虚函数的形式定义了特定的应用要进行操作的通用接口,因此用户的应用程序只需从z s V e g a V i e w派生出新类,并根据需要重载必要的虚函数即可。从设计模式的观点来看,它是采用了模板方法模式(T e m p l a t e M e t h o d)。模板方法模式是一种类行为模式,其意图是定义一个操作算
10、法的骨架,而将一些具体步骤延迟到子类中去,这是代码重用的一种基本技术。通过采用模板方法将用户开发一个基于M F C应用的工作量减少到最低,这是V e g a系统提供的方法,其初衷是好的,但由于M F C类库并不是一个支持多线程访问的类库。用户派生的子类通过在O n I n i t i a l U p d a t e()函数中调用基类的r u n-V e g a()来启动V e g a线程,并将派生类的指针作为参数传给新启动的子线程,这就是通过z s V e g a V i e w类开发M F C的应用程序存在的问题。由于源代码中的类空间和线程运行时的线程空间是可以相互交迭的,也就是说不同的线程
11、在运行时可以访问相同的类的实例对象,而M F C类库本身设计时并未考虑到多线程访问,因此在线程间传递视类C V i e w将是危险的,实践也证明了这一点,在单文档多视中在V e g a线程中改变文档数据后通过调用函数U p d a t e A l l V i e w s()来更新所有相应的视图时旋即出现了访问保护异常的错误。(2)通过修改主视图类开发M F C的应用程序为了既能保持由模板方法设计带来的好处,又能够避免出现以上的错误,最好的方法就是通过修改由应用程序向导生成的主视图类来创建M F C框架下的V e g a应用程序。在Wi n d o w s环境下V e g a图形绘制工作由一个独
12、立线程进行,所以,在应用程序向导产生的M F C程序的主视图类中,应调用线程函数A f x B e-g i n T h r e a d()来开启一个线程,其函数的原形如下:C Wi n T h r e a d*A f x B e g i n T h r e a d(A F X _ T H R E A D P R O Cp f n T h r e a d P r o c,L P V O I Dp P a r a m,i n t n P r i o r i t y=T H R E A D _ P R I O R I T Y _ N O R M A L,U I N Tn S t a c k S i
13、z e=0,D WO R Dd w C r e a t e F l a g s=0,L P S E C U R I T Y _ A T T R I B U T E Sl p S e c u r i t y A t t r s=N U L L);其中:p f n T h r e a d P r o c为指向工作者线程控制函数的指针,该线程控制函数必须声明为如下所示的形式:U I NT M y Wo r k e r T h r e a d F u n c t i o n(L P V O I D p T h r e a d-P a r a m);因此,为了实现单独的V e g a线程,还应在主视图类
14、中加入一个线程控制函数r u n V e g a P r o c(),其代码如下:U I N Tr u n V e g a P r o c(L P V O I Dp P a r a m)C M F C V e g a V i e w*h P a r e n t=(C M F C V e g a V i e w*)p P a r a m;v g I n i t Wi n S y s(A f x G e t I n s t a n c e H a n d l e(),h P a r e n t-G e t-S a f e H w n d();h P a r e n t-s e t V e g a
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MFC 框架 基于 Vega 驱动程序 设计 研究
限制150内