⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 flysound.cpp

📁 是3D游戏一书中所讲的游戏引擎fly3D 包括fly3D引擎的源码及应用此引擎开发出来的游戏实例 有fly3D引擎的教程,易于step by step跟学
💻 CPP
字号:
#include "../Fly3D.h"

void sound::reset()
{
	for( int i=0;i<MAX_SOUND_CHANNELS;i++ )
	{
		if (buf3d[i]) 
		{ 
			buf3d[i]->Release(); 
			buf3d[i]=0; 
		}
		if (buf[i]) 
		{ 
			buf[i]->Release(); 
			buf[i]=0; 
		}
		bufuse[i]=0;
	}
	total_time=0; 
}

int sound::load_wav(char *filename)
{
	if (directx==0)	return 0;

	fly_pak f;

	if (!f.open(filename)) return 0;

	reset();

	total_time=directx->load_wav_file(f.len,f.buf,&buf[0],&buf3d[0]);

	if (buf[0])
	for( int i=1;i<MAX_SOUND_CHANNELS;i++ )
	{
	buf[i]=directx->clone_sound(buf[0]);
	buf[i]->QueryInterface(IID_IDirectSound3DBuffer,(void **)(&buf3d[i]));
	}

	return total_time;
}

int sound::get_sound_instace()
{
	for( int i=0;i<MAX_SOUND_CHANNELS;i++ )
		if (bufuse[i]==0 && buf[i])
		{
			bufuse[i]=1;
			return i;
		}
	return -1;
}

void sound::free_sound_instance(int i)
{
	if (i>=0 && i<MAX_SOUND_CHANNELS)
	{
		bufuse[i]=0;
		buf[i]->Stop();
		buf[i]->SetCurrentPosition(0);
	}
}

sound::sound()
{
	for( int i=0;i<MAX_SOUND_CHANNELS;i++ )
	{
		buf[i]=0; 
		buf3d[i]=0;
		bufuse[i]=0;
	}
	total_time=0; 
};

sound::~sound()
{ 
	reset();
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -