Jus*_*ten 3 c++ user-interface sdl sdl-mixer
所以我正在尝试学习SDL并创建一个小游戏.当用户按下空格键时,它应该播放声音.这有效,但声音需要大约0.5秒才能播放......我该如何解决这个问题?我已经检查了实际的文件,看看延迟是否只是其中的一部分,事实证明并非如此.
在win vista上使用c ++进行SDL.
这是一些相关的代码:
...
Mix_OpenAudio( 22050, MIX_DEFAULT_FORMAT, 2, 4096 )
...
main()
{
...
Mix_PlayMusic( BG_Music, 0 ); //background music
while( quit == false )
{
fps.start();
fire.handleInput( event, ship.get_x_pos() );
...
}
Run Code Online (Sandbox Code Playgroud)
句柄输入功能:
void lasersC::handleInput( SDL_Event &event, int x )
{
Uint8 *keystates = SDL_GetKeyState( NULL );
if ( keystates[ SDLK_SPACE ] && delay == 0)
{
Mix_PlayChannel(-1, laser, 0);
fired * F = new fired( NULL, S_HEIGHT - 50, x + 20 );
F->shot = lasers;
F->y_pos = S_HEIGHT - 50;
F->x_pos = x + 20;
weps.push_back( F );
delay = 10;
}
}
Run Code Online (Sandbox Code Playgroud)
如果需要更多,请告诉我.
编译SDL时通常会检查DirectX标头(显然)
您可以尝试使用DirectX支持重新编译吗?
另外,您在客户端执行了多少缓冲?这可能是一个问题.
编辑 - 以下评论后: