加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

【VB】VB中DirectX绘图_DX基础以及绘图设备建立

发布时间:2020-12-16 23:02:04 所属栏目:大数据 来源:网络整理
导读:DirectX 函数库,就是 Microsoft 为开发游戏软件与高效率多媒体应用程序所开发出来的 API 。包含许多函数库模块,让以 Window 系统为平台的游戏或多媒体应用能获得更高的执行效率、强化 3D 图形成像以及丰富的声音效果。同时 DirectX 为程序开发人员提供了一

DirectX函数库,就是Microsoft为开发游戏软件与高效率多媒体应用程序所开发出来的API。包含许多函数库模块,让以Window系统为平台的游戏或多媒体应用能获得更高的执行效率、强化3D图形成像以及丰富的声音效果。同时DirectX为程序开发人员提供了一套硬件驱动标准,不需要重新编写硬件驱动程序。

DirectX插件:运行期函数库和软件开发工具包(SDK)组成。用户执行DirectX技术所开发的应用时,程序会调用DirectX运行期的函数库来进行相关硬件的驱动控制(Win NT4.0后的操作系统都包含了运行期函数库)。Win DirectX SDK主要API控件:Direct3DD3D3D游戏开发标准,3D图像的处理工作。游戏运行时,需要3D绘图,D3D控件向显卡发出成像要求,让显卡完成图像的贴图操作。DirectDraw 负责2D图像处理,DX8.0以后两个绘图处理控件就合并到DirectGraphics里了。DirectSound 负责音频的处理,提供声卡的共同驱动标准,让应用程序可直接控制硬件的音频单元。DirectMusic 支持MIDI格式文件播放。DirectShow 多媒体文件播放的主要控件,比DsoundDmusic支持更多媒体格式。DirectInput 处理系统输入设备管理与控制,不通过操作系统直接对设备存取。DirectPlay 8.0新加入负责网络数据传输的控制与管理。

由于9.0以后的版本仅支持VB.NET,只能安装VB支持的最高版本8.X

VB中对DirectX插件的引用,工程-引用-选择DirectX 8 for Visual Basic Type Library

DirectGraphics中取消了2D图像绘制的DirectDraw控件,通过Direct3D来进行所有图像的绘制操作。使用D3D控件绘图一般流程是:

1.使用Direct3D,首先声明Direct3D对象(Direct3D8),D3D显示设备对象(Direct3DDevice8),图像显示模式(D3DDISPLAYMOD),D3D相关参数设置对象(D3DPRESENT_PARAMETERS),用于硬件信息保存的D3DCAPS8数据类型变量。

2.D3D是控制显示硬件绘图操作的主要成员,D3D对象的建立:

Set myD3D = myDX.Direct3Dcreate()

3.在窗口中使用D3D的绘图功能,首先要用D3D myD3D内置的GetAdapterDisplayMode命令将窗口显示模式信息保存到所设置的D3DDISPLAYMODE数据类型变量myMode中。

myD3D.GetAdapterDisplayMode D3DADAPTER_DEFAULT,myMode

4.可以利用D3DPRESENT_PARAMETERS数据类型变量myPP改变D3D对象内所设置的数据值:

Windowed是否为窗口模式,0代表全屏显示。

SwapEffect设置换页模式

BackBufferFormat设置背景缓冲区格式(BackBufferCount背景缓冲区数量,BackBufferHeightWidth背景缓冲区高度和宽度)。

5.获取硬件支持内容,计算机的硬件设备都不同,在配置D3Ddevice显示设备对象之前需要先获得用户显示硬件的支持信息。可以通过D3D对象的getDeviceCapsh函数将硬件支持信息保存到D3DCAPS数据类型变量myCap中。两个参数分别为设备名称和设备类型

myD3D.GetDeviceCaps D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,myCap

D3DADAPTER_DEFAULT,默认的计算机显示设备标识名称。

D3DDEVTYPE_HAL,指定设备的使用类型为硬件层。(_REF软件模拟 _SW不支持)。

然后将getDeviceCaps获得的支持信息设置到myflag上。

6.建立D3Ddevice8对象,D3Ddevice8负责对指定显卡执行各种图形显示的控制,一个对象相对于一个显卡的控制接口。一般一个pc装一个显示输出设备所以一般建立一个D3Ddevice8对象。

Set myDev = myD3D.CreateDevice(Adapter,DeviceType,FocusWindow,BehaviorFlags,PresentationParameters)

Adapter为使用的适配器工程。同获取硬件信息时的设备名称。

DeviceType为设备类型,同获取硬件信息时参数。

FocusWindow 指定Device对象使用的窗口。

BehaviorFlags 为对象行为控制标识myFlag

PresentationParameters 保存D3D对象

Set myDev = myD3D.CreateDevice(D3DADAPTER_DEFAULT,hWnd,D3DCREATE_SOFTWARE_VERTEXPROCESSING,myPP)

7.场景在BeginSceneEndScene两命令直接进行,所有图像的加载,移动,显示删除等控制设置。

'场景安排设定

myDev.BeginScene

....

myDev.Clear 0,ByVal 0,D3DCLEAR_TARGET,&H0&,1#,0 '清除画面

myDev.SetTexture 0,myBMP 设置指定图像

myDev.DrawPrimitiveUP D3DPT_TRIANGLESTRIP,2,myVertex(0),mySize

'绘出文字?
myD3DX.DrawText myFont,&HFFFF0000,myStr1,myArea1,DT_RIGHT
myFont.DrawTextW myStr2,-1,myArea2,DT_LEFT,&HFF00FF00

....

'此处仅列举几种绘制操作 可以加载的代码

myDev.EndScene

8.'输出显示,利用D3Ddev对象内置的Present命令将前面场景中设置的操作依次输出示。

myDev.Present ByVal 0,ByVal 0

参数:SourceRect源矩阵,DestRect目标矩阵。用户换页状态除了D3DSWAPEFFECT_COPY或在COPY_VSYN时都设为ByVal 0DestWindowOverride目标窗口重载模式,为0代表使用D3DPERSENT_PARAMETERS变量设置的hWndDeviceWindow属性。DirtyRegion一般不使用设0

9.一般在程序结束时需要将建立的对象释放以免浪费资源。

Set myDX = Nothing

Set myD3D = Nothing

Set myDevice = Nothing

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读