国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

用VB編寫DirectX7.0游戲(上)

2019-11-18 17:50:02
字體:
供稿:網(wǎng)友
DirectX7.0終于出現(xiàn)了,同前面DirectX6相同,版本7也帶了一個龐大(129M)的SDK開發(fā)庫,同DirectX6SDK庫相比,DirectX7的SDK庫提供了以下新的功能:
*對于VisualBasic的支持。用戶可以使用類庫在VisualBasic環(huán)境下開發(fā)基于DirectX的程序。
*提供更多DirectX3D立即模式(ImmediateMode)下的API函數(shù),以支持DirectX7中新的3D特效,包括立體環(huán)境映射、頂點混合等。
*DirectMusic支持DownLoadableSoundLevel2標(biāo)準(zhǔn)。
*DirectInput支持8按鍵的游戲桿設(shè)備,同時支持Microsoft的力反饋搖桿。SDK庫提供了讀取力反饋效果文件的方法。同時提供了ForceEditor程序來建立效果。
對于VB愛好者來說,新的SDK庫終于提供了完整的對VB的支持,現(xiàn)在終于可以使用VisualBasic來編寫DirectX的程序了。
一、DirectXSDK庫的安裝
微軟提供的SDK庫是一個“重”達(dá)129M的dx7sdk.exe自解壓縮文件,你可以上網(wǎng)下載或者從配套光盤上獲得這個文件。雙擊文件就會彈出Winzip自解壓縮對話框。在彈出的WinZipSelf-ExtractDK7SDK.EXE窗口中輸入解壓縮文件的路徑,然后點擊“Unzip”按鈕解壓縮SDK文件:
要注意的是,dx7sdk.exe解壓縮之后的體積有220M,硬盤比較緊張的讀者在解壓縮之前首先看看你的硬盤的容量是否足夠。
解壓縮完畢之后,進(jìn)入解壓縮的目錄中,雙擊Setup.exe文件就可以安裝DirectX7.0SDK文件了。安裝是采用標(biāo)準(zhǔn)的InstallShield界面,玩Windows的讀者應(yīng)該對這種安裝界面駕輕就熟,只要跟著安裝提示一步一步地走就可以了。安裝完畢之后,安裝程序會在開始菜單中添加一個MicrosoftDirectX7SDK的菜單,其中包括DirectX7設(shè)置工具、VB范例和SDKHelp等菜單項。
現(xiàn)在開始進(jìn)入VB,開始我們的DirectX的VB編程。在這里我們使用的是VB6企業(yè)版(英文)。Windows98中文版。
打開VB,點擊菜單中的PRoject|References項,在ObjectLibrary列表中會有一項:DirectX7.0ForVisualBasicTypeLibrary列表項,這個就是DirectX7.0VB類庫,選中該項,再選“ok”按鈕,就可以將庫加入工程文件中。
二、DirectX編程初步
1DirectX7對象
DirectX7對象是DirectXVB對象中其他所有對象的服務(wù)和起始對象,這個對象包含了建立諸如DirectDraw、Direct3D、DirectSound、DirectInput等對象的方法。同時該對象還包含了一系列的三維控件頂點和距陣的操作函數(shù)以及一些DirectX系統(tǒng)函數(shù)。在VB中可以通過Dim...New來直接定義和初始化一個DirectX7對象,例如:
DimDirectXAsNewDirectX7
當(dāng)建立成功一個DirectX7對象之后,就可以使用該對象的DirectDrawCreate、Direct3DRMCreate等方法建立DirectDraw、Direct3D對象了。
DirectX7對象范例1:獲得系統(tǒng)中的DirectDraw和DirectSound驅(qū)動
建立一個新的工程文件,點擊菜單中的Project|References項,在ObjectLibrary列表中選中DirectX7.0ForVisualBasicTypeLibrary項后按確定按鈕(以下的程序都需要這個步驟,后面將不再做說明)。然后在Form1中加入一個ListBox控件和四個CommandButton控件,在Form1的代碼窗口中加入以下代碼:
OptionExplicit
DimDirectXAsNewDirectX7
DimDDEnumAsDirectDrawEnum
DimDDSoundAsDirectSoundEnum

PrivateSubCommand1_Click()
DimCount,iAsInteger
SetDDEnum=DirectX.GetDDEnum
Count=DDEnum.GetCount
List1.Clear
Fori=1ToCount
List1.AddItemDDEnum.GetDescription(i)
Nexti
SetDDEnum=Nothing
EndSub

PrivateSubCommand2_Click()
DimCount,iAsInteger
SetDDEnum=DirectX.GetDDEnum
Count=DDEnum.GetCount
List1.Clear
Fori=1ToCount
List1.AddItemDDEnum.GetName(i)
Nexti
SetDDEnum=Nothing
EndSub

PrivateSubCommand3_Click()
DimCount,iAsInteger
SetDDSound=DirectX.GetDSEnum
Count=DDSound.GetCount
List1.Clear
Fori=1ToCount
List1.AddItemDDSound.GetDescription(i)
Nexti
EndSub

PrivateSubCommand4_Click()
DimCount,iAsInteger
SetDDSound=DirectX.GetDSEnum
Count=DDSound.GetCount
List1.Clear
Fori=1ToCount
List1.AddItemDDSound.GetName(i)
Nexti
EndSub

PrivateSubForm_Load()
Command1.Caption=“DirectDraw驅(qū)動描述”
Command2.Caption=“DirectDraw驅(qū)動名稱”
Command3.Caption=“DirectSound驅(qū)動描述”
Command4.Caption=“DirectSound驅(qū)動名稱”
EndSub

PrivateSubForm_Unload(CancelAsInteger)
SetDirectX=Nothing
EndSub
運行程序,分別點擊不同的按鈕,在列表框中就會出現(xiàn)相應(yīng)的設(shè)備驅(qū)動名和描述。
2DirectDraw7對象
DirectDraw是一個與Windows圖形系統(tǒng)接口(GDI)相兼容的直接操作顯示設(shè)備的軟件接口。DirectDraw提供與硬件無關(guān)性的同時允許直接操作顯存。程序只要使用一些基本的標(biāo)準(zhǔn)硬件約定,如:RGB及YUV色彩格式及解析度。你無須調(diào)用特殊的過程來使用顯存塊移動(Blitter)及調(diào)色板。使用DirectDraw,你可簡單操作顯存,完全使用各種硬件特性而不必理會各種不同硬件之間的差異。
2.1建立DirectDraw對象
DirectDraw7對象是DirectX7中的DirectDraw對象,你需要首先建立一個DirectX7對象,然后使用該對象的DirectDrawCreate方法來建立DirectDraw7對象。例如:
DimDXAsNewDirectX7
DimDDrawAsDirectDraw7
SetDDraw=DX.DirectDrawCreate(“”)
2.2建立協(xié)作層
當(dāng)建立了一個DirectDraw對象之后,首先要設(shè)定DirectDraw的協(xié)作層。實現(xiàn)的方法是調(diào)用DirectDraw對象的SetCoOperativeLevel函數(shù)。該函數(shù)的定義是:
object.SetCooperativeLevel(hdlAsLong,flagsAsCONST_DDSCLFLAGS)
其中參數(shù)hdl指定程序的窗口句柄,參數(shù)flag決定程序運行的方式,函數(shù)調(diào)用
DDraw.SetCooperativeLevelMe.hWnd,DDSCL_NORMAL
將使程序運行于普通的協(xié)作層即窗口模式之下。在這種協(xié)作層你無法改變主平面調(diào)色板或進(jìn)行頁交換,因為程序可以使用多窗口。而函數(shù)調(diào)用
DDraw.SetCooperativeLevelMainForm.hWnd,DDSCL_EXCLUSIVEOr_
DDSCL_FULLSCREEN
將使程序運行于全屏幕模式之下。在全屏幕協(xié)作模式之下你可以完全使用硬件的一切。在這個模式之下,你可以設(shè)置使用定義及動態(tài)調(diào)色板,改變顯示分辨率及進(jìn)行頁交換。->


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 隆昌县| 周宁县| 双流县| 丽江市| 秦皇岛市| 雷山县| 富川| 竹北市| 昌吉市| 南康市| 新蔡县| 西丰县| 玉龙| 奉贤区| 昌乐县| 南漳县| 潞城市| 皋兰县| 明溪县| 济宁市| 宁都县| 高要市| 乌拉特前旗| 武安市| 兴业县| 晋州市| 岱山县| 富蕴县| 铜陵市| 竹山县| 潮州市| 临沧市| 横峰县| 嘉兴市| 左云县| 芜湖县| 绥宁县| 梓潼县| 天柱县| 文登市| 上杭县|