我要发帖 回复

正式会员

2

主题

43

积分

0

专家分

:

私信
发表时间 : 2008-12-29 21:43:10 | 浏览 : 1915    评论 : 9
3D声音的静态库封装了基于DirectX Sound的通用3D声音函数,很简单,直接调用下面几个函数就可以了

[cpp]////////////////////////////////////////////////////////////////////////////////
// 函数名 : Init3dSounds
// 功能描述 : 初始化DirectSound对象及3d音频
// 输入 :
// 参数1 : HWND hWnd。播放声音的窗口的句柄
// 返回值 : BOOL。为真成功,否则失败
// 输出 :
////////////////////////////////////////////////////////////////////////////////
BOOL Init3dSounds(HWND hWnd);


////////////////////////////////////////////////////////////////////////////////
// 函数名 : LoadSoundToBufi
// 功能描述 : 从WAV文件装入声音到缓冲区iBuf
// 输入 :
// 参数1 : char* FileName。WAV文件名
// 参数2 : DWORD iBuf。缓冲区索引
// 返回值 : BOOL。为真成功,否则失败
// 输出 :
////////////////////////////////////////////////////////////////////////////////
BOOL LoadSoundToBufi(char* FileName, DWORD iBuf);

////////////////////////////////////////////////////////////////////////////////
// 函数名 : UpdateListener
// 功能描述 : 修改Direct3D Sound的倾听者的位置和方向
// 输入 :
// 参数1 : float xPos。Direct3D Sound的倾听者的位置
// 参数2 : float yPos。
// 参数3 : float zPos。
// 参数4 : float xFVel。Direct3D Sound的倾听者的前方向
// 参数5 : float yFVel。
// 参数6 : float zFVel。
// 参数7 : float xTVel。Direct3D Sound的倾听者的上方向
// 参数8 : float yTVel。
// 参数9 : float zTVel。
// 返回值 : void。
// 输出 :
////////////////////////////////////////////////////////////////////////////////
void UpdateListener(float xPos=0.0, float yPos=0.0, float zPos=0.0,
float xFVel=0.0, float yFVel=0.0, float zFVel=1.0,
float xTVel=0.0, float yTVel=1.0, float zTVel=0.0);

////////////////////////////////////////////////////////////////////////////////
// 函数名 : PlaySndAtPos
// 功能描述 : 在指定位置播放3d声音
// 输入 :
// 参数1 : int i。所播放3DSound在缓冲区的索引
// 参数2 : float xPos。Direct3D Sound的倾听者的位置
// 参数3 : float yPos。
// 参数4 : float zPos。
// 参数5 : bool bRepeat。是否重复,为ture则重复播放
// 返回值 : void。
// 输出 :
////////////////////////////////////////////////////////////////////////////////
void PlaySndAtPos(int i, float xPos=0.0, float yPos=0.0, float zPos=0.0, bool bRepeat=false);

////////////////////////////////////////////////////////////////////////////////
// 函数名 : IsPlayingOfSndi
// 功能描述 :
// 输入 :
// 参数1 : int i。3DSound在缓冲区的索引
// 返回值 : bool。为真表示正在播放
// 输出 :
////////////////////////////////////////////////////////////////////////////////
bool IsPlayingOfSndi(int i);

////////////////////////////////////////////////////////////////////////////////
// 函数名 : SetSoundMode
// 功能描述 : 设置声音类型
// 输入 :
// 参数1 : int i。3DSound在缓冲区的索引
// 参数2 : int type=0。1:DS3DMODE_DISABLE,2:DS3DMODE_HEADRELATIVE,或0:DS3DMODE_NORMAL
// 返回值 : BOOL。
// 输出 :
////////////////////////////////////////////////////////////////////////////////
BOOL SetSoundMode(int i, int type=0);

BOOL StopTheSound(int i);//暂停某个声音

BOOL StopAllSounds();//暂停一切声音

//清空Direct Sound等对象所占存储空间
void Delete3dSound();

[/cpp]






通用游戏杆静态库封装了基于DirectXInput的游戏杆通用API函数,很简单,直接调用下面几个函数就可以了

[cpp]BOOL InitJoyStick(HINSTANCE hInst, HWND hWnd);//1.初始化游戏杆,调试时会输出游戏杆信息
BOOL AcquireJoystick(void);//2.获取对游戏杆的控制权
bool ReadJoystick();//3.读取游戏杆状态数据
void DeleteJoyStick(void);//4.清除对游戏杆的控制[/cpp]

用ReadJoystick时读入的数据会自动进入一个须在外部定义的JOY_STICK_DATA g_joy_data全局变量之中。

[ 本帖最后由 obuil 于 2008-12-29 10:39 PM 编辑 ]

JoyLib.rar

41.15 KB, 下载次数: 146

通用游戏杆静态库

3DSoundLib.rar

37.7 KB, 下载次数: 132

3D声音的静态库

最近VR访客

zjxjjhx 评论于2008-12-29 21:44:23
建议版主加精,会有人用的上的
henry0henry 评论于2008-12-30 12:37:53
好东西必须要顶
david_m 评论于2008-12-30 19:41:02
不错,不过要DXSDK,版本呢?8?9?
zjxjjhx 评论于2008-12-30 22:44:18
不需要DXSDK,用的是OS带的
西安航远 评论于2008-12-31 15:22:45

老师好,学生向您致敬啦,呵呵

本来想夸奖一下呢,这么好的程序风格,呵呵,
仔细一看原来是您呀
您可以直接申请做个版主,要不要我给您推荐一下呢?
QQ80977731 评论于2009-4-23 19:09:06

真是太谢谢了,感恩主人呀
tracyhust 评论于2009-8-16 17:47:36
感谢楼主分享
tracyhust 评论于2009-8-16 17:48:53
感谢楼主分享
tushuai308 评论于2010-1-6 11:13:15
谢谢啦

手机版|VR开发网 ( 津ICP备18009691号 ) 统计 网安备12019202000257

GMT+8, 2020-10-22 11:32 AM

返回顶部