📄 openalbuffer.cpp
字号:
// OpenALBuffer.cpp: implementation of the COpenALBuffer class.
//
//////////////////////////////////////////////////////////////////////
#pragma warning(disable: 4786)
#include <sstream>
#ifdef WIN32
#include <windows.h>
#endif
using namespace std;
#include "OpenALBuffer.h"
#include "ErrorHandling.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
namespace AudioEngine {
COpenALBuffer::COpenALBuffer()
{
m_ID = -1;
}
COpenALBuffer::~COpenALBuffer()
{
try {
if (alIsBuffer(m_ID) == AL_TRUE) alDeleteBuffers(1, &m_ID);
} catch(...) { }
}
void COpenALBuffer::LoadWave(std::string filename)
{
unsigned char *data = NULL;
alutLoadWAVFile(const_cast<char *>(filename.c_str()), &m_Format, (void **)&data, &m_Size, &m_Freq, &m_Loop);
// copy wave data into buffer
alBufferData(m_ID, m_Format, data, m_Size, m_Freq);
if (alGetError() != AL_NO_ERROR) {
alutUnloadWAV(m_Format, data, m_Size, m_Freq);
Throw("COpenALBuffer::LoadWave: error loading WAV data into buffer.");
}
// free original data
alutUnloadWAV(m_Format, data, m_Size, m_Freq);
}
COpenALBufferPtr::COpenALBufferPtr(COpenALBuffer* p) : CRefCountPtr<COpenALBuffer>(p)
{
#ifdef WIN32
stringstream str;
if (p) {
str << "COpenALBufferPtr::COpenALBufferPtr: constructed for pointer " << p
<< " (count = " << itsCounter->count << ")..." << endl;
OutputDebugString(str.str().c_str());
}
#endif
}
void COpenALBufferPtr::Release()
{
#ifdef WIN32
stringstream str;
if (itsCounter) {
str << "COpenALBufferPtr::Release(): pointer " << itsCounter->ptr
<< " (count = " << itsCounter->count << ")..." << endl;
OutputDebugString(str.str().c_str());
}
#endif
}
} // namespace
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -