‘壹’ 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";