dsfuncs.cpp

来自「一個遊戲教程」· C++ 代码 · 共 59 行

CPP
59
字号
//DSFuncs.cpp

#include "DSFuncs.h"

////////////////////////////////////////////////////
//LPDSB Functions
////////////////////////////////////////////////////

LPDIRECTSOUNDBUFFER LPDSB_LoadFromFile(LPDIRECTSOUND lpds,LPCTSTR lpszFileName)
{
	//declare buffer pointer
	LPDIRECTSOUNDBUFFER lpdsb=NULL;

	//load wav file
	CWAVLoader wav;
	wav.Load(lpszFileName);

	//set up buffer description
	DSBUFFERDESC dsbd;
	memset(&dsbd,0,sizeof(DSBUFFERDESC));

	//size
	dsbd.dwSize=sizeof(DSBUFFERDESC);

	//flags
	dsbd.dwFlags=DSBCAPS_LOCSOFTWARE;

	//length and sound format
	dsbd.dwBufferBytes=wav.GetLength();
	dsbd.lpwfxFormat=wav.GetFormat();

	//create buffer
	lpds->CreateSoundBuffer(&dsbd,&lpdsb,NULL);

	DWORD buflen,buflen2;
	void* bufptr;

	//lock entire buffer
	lpdsb->Lock(0,0,&bufptr,&buflen,NULL,&buflen2,DSBLOCK_ENTIREBUFFER);
	
	//copy from wave loader to sound buffer
	memcpy(bufptr,wav.GetData(),wav.GetLength());

	//unlock the buffer
	lpdsb->Unlock(bufptr,buflen,NULL,buflen2);

	//return the new buffer
	return(lpdsb);
}

void LPDSB_Release(LPDIRECTSOUNDBUFFER* lplpdsb)
{
	//safe release
	if(*lplpdsb)
	{
		(*lplpdsb)->Release();
		(*lplpdsb)=NULL;
	}
}

⌨️ 快捷键说明

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