Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我无意中延迟了一段混音_C++_User Interface_Sdl_Sdl Mixer - Fatal编程技术网

C++ 我无意中延迟了一段混音

C++ 我无意中延迟了一段混音,c++,user-interface,sdl,sdl-mixer,C++,User Interface,Sdl,Sdl Mixer,所以我正在尝试学习SDL并创建一个小游戏。当用户按下空格键时,应该会播放声音。这是可行的,但声音播放大约需要0.5秒。。。我该如何解决这个问题?我检查了实际的文件,看看延迟是否只是其中的一部分,结果证明并非如此 SDL,C++ + Win Vista. 以下是一些相关代码: ... Mix_OpenAudio( 22050, MIX_DEFAULT_FORMAT, 2, 4096 ) ... main() { ... Mix_PlayMusic( BG_

所以我正在尝试学习SDL并创建一个小游戏。当用户按下空格键时,应该会播放声音。这是可行的,但声音播放大约需要0.5秒。。。我该如何解决这个问题?我检查了实际的文件,看看延迟是否只是其中的一部分,结果证明并非如此

SDL,C++ + Win Vista.

以下是一些相关代码:

...
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() );
    ...
    }
句柄输入功能:

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;
    }
}

如果需要更多,请告诉我。

编译SDL时通常会检查DirectX头(显然)

您可以尝试使用DirectX支持重新编译吗

另外,您在客户端强制执行了多少缓冲?这可能是个问题

编辑-在下面的评论之后:

  • 尝试增加缓冲区的大小
  • 我使用DirectX支持重新编译的意思是,尝试包含来自以下源的头,以便SDL跳过对它们的检查。

  • 我真的不知道这意味着什么。@buffering,Mix_OpenAudio(22050,Mix_DEFAULT_格式,24096)和buffer changing起作用了。我将其设置为2048,这很好,但1024似乎正确。但我不明白,我以为我的数字越高越好,但结果越糟。你有关于(缓冲区)参数在Mix_OpenAudio()中的具体作用的链接或解释吗?没有,但我在网上查过,1024似乎是一个标准。给我一点时间,我会试着想想原因。好的,谢谢。奇怪的是,你发现1024是我使用过的所有教程的标准,他们把4096。。哦,好的,谢谢你!这让我快发疯了。