试图在OpenAL中播放一些东西,但它从未脱离AL_INITIAL状态
Trying to play something in OpenAL, but it never gets out of the AL_INITIAL state
我试图使用OpenAl播放音频文件,但它实际上并没有播放任何内容。当我在调用alSourcePlay后检查音频文件是否正在播放时,状态仍然是AL_INITIAL。
这里是我播放音频的地方:
// Make sure the audio source ident is valid and usable
if ( audioID >= MAX_AUDIO_SOURCES || !mAudioSourceInUse[audioID])
return false;
int sourceAudioState = 0;
if(!alIsSource(mAudioSources[audioID]) == AL_TRUE) return false;
alGetError();
// Are we currently playing the audio source?
alGetSourcei( mAudioSources[audioID], AL_SOURCE_STATE, &sourceAudioState );
if ( sourceAudioState == AL_PLAYING )
{
printf("Currently playing!n");
if ( forceRestart )
stopAudio( audioID );
else
return false; // Not forced, so we don't do anything
}
alSourcePlay( mAudioSources[ audioID ] );
if ( checkALError( "playAudio::alSourcePlay: ") )
return false;
alGetSourcei( mAudioSources[audioID], AL_SOURCE_STATE, &sourceAudioState );
printState(sourceAudioState);
if(sourceAudioState == AL_PLAYING)
{
printf("Now playing!nn");
}
return true;
mAudioSources是一个由alGenBuffers创建的缓冲区数组。文件是用
加载的mAudioBuffers[bufferID] = alutCreateBufferFromFile(filename.c_str());
不会在alGetError中引起错误。什么好主意吗?
alutCreateBufferFromFile
不会导致alGetError
出错。您必须使用alutGetError
(注意前缀alut
而不是al
)。如果alutCreateBufferFromFile
失败,它将返回AL_NONE
,这是一个有效的缓冲区:NULL
缓冲区将不会被播放。
查看关于alutGetError
以及OpenAL规范的ALUT文档
相关文章:
- Constexpr替代了新的放置方式,可以让内存中的对象保持未初始化状态
- 我不断收到 [错误] ID 返回 1 退出状态错误,但看不到问题所在
- OSX MetalKit CVMetalTextureCacheCreateTextureFromImage失败,状态:
- std::future_error:无关联状态
- 结构体 S { int align; } 之间的区别;(struct 关键字后的名称)和 struct { int al
- 如何避免LED在循环状态变化中闪烁?
- boost 是否有按特殊类型值编码状态"compact optional"?
- 为什么系统函数总是在C++中返回已转移的退出状态?
- C++ 中的编译错误:未定义对"主"的引用 collect2:错误:ld 返回 1 个退出状态
- 当可输入框在窗口中处于活动状态时获得通知的任何方法
- 检查两个节点在子节点上是否具有相同状态的更优雅的方法
- 将有状态的 lambda 传递到 C 样式函数中,而无需上下文参数
- 在 nullptr 上调用无状态类的非静态成员函数是否合法?
- 编译问题:在函数"_start"中:未定义对"主"的引用 collect2:错误:ld 返回 1 个退出状态
- C++部分概念 id:显式模板规范顺序/第一个参数的特殊状态的原因是什么?
- 试图在崇高中奔跑. 错误 已发生: 收集2.exe: 错误: ld 返回 1 退出状态
- 在容器上移动分配:以前包含的对象的状态
- 在 ifcondition al中 find() C++ STL 中的 == a.end() 有什么用?
- collect2:错误:ld 返回 1 个退出状态未定义的引用
- 具有动态大小的特征矩阵的默认初始状态