У меня непреднамеренная задержка в игре Mix_Chunk
Поэтому я пытаюсь изучить 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;
}
}
Если нужно больше, дайте мне знать.
1 ответ
Решение
Обычно при компиляции SDL проверяется наличие заголовков DirectX (очевидно)
Можете ли вы попытаться перекомпилировать с поддержкой DirectX?
Кроме того, какой объем буферизации вы применяете на стороне клиента? Это может быть проблемой с этим.
РЕДАКТИРОВАТЬ - После комментариев ниже:
- Попробуйте увеличить размер вашего буфера.
- Под перекомпиляцией с поддержкой DirectX я имею в виду постараться включить заголовки из следующего источника, чтобы SDL пропустил их проверку. http://www.libsdl.org/extras/win32/common/directx-devel.tar.gz