gpt4 book ai didi

c++ - 我在播放 Mix_Chunk 时意外延迟

转载 作者:太空狗 更新时间:2023-10-29 20:49:18 27 4
gpt4 key购买 nike

所以我正在尝试学习 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() );
...
}

句柄输入函数:

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 header (显然)

你能尝试重新编译 DirectX 支持吗?

此外,您在客户端实现了多少缓冲?这可能是个问题。

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

  1. 尝试增加缓冲区的大小。
  2. 我所说的使用 DirectX 支持重新编译的意思是,尝试包含来自以下源的 header ,以便 SDL 跳过对它们的检查。 http://www.libsdl.org/extras/win32/common/directx-devel.tar.gz

关于c++ - 我在播放 Mix_Chunk 时意外延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/983997/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com