【VB开源代码栏目提醒】:本文主要为网学会员提供“VB中D3D程序的开发方法 - 技术总结”,希望对需要VB中D3D程序的开发方法 - 技术总结网友有所帮助,学习一下!
VBD3D 陆斌 海军航空工程学院自动控制系(烟台 264001) 本文通过对Visual Basic及DirectX的相应特点介绍分析,提出了用该语言完成D3D程序设计的方法步骤,并介绍了相应的示例应用程序。
VB 多媒体动画 DirectX D3D 中图分类号:TP393 文献标识码 A The way about the D3D program base on the
VB Lu Bin Navy Aeronautics Engineering Institute Department of Automatic Control Engineering Yantai 264001 Abstract By analyzing the characters about the Visual Basic and the DirectX this paper presents the ways and methods of the developing the D3D program based on Visual Basic language. And the result is also presented with the example programs. Key
words
VB multimedia animation DirectX D3D 1 多媒体技术是计算机的一种高级功能,它可以使得图像、声音根据程序、操作人员的控制进行显示、播放,这种图像和声音等信息综合在一起的表现方式就是多媒体动画。
多媒体动画必须具有一定的速度保证其连续性,以满足人的视觉滞留效应所需要的效果,即在视觉效果上显得流畅逼真。
由于动画的图像数据量非常大,因此在动画
设计时必须充分考虑到对这些大量数据的处理对动画速度的影响,尤其是在大的屏幕窗口条件(全屏幕)下的图像处理速度直接影响着多媒体动画的效果。
因此,早期真正流畅的多媒体动画程序一般只有少数游戏或专业仿真程序开发人员才能编写,而且在PC机上运行的这种动画都基本是以为DOS平台的。
目前随着计算机软硬件的迅速发展,在Windows平台上开发流畅的多媒体动画程序已不再是游戏的专利了,尤其是Microsoft推出的DirectX(其中包含D3D)多媒体接口后,由于目前普通配置的
计算机均可以满足其对硬件的要求,使得开发高质量多媒体程序比以前容易了许多。
但同时带来了的另一个
问题,DirectX主要是针对精通Visual C的高级开发程序人员的接口,这在某种程度上限制了其应用的广泛性。
Visual Basic(以下简称
VB)语言是目前流行的编程语言中最容易掌握的,拥有广大的使用群体,虽然它对于程序的底层操作功能相对逊色,但随着
VB6.0以上的版本的出现,它提供了对DirectX功能的支持,使得在
VB中开发高质量的多媒体动画成为现实。
本文通过分析
VB和DirectX的相应特点,提出和用
VB开发DirectX中的D3D程序的步骤方法。
2
VB VB编程语言是由Microsoft公司提供的一种可视化开发工具,目前的最新版本为
VB.net,用于Windows2000以上的操作系统。
Basic指的是BASIC(Beginners All-Purpose Symbolic Instruction Code)语言,一种在计算机技术发展历史上应用地最为广泛的语言。
Visual Basic在原BASIC语言的基础上进一步发展,至今包含了数百条语句、函数及关键词,初学者只要掌握几个关键词就可以建立实用的应用程序。
尽管Visual Basic在技术上并不领先,但对于初学者和非专业开发人员,
VB还是最好的。
因为它有几个明显的优点: 有近100万字的联机帮助,而且中文版的
VB均已汉化,大大提高了开发效率; 半智能化的编码器,能帮助完成
代码和即时查询函数的用法,绝大部分的函数语句都有其相应的示例; Microsoft公司的大力推广。
靠Basic起家的Microsoft对Basic总是大力扶持,在它的Office的系列中把Basic作为一个内置的VBA,就意味者你如果熟悉Visual Basic便能在Word、Excel、Access等产品中进行二次开发。
3 D3D D3D是DirectX的一个重要组件,了解D3D必须首先了解DirectX。
DirectX是Microsoft公司推出的一种Windows环境下标准的高性能游戏、多媒体开发工具包,它的SDK从7.0版本开始提供对
VB的支持,目前的版本为8.0版。
使用DirectX开发的程序能够与操作系统默契地配合成为“真正”的桌面应用
程序;可以利用硬件厂商提供的驱动程序接口,充分最佳的设备性能;通过直接底层硬件操作,实现最快速、短延时、设备无关的底层接口。
DirectX采用了组件对象模型(COM)标准,因此对于不同对象的版本可以有不同的接口,这使得用DirectX开发的程序在未来将得到完全兼容和支持的保证。
DirectX需要以设备无关的方法提供设备相关的性能,所以DirectX的结构是由两个驱动程序构成:硬件抽象层(HAL)和硬件模拟层(HEL),当Direct对象创建时,会同时建立一张“兼容表”,其中记录了当前硬件系统支持的功能,当DirectX需要实现某个功能时就
查询该表,得到硬件对功能的支持信息,如果功能能够得到硬件支持,则向HAL发出求,以得到硬件的支持,否则向HEL发出请求,以模拟方式实现功能。
DirectX主要由以下几部分组成: DirectDraw:直接访问图形硬件,管理用于显示的内存显示内存和
系统内存,提供高速图形和页面切换动画; Direct3D(D3D):提供3D硬件接口; DirectInput:主要支持输入服务,同时支持输出设备; DirectSound:提供3D声音效果,管理声卡内存; DirectPlay:提供
网络多人游戏的通讯、组织功能; DirectSetup:自动安装DirectX驱动程序。
同时DirectX也有其明显的局限性:许多人(尤其是初学者)不易掌握DirectX的帮助文件,例程缺少详细的说明;使用者需要具有熟练的C的基础;DirectX的SDK对除了Visual C++以外的编程语言的支持较少等。
4 VBD3D 开发D3D程序,首先需要设置相应的编程环境。
由于开发DirectX需要使用其自身提供的SDK(本文中以DirectX 7为例),因此在编程之前,要安装DirectX SDK。
安装完毕后可以看到计算机的“开始”→“程序” →“Microsoft DirectX 7 SDK”。
在DirectX 7.0以上的版本中提供了对
VB的支持。
下面以在
VB(本文以
VB6.0为例)中用立即模式创建渲染一个三角形的程序为例该程序可以实时渲染三角形的几何体并围绕着y轴递增地旋转,说明开发D3D程序的基本过程方法。
4.1 创建一个窗体 这个步骤用于设计显示的窗口的特征:名称;窗口大小;位置;形状等。
在此例程中窗体命名为“三角形渲染”。
为了显示应用程序窗口,在Form_Load过程中应包含下列语句: Me.Show 4.2 初始化系统对象 这个步骤用于从Form_Load过程调用InitDDraw应用程序定义的子过程中实现系统的初始化。
4.2.1初始化DirectDraw 创建DirectDraw对象并设置应用程序的协作级,开始执行初始化的
代码如下: Private Sub InitDDraw g_dd.SetCooperativeLevel Me.hwdDDSCL_NORMAL 4.2.2设置DirectDraw表面 创建的表面被应用程序用于渲染和显示场景。
创建一个提供显示的主表面的
代码如下: g_ddsd.lFlagsDDSD_CAPS g_ddsd.ddsCaps.lCapsDDSCAP_PRIMARYSURFACE Set g_ddsPrimaryg_dd.CreatSurfaceg_ddsd 4.2.3初始化Direct3D 通过创建一个Idirect3D7对象来初始化Direct3D对象,Idirect3D7对象用于创建渲染场景所需要的其它所有对象。
创建Idirect3D7的
代码如下: Sub InitD3D Dim d3d As DDSURFACEDESC2 Set d3dg_dd.GetDirect3D 检查显示模式并创建一个渲染设备的
代码如下: g_dd.GetDisplayMode ddsd If ddsd.ddpfPixelFormat.lRGBBitCount