『壹』 c# 用directSound 採集語音 創建waveformat的問題
Microsoft.DirectX.DirectSound.WaveFormat Format = new Microsoft.DirectX.DirectSound.WaveFormat();
『貳』 C++ 關於directsound編程,同時播放多首音樂,wav格式
可以參考這
可能遇到的問題,比如偵測wav文件是用什麼格式放的音頻
『叄』 C# DX編程:未能載入文件或程序集"Microsoft.DirectX.DirectSound.dll"或它的某一個依賴項
解決方法:
將應用程序生成為Any CPU就可以了
反之,如果系統是64位的Win7,就應該將新項目的生成目標平台改為x86 。
『肆』 DirectX編程中遇到的有關DXTraceA的問題。學習《游戲編程入門(3版)》第11章聲音時運行代碼出現錯誤。
解決辦法:在代碼最前邊 加入
#pragma comment(lib,"dxerr.lib")
問題原因:函數符號未找到,是因為你沒有鏈接dxerr.lib靜態庫。這個庫裡面含有這個函數的符號。
補充:看你的問題是2013年的,現在有些晚了,不過後來人可以借鑒。
『伍』 編寫游戲的原理問題
編游戲建議用vc++,網上的常式最多。
如果有什麼關於3D的技術問題,請發信息到我的網路消息。
其實任何一種編程語言都一樣,誰說只能操作文本文件和二進制文件了?只要調用豐富的函數(API),就可以變出豐富多彩的程序。
言歸正傳,3D編程主要是用directx的函數庫,聲音directsound,3D是direct3d,視頻directshow,direct的功能很強大,建議你到書店買一本入門書,而且熟悉數學中的矢量、矩陣的運算也很重要,3D中都是頂點,矢量,矩陣用來移動,旋轉等變換模型。
我最開始看的是 directx 9.0 3d 游戲開發編程基礎
『陸』 本人是一個老程序員,目前想學習3D編程,請問3D方面的基礎知識可以看哪本書不拘泥於編程語言,求經典。
1、WINDOWS 3D編程
《WINDOWS 3D編程》主要內容:Learn to create 3D graphics for Windows-from programming legend Charles Petzold.Get a focused introction to programming 3D graphics with the Windows Presentation Foundation 3D API. Complementing his book Applications =Code + Markup, award-winning author Charles Petzold builds on XAML essentials, teaching you how to display and animate 3D graphics under the Microsoft .NET Framework 3.0 and Windows VistaTM. You'll get expert guidance and code samples in XAML and Microsoft Visual C#-helping you master the skills you need to create high-fidelity user interfaces.
Discover how to:
Define complex 3D obiects with triangle meshes
Enhance the illumination of 3D surfaces with light and shading effects
Color 3D figures with gradients, bitmaps, and drawings
Add animation with transforms and vertex manipulation
Represent linear, affine, and camera transforms by using matrices
Calculate vector angles, angles of rotation, and axes of rotation
Generate triangle meshes efficiently by using C# code
Express rotation by using quaternion computation
Provide a user interface for manipulating and drawing 3D figures
目錄
--------------------------------------------------------------------------------
1 Lights! Camera! Mesh Geometries!
Sorting Out the Classes
2 Transforms and Animation
3 Axis/Angle Rotation
4 Light and Shading
SpotLight and PointLight
5 Texture and Materials
6 Algorithmic Mesh Geometries
7 Matrix Transforms
8 Quaternions
9 Applications and Curiosa
/******************************************************************************************************************/
2、java 3d編程實踐:網路上的三維動畫
目錄:
第1章 全世界都能看到的三維動畫
1. 1 初識java 3d
1. 1. 1 網路時代需要java 3d
1. 1. 2 java 3d是什麼
1. 1. 3 java 3d的應用場合舉例
1. 2 java 3d運行及開發環境的安裝
1. 2. 1 最新版java 3d的安裝
1. 2. 2 老版本的安裝步驟
1. 3 體驗java 3d編程
1. 3. 1 第一個java 3d程序:hello
1. 3. 2 java 3d的編程思想
1. 4 在網上發布java 3d程序
1. 5 java 3d的網路資源和學習資料
1. 5. 1 主要網站
1. 5. 2 各種文檔
1. 5. 3 軟體資源
第2章 基本形體的生成
2. 1 基本立體形體的生成
2. 1. 1 從一個簡單的程序說起
2. 1. 2 創建場景圖
2. 1. 3 高層java 3d類
2. 1. 4 編寫java 3d程序的一般步驟
2. 1. 5 激活和編譯
2. 1. 6 內容子圖的創建
2. 1. 7 mycone程序中使用的java 3d類
2. 1. 8 幾何體工具類
2. 1. 9 高級主題:基本幾何體
2. 1. 10 能力和性能
2. 2 點. 線. 面的生成
2. 2. 1 幾何體類
2. 2. 2 點的生成
2. 2. 3 直線的生成
2. 2. 4 面的生成
2. 3 曲面的可視化
2. 4 2d和3d文本的生成
2. 4. 1 2d文本的生成
2. 4. 2 3d文本的生成
2. 5 appearance. shape3d和bounds對象的使用
2. 5. 1 appearance對象
2. 5. 2 shape3d對象
2. 5. 3 bounds對象
第3章 形體的組合
3. 1 形體的分組
3. 1. 1 group對象
3. 1. 2 branchgroup對象和orderedgroup對象
3. 1. 3 decalgroup對象
3. 1. 4 switch對象
3. 1. 5 sharedgroup對象
3. 2 幾何變換
3. 2. 1 transformg
/*********************************************************************************************************/
3、Directx 3D 游戲編程實用教程
目錄
--------------------------------------------------------------------------------
第一篇 d游戲編程基礎
第1章 windows編程基礎
1.1 簡單的windows應用程序
1.1.1 創建windows應用程序項目
1.1.2 配置、生成及運行項目
1.2 windows應用程序結構
1.2.1 數據類型
1.2.2 入口函數
1.2.3 注冊窗口類
1.2.4 創建並顯示窗口
1.3 windows消息機制
1.3.1 消息隊列
1.3.2 消息循環
1.3.3 消息處理
1.4 匈牙利命名法
1.4.1 類型和常量的命名
1.4.2 變數的命名
1.4.3 函數和參數的命名
1.4.4 類的命名
1.5 本章小結
第2章 direct3d編程基礎
2.1 directx概述
2.1.1 directx的發展過程
2.1.2 directx的組成部分
2.1.3 direct3d與com
2.1.4 direct3d介面對象
2.2 direct3d渲染流水線
2.2.1 渲染流水線
2.2.2 靈活頂點格式
2.2.3 d3d中的顏色
2.2.4 d3d中的圖元
2.3 direct3d程序結構
2.3.1 簡單的direct3d應用程序
2.3.2 創建direct3d介面對象
2.3.3 獲取硬體設備信息
2.3.4 創建direct3d設備介面
2.3.5 開始direct3d圖形繪制
2.3.6 結束並清理對象資源
2.4 頂點緩存
2.4.1 創建頂點緩存
2.4.2 訪問頂點緩存
2.4.3 使用頂點緩存繪制圖形
2.4.4 頂點緩存的繪制示例
2.5 索引緩存
2.5.1 創建索引緩存
2.5.2 訪問索引緩存
2.5.3 使用索引緩存繪制圖形
2.5.4 索引緩存的繪制示例
2.6 direct3d渲染狀態
2.6.1 剔除狀態
2.6.2 著色狀態
2.6.3 填充狀態
2.7 本章小結
第3章 基本的數學基礎
3.1 坐標空間
3.1.1 d笛卡兒坐標系
3.1.2 多坐標系統
3.2 向量
3.2.1 向量的基本概念
3.2.2 向量的基本運算
3.2.3 d3d中的向量
3.3 矩陣
3.3.1 矩陣的基本概念
3.3.2 矩陣的基本運算
3.3.3 矩陣的基本變換
3.3.4 d3d中的矩陣
3.4 平面及射線
3.4.1 平面的定義
3.4.2 點與平面的關系
3.4.3 射線的定義
3.4.4 射線與平面的關系
3.5 空間坐標變換
3.5.1 世界變換
3.5.2 取景變換
3.5.3 投影變換
3.5.4 視口變換
3.6 空間坐標變換示例
3.7 本章小結
第二篇 d游戲圖形渲染
第4章 光照與材質
4.1 光照模型
4.1.1 環境光
4.1.2 漫反射光
4.1.3 鏡面反射光
4.2 光源類型
4.2.1 點光源
4.2.2 方向光
4.2.3 聚光燈
4.3 物體的材質
4.3.1 d3d材質
4.3.2 頂點法線
4.4 光照與材質示例
4.5 本章小結
第5章 紋理映射
5.1 紋理映射基礎
5.1.1 紋理坐標
5.1.2 創建紋理
5.1.3 啟用紋理
5.1.4 創建紋理示例
5.2 紋理過濾
5.2.1 最近點采樣過濾
5.2.2 線性紋理過濾
5.2.3 各向異性過濾
5.2.4 多級漸進過濾
5.2.5 紋理過濾示例
5.3 紋理定址
5.3.1 重復定址
5.3.2 鏡像定址
5.3.3 夾取定址
5.3.4 邊框顏色定址
5.3.5 紋理定址示例
5.4 紋理包裝
5.4.1 紋理包裝原理
5.4.2 紋理包裝示例
5.5 本章小結
第6章 網格模型
6.1 網格模型基礎
6.1.1 網格的子集及屬性
6.1.2 網格的鄰接信息
6.1.3 網格的創建及繪制
6.1.4 創建及繪制網格示例
6.2 網格的優化及克隆
6.2.1 優化網格
6.2.2 克隆網格
6.3 x文件格式分析
6.3.1 模板的定義
6.3.2 常用的模板類型
6.3.3 x文件的結構
6.4 從x文件創建網格
6.4.1 載入網格模型數據
6.4.2 獲取紋理和材質信息
6.4.3 繪制網格模型
6.4.4 讀取x文件示例
6.5 創建漸進網格模型
6.5.1 id3dxpmesh介面
6.5.2 創建並繪制漸進網格
6.5.3 創建漸進網格示例
6.6 d3d中的幾何體
6.7 本章小結
第7章 深度、融合及模板
7.1 深度測試
7.1.1 深度緩存
7.1.2 深度測試
7.1.3 深度測試示例
7.2 融合技術
7.2.1 融合因子
7.2.2 alpha來源
7.2.3 啟用alpha融合
7.2.4 alpha融合示例
7.3 模板技術
7.3.1 模板緩存
7.3.2 模板測試
7.3.3 更新模板緩存
7.4 鏡面效果
7.4.1 鏡面成像原理
7.4.2 實現鏡面效果
7.5 本章小結
第8章 hlsl語言基礎
8.1 hlsl概述
8.1.1 可編程管線
8.1.2 hlsl工作模型
8.2 簡單的hlsl程序
8.2.1 編寫hlsl代碼
8.2.2 hlsl關鍵字和保留字
8.2.3 hlsl預處理指令
8.2.4 輸入、輸出結構
8.2.5 hlsl入口函數
8.3 hlsl基本語法
8.3.1 hlsl中的變數
8.3.2 hlsl中的函數
8.4 d3d與hlsl交互
8.4.1 編譯著色器程序
8.4.2 獲取常量的句柄
8.4.3 設置常量的值
8.5 hlsl程序示例
8.6 本章小結
第9章 著色器與效果
9.1 頂點著色器
9.1.1 創建頂點聲明
9.1.2 使用頂點著色器
9.1.3 頂點著色器示例
9.2 漸變動畫效果
9.2.1 漸變動畫原理
9.2.2 實現漸變動畫
9.3 像素著色器
9.3.1 創建像素著色器
9.3.2 使用像素著色器
9.4 多重紋理混合
9.4.1 hlsl采樣器
9.4.2 多重紋理坐標
9.4.3 啟用多重紋理
9.4.4 多重紋理示例
9.5 效果框架
9.5.1 通道與手法
9.5.2 著色器內置對象
9.5.3 效果中的渲染狀態
9.5.4 創建效果框架
9.5.5 效果中常量的設置
9.5.6 使用效果框架
9.5.7 效果框架示例
9.6 本章小結
第三篇 d游戲輸入控制
第10章 directx輸入控制
10.1 directinput介面
10.2 使用directinput介面
10.2.1 directinput的初始化
10.2.2 創建設備介面對象
10.2.3 設置數據格式
10.2.4 設置協作級別
10.2.5 設置特殊屬性
10.2.6 獲取、輪詢設備
10.2.7 讀取設備數據
10.3 使用directinput處理鍵盤
10.3.1 初始化鍵盤設備介面
10.3.2 獲取輸入的鍵盤數據
10.3.3 鍵盤輸入控制示例
10.4 使用directinput處理滑鼠
10.4.1 在d3d中移動滑鼠
10.4.2 初始化滑鼠設備介面
10.4.3 獲取滑鼠的移動位置
10.4.4 滑鼠輸入控制示例
10.5 使用directinput處理游戲桿
10.5.1 游戲桿及其控制原理
10.5.2 初始化游戲桿設備介面
10.5.3 讀取游戲桿的狀態數據
10.5.4 游戲桿輸入控制示例
10.6 本章小結
第四篇 d游戲應用編程
第11章 攝像機、地形及天空
11.1 虛擬攝像機
11.1.1 攝像機的屬性
11.1.2 攝像機的變換
11.1.3 攝像機的實現
11.1.4 攝像機應用示例
11.2 三維地形系統
11.2.1 地形高度圖
11.2.2 頂點的計算
11.2.3 索引的計算
11.2.4 地形的繪制
11.2.5 地形類的實現
11.2.6 地形繪制示例
11.3 球形天空頂
11.3.1 頂點的計算
11.3.2 索引的計算
11.3.3 天空的繪制
11.3.4 天空類的實現
11.3.5 天空繪制示例
11.4 本章小結
第12章 文字、拾取及碰撞檢測
12.1 字體及文本繪制
12.1.1 繪制2d文本
12.1.2 繪制3d文本
12.1.3 文本繪制示例
12.2 拾取技術
12.2.1 網格外接體
12.2.2 拾取技術原理
12.2.3 拾取應用示例
12.3 碰撞檢測
12.3.1 邊界球碰撞檢測
12.3.2 aabb碰撞檢測
12.3.3 obb樹碰撞檢測
12.3.4 aabb碰撞檢測示例
12.4 本章小結
第13章 骨骼動畫
13.1 x文件中的骨骼信息
13.1.1 骨骼蒙皮信息
13.1.2 骨骼層次信息
13.1.3 模型動畫信息
13.2 載入骨骼動畫數據
13.2.1 擴展結構體
13.2.2 載入x文件
13.2.3 callocatehierarchy類
13.2.4 生成蒙皮網格
13.3 頂點混合技術
13.3.1 頂點混合原理
13.3.2 索引頂點混合
13.4 骨骼動畫的繪制
13.4.1 開啟頂點混合
13.4.2 更新骨骼矩陣
13.4.3 繪制骨骼動畫
13.5 骨骼動畫控制器
13.5.1 使用動畫控制器
13.5.2 平滑過渡動畫集
13.6 骨骼動畫示例
13.7 本章小結
第14章 實時陰影
14.1 平面陰影的原理
14.1.1 點光源平面陰影
14.1.2 方向光平面陰影
14.2 平面陰影的實現
14.2.1 計算陰影矩陣
14.2.2 平面陰影的繪制
14.2.3 平面陰影示例
14.3 體積陰影的原理
14.3.1 模型陰影體
14.3.2 陰影錐的計算
14.4 體積陰影的實現
14.4.1 體積陰影的繪制
14.4.2 體積陰影示例
14.5 陰影貼圖的原理
14.6 本章小結
第15章 廣告牌技術與粒子系統
15.1 廣告牌技術
15.1.1 廣告牌的原理
15.1.2 廣告牌的實現
15.1.3 廣告牌示例
15.2 粒子系統
15.2.1 粒子系統的原理
15.2.2 粒子系統的實現
15.2.3 粒子系統的更新
15.2.4 粒子系統的繪制
15.3 粒子系統示例
15.3.1 煙花示例
15.3.2 噴泉示例
15.4 本章小結
第16章 霧化及lod地形
16.1 霧化效果
16.1.1 霧化混合因子
16.1.2 頂點霧化
16.1.3 像素霧化
16.1.4 范圍霧化
16.2 lod地形原理
16.2.1 lod四叉樹演算法
16.2.2 lod地形的實現
16.2.3 節點剔除原理
16.2.4 節點簡化准則
16.2.5 地形裂縫的處理
16.2.6 地形的更新及繪制
16.3 lod地形示例
16.4 本章小結
第五篇 d游戲音頻輸出
第17章 direct3d音頻控制
17.1 音頻文件格式
17.1.1 音頻的基本概念
17.1.2 wav音頻格式
17.1.3 midi音頻格式
17.1.4 mp3音頻格式
17.2 使用directsound處理音頻
17.2.1 directsound的結構
17.2.2 directsound的初始化
17.2.3 directsound音頻緩沖
17.2.4 向緩沖區中寫入數據
17.2.5 播放聲音及音頻控制
17.2.6 用directsound反饋信息
17.2.7 directsound應用示例
17.3 使用directmusic處理音頻
17.3.1 directmusic的結構
17.3.2 開始使用directmusic
17.3.3 載入、操作midi段
17.3.4 directmusic應用示例
17.4 使用directshow處理音頻
17.4.1 directshow的工作原理
17.4.2 directshow的初始化
17.4.3 載入流媒體數據
17.4.4 控制流媒體的播放
17.4.5 directshow應用示例
17.5 本章小結
第六篇 d游戲網路通信
第18章 direct3d網路控制
18.1 了解網路互聯
18.1.1 網路會話模型
18.1.2 定址與通信協議
18.2 directplay概述
18.2.1 創建和管理會話
18.2.2 directplay傳輸協議
18.2.3 directplay網路對象
18.2.4 玩家與游戲大廳
18.3 客戶/服務會話
18.3.1 初始化網路對象
18.3.2 選擇服務提供者
18.3.3 使用directplay地址
18.3.4 建立客戶/服務會話
18.3.5 發送、接收數據
18.3.6 創建並使用分組
18.3.7 結束及終止會話
18.4 游戲大廳的支持
18.4.1 游戲大廳的結構
18.4.2 實現游戲大廳客戶端
18.4.3 實現支持大廳的程序
18.5 客戶/服務會話示例
18.5.1 創建服務端程序
18.5.2 創建客戶端程序
18.6 本章小結
附 錄
附錄a directx9 sdk的安裝與配置
a.1 安裝directx
a.2 配置開發環境
a.3 瀏覽directx示例
附錄b dxut程序框架介紹
b.1 創建dxut項目
b.2 dxut框架的初始化
b.3 創建應用程序窗口
b.4 創建direct3d設備
b.5 dxut的事件處理
b.5.1 框架事件
b.5.2 設備事件
b.5.3 消息事件
b.6 dxut的錯誤處理
『柒』 DirectSound庫中有從.wav音頻文件讀出PCM數據的API嗎
Direct X是微軟公司提供給游戲編寫人員的一套應用程序編程介面(APIs),它為編寫高效、實時的應用程序提供了有力的支持。因此,有必要將這個介面封裝到Delphi的組件庫中。Direct X SDK是面向Visual C/C++和Watcom C/C++的,因而使用Object Pascal直接存取Direct X SDK,將帶來諸多不便。但我們可先在VC下將Direct X介面封裝成動態鏈接庫,然後在Delphi下通過該動態鏈接庫去存取Direct X。
『捌』 網易雲輸出Directsound和Waveout有什麼區別
先放結論:
ASIO:硬體支持+對應驅動程序
DS:兼容性最好,一般也是默認的。
WASAPI:是Vista之後的,較佳選擇輸出方式。
再來詳細看:
ASIO、WDM都是指音頻通道,就是音頻數據走的路。
ASIO指的是ASIO音頻通道;WDM是指WDM類型的音頻通道,具體包括WaveOut、DirectSound(簡稱DS)、Kernel Streaming(簡稱KS),Windows Vista和7 還比XP多了WASAPI。
具體體現在各個音頻播放、錄音軟體的設置里,比如Foobar2000等。
打形象的比喻,音頻數據是車,操作系統的音頻部分是一條路。
WaveOut、DirectSound(簡稱DS)就好比最一般的公用車道,大家可以並行走(程序可以一起發聲),但要受到一些旁車的影響。
Kernel Streaming(簡稱KS),WASAPI好比在這條操作系統音頻之路上劃出一條專用道,只允許一個車走,雖然還走著一條路,但沒有干擾了,程序獨占。
ASIO就好比我壓根不走操作系統那條路了,我自己專門再修一條新路,自己走自己的,不過操作系統公共音頻部分了。
其實ASIO最有價值的地方在於錄音,它的最大特點在於聲音數據在通道里通行快,延時小(音頻傳輸是需要若干毫秒的時間的,對於精確錄音和聲音混音合成,很是敏感)。
DS就是DirectSound的首字母縮寫,DirectSound是DirectX的一部分,而DirectX則是被很多游戲玩家所熟知,DirectX是由微軟創建的多媒體編程介面,由C++編程語言實現,遵循COM。DirectX是Windows平台下最通用最成熟的介面,多媒體軟體大多採用了DirectX API。通過DS輸出可為開發者和用戶帶來許多便利,FB2K下使用DS輸出則是可以實現漸響、淡出等功能,還能支持音效卡所帶的音效,所以小編並不是推薦各位網友使用DS輸出來播放無損音樂。
ASIO全稱Audio stream input output,是德國Steinberg公司所提出的,主要目的是為了解決PC音頻方面的輸入輸出的延遲問題,由於系統自帶的音頻輸出方式一般延遲都大於10ms,雖然10ms並不算長,但仍舊是無法滿足專業領域的嚴苛需求的,於是ASIO便針對延遲問題進行了深度設計,使其輸出輸入延遲能夠低於10ms,甚至還能低於1ms,完全能夠滿足專業音樂製作的需求,聆聽音樂選擇該方法輸出,主要目的肯定不是降低延遲了,而是為了能避開系統重采樣、音效以及規格化處理,由於ASIO低延遲設計,所以在輸出過程當中不會引入任何處理,但ASIO缺點也是很明顯的,ASIO是需要驅動層面的支持,並不是所有音效卡都帶有ASIO驅動,雖然有第三方驅動,但效果可能不盡如人意。
WASAPI全稱Windows Audio Session API,是微軟Vista之後所引入的,Vista當中微軟重寫了音頻架構,提出了一套新的通用架構,Universal Audio Architechture(UAA),並增加了全新的WASAPI,WASAPI為程序開發者提供了兩種模式,共享模式(Shared Mode)和獨占模式(Exclusive Mode),使用獨占模式時可以和ASIO輸出達到相似的效果,此時音效卡被某一程序獨占,只有該程序能使用音效卡,其他程序均不能佔用音效卡,而且獨占模式時,系統不也會干涉音頻流,直接將其交給音效卡驅動進行輸出,音效卡自帶的音效以及系統重采樣均不會起到作用,可輸出純凈的聲音,
【在過去,音效卡廠商例如Creative、Realtek等,為了讓使用者透過自家編寫的控制台來進行各方面關於音頻設備的設定,所以編寫驅動程序時,必須在Kernel Mode(內核模式)這個層級撰寫相當多的代碼來提供調用,使得使用者的操作設定能夠直達硬體層。然而這對於系統的穩定度是一個很不好的影響,稍微有一點點意外狀況,會因為這些功能跑在Kernel Mode而導致系統死機。在 Vista 時代有所改善了。Microsoft要求所有音頻設備的廠商必須遵循UAA的架構來開發驅動程式,也為了配合UAA架構,Vista可以說是整個翻新了音訊處理流程,許多原本需要寫在Kernel Mode的音效卡功能,需要改寫到User Mode(用戶模式)去,進而增加了系統穩定度。】
KS(Kernel Streaming)輸出是一種比較老舊的輸出方式,主要使用在沒有WASAPI的XP以及之前版本的Windows系統當中,KS最早出現在Windows 98當中,它允許程序員能夠為多媒體設備實時的處理音頻流,效果和ASIO、WASAPI類似,都可以避開系統對音頻的音效處理或是規格化,從Vista開始KS已經逐漸被WASAPI所取代了,目前支持的軟體並不多。
『玖』 哎。。。DirectX編程問題,高分
寫在前面:可能是我們的教程寫得太少,以至一直有會員和朋友要問些入門的問題,比如「為什麼我的DIRECTX常式無法編譯?」,「為什麼dtil.cpp文件無法編譯?」。為了方便入門者,也省下自己回答的時間,還是在這里作一說明。其實這些東西在Directx的文檔里都有,只是很多人沒有耐心或者沒有時間去讀E文的文檔吧。
一、安裝DXSDK。說些廢話,因為可能有朋友SDK都沒聽說過。簡言之SDK是提供給程序開發者的一些公有介面和文檔。比如你開發DIRECTX程序,就需要DXSDK,它裡面有完整的DIRECTX說明文檔(如果你有決心讀一遍,勝過你買任何DX教材),DIRECTX例子,INCLUDE文件,LIB庫,這些都是你寫DIRECTX程序時所必須的。
如何找DXSDK?VSTUDIO98裡面附有DX5的SDK版本,如果一時找不到其他版本的話,就湊合用它吧。我建議使用的是DX7SDK,在《中國計算機報》1999年11月光碟有(其他什麼地方有我不太清楚)大小約100多M吧。
用SDK的什麼版本?現在DIRECTX7大概所有用戶都有RUNTIME版本,而DIRECTX8版本剛出來,很多玩家機器里並沒有。因此我個人建議程序員先不要使用DX8,否則你的程序別人可能無法運行。畢竟從DX7轉移到DX8不會很難,到時候再轉也不遲。如果將來玩家手裡DX8普及了,你就應該使用DX8SDK,依此類推。
二、復制文件。指的是將SDK的文件復制到VC目錄下(這里不考慮BCB等編譯器)。
(1)將(DX5以上版本)SDK文件夾下/INCLUDE文件夾中的所有.H文件復制到VC文件夾的/INCLUDE文件夾中。覆蓋原來(DX5版本)的文件
(2)將SDK文件夾下/LIB文件夾中所有.LIB文件復制到VC文件夾的/LIB文件夾中,覆蓋原來的文件。LIB文件夾下有個BORLAND文件夾,裡面的東西是給BCB用的,用VC的話不需要復制它們。
三、添加頭文件。如果你沒有#include <ddraw.h>這樣的句子,編譯的時候會對你引用的DX成員報一個未命名錯誤。這個似乎是常識,不多說了。
重點說一下如何找不太用到的類的頭文件,比如DSOUND,DMUSIC,DPLAY用哪些頭文件?我方法是這樣,如果程序不認「LPDIRECTSOUND」這樣的名字,用WINDOWS的查找文件功能,在VC的INCLUDE文件夾中查找所有包含這個詞的文件,很快就知道該用哪個.h了。
四、編譯時加入鏈接。僅以上幾步是不夠的,VC預設的連接庫不包括DX的LIB庫,你在使用DDRAW,DSOUND等介面時,編譯時會出現LINKER錯誤提示。要解決這個問題必須加入連接。
加入方法:VC的/PROJECT/SETING菜單,跳出一個屬性表單,在裡面選中LINK卡片,在LIB一欄中加入:DXGUID.LIB(所有DX程序必須),DDRAW.LIB(DDRAW編譯必須),DSOUND.LIB(DSOUND編譯必須)。這些LIB名以空格隔開。
注意:DMUSIC和D3D等請自己去試,如果一直不成功,你將所有DX的LIB都填進去試一試,再逐個減,最後能得到需要的最少庫文件。另外,應該將DEBUG和RELEASE同時設置,屬性表左邊有一個ALL CONFIG的選項,先將它選中再設。
五、MFC中使用dtil.h和dtil.cpp。這兩個文件是初學常用的,因為裡面有載入BMP文件的函數。(其實我現在還在用,比如裡面的DDSETCOLORKEY函數),但在MFC中直接用它們不容易一次成功,我說說自己的方法:
(1)先將這兩個文件復制到你的工程文件夾中;
(2)在需要使用裡面函數的CPP文件的頭部加上#include "dtil.h";
(2)在dtil.cpp文件頭部加上#include "stdafx.h";
----------------------------------------------
不過,你現在的做法是要買動態連接庫的文件?我感覺你不太適合在這里買。
如果要使用這些功能的話,現在catch 3D、繪聲繪影這些軟體都已經實現了,在網上都可以下載的到的。
寫在前面:可能是我們的教程寫得太少,以至一直有會員和朋友要問些入門的問題,比如「為什麼我的DIRECTX常式無法編譯?」,「為什麼dtil.cpp文件無法編譯?」。為了方便入門者,也省下自己回答的時間,還是在這里作一說明。其實這些東西在Directx的文檔里都有,只是很多人沒有耐心或者沒有時間去讀E文的文檔吧。
一、安裝DXSDK。說些廢話,因為可能有朋友SDK都沒聽說過。簡言之SDK是提供給程序開發者的一些公有介面和文檔。比如你開發DIRECTX程序,就需要DXSDK,它裡面有完整的DIRECTX說明文檔(如果你有決心讀一遍,勝過你買任何DX教材),DIRECTX例子,INCLUDE文件,LIB庫,這些都是你寫DIRECTX程序時所必須的。
如何找DXSDK?VSTUDIO98裡面附有DX5的SDK版本,如果一時找不到其他版本的話,就湊合用它吧。我建議使用的是DX7SDK,在《中國計算機報》1999年11月光碟有(其他什麼地方有我不太清楚)大小約100多M吧。
用SDK的什麼版本?現在DIRECTX7大概所有用戶都有RUNTIME版本,而DIRECTX8版本剛出來,很多玩家機器里並沒有。因此我個人建議程序員先不要使用DX8,否則你的程序別人可能無法運行。畢竟從DX7轉移到DX8不會很難,到時候再轉也不遲。如果將來玩家手裡DX8普及了,你就應該使用DX8SDK,依此類推。
二、復制文件。指的是將SDK的文件復制到VC目錄下(這里不考慮BCB等編譯器)。
(1)將(DX5以上版本)SDK文件夾下/INCLUDE文件夾中的所有.H文件復制到VC文件夾的/INCLUDE文件夾中。覆蓋原來(DX5版本)的文件
(2)將SDK文件夾下/LIB文件夾中所有.LIB文件復制到VC文件夾的/LIB文件夾中,覆蓋原來的文件。LIB文件夾下有個BORLAND文件夾,裡面的東西是給BCB用的,用VC的話不需要復制它們。
三、添加頭文件。如果你沒有#include <ddraw.h>這樣的句子,編譯的時候會對你引用的DX成員報一個未命名錯誤。這個似乎是常識,不多說了。
重點說一下如何找不太用到的類的頭文件,比如DSOUND,DMUSIC,DPLAY用哪些頭文件?我方法是這樣,如果程序不認「LPDIRECTSOUND」這樣的名字,用WINDOWS的查找文件功能,在VC的INCLUDE文件夾中查找所有包含這個詞的文件,很快就知道該用哪個.h了。
四、編譯時加入鏈接。僅以上幾步是不夠的,VC預設的連接庫不包括DX的LIB庫,你在使用DDRAW,DSOUND等介面時,編譯時會出現LINKER錯誤提示。要解決這個問題必須加入連接。
加入方法:VC的/PROJECT/SETING菜單,跳出一個屬性表單,在裡面選中LINK卡片,在LIB一欄中加入:DXGUID.LIB(所有DX程序必須),DDRAW.LIB(DDRAW編譯必須),DSOUND.LIB(DSOUND編譯必須)。這些LIB名以空格隔開。
注意:DMUSIC和D3D等請自己去試,如果一直不成功,你將所有DX的LIB都填進去試一試,再逐個減,最後能得到需要的最少庫文件。另外,應該將DEBUG和RELEASE同時設置,屬性表左邊有一個ALL CONFIG的選項,先將它選中再設。
五、MFC中使用dtil.h和dtil.cpp。這兩個文件是初學常用的,因為裡面有載入BMP文件的函數。(其實我現在還在用,比如裡面的DDSETCOLORKEY函數),但在MFC中直接用它們不容易一次成功,我說說自己的方法:
(1)先將這兩個文件復制到你的工程文件夾中;
(2)在需要使用裡面函數的CPP文件的頭部加上#include "dtil.h";
(2)在dtil.cpp文件頭部加上#include "stdafx.h";