2009-06-11 5 views
3

Donc j'essaie d'apprendre SDL et de créer un petit jeu. Lorsque l'utilisateur appuie sur la barre d'espace, il doit jouer un son. Cela fonctionne, mais le son prend environ 0,5 secondes à jouer ... Comment est-ce que je réparerais ceci? J'ai vérifié le fichier réel pour voir si le retard était juste une partie de celui-ci, et cela s'est avéré ne pas être le cas.J'ai un retard involontaire à jouer un Mix_Chunk

SDL avec C++ sur win vista.

est ici un code pertinent:

... 
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()); 
    ... 
    } 

la fonction d'entrée de la poignée:

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

S'il en faut plus, laissez-moi savoir.

+0

Merci! Cela me rendait fou. – Malabarba

Répondre

5

Il y a habituellement une vérification des en-têtes DirectX lors de la compilation SDL (apparemment)

Pouvez-vous essayer de recompiler avec support DirectX?

De même, combien de tampons appliquez-vous du côté client? Cela peut être un problème avec ça.

EDIT-Après les commentaires ci-dessous:

  1. Essayez d'augmenter la taille de votre tampon. Ce que je veux dire en recompilant avec le support de DirectX est, essaye d'inclure des en-têtes de la source suivante de sorte que SDL saute la vérification pour eux. http://www.libsdl.org/extras/win32/common/directx-devel.tar.gz
+0

Je ne suis pas vraiment sûr de ce que cela signifie. – Justen

+0

@ la mise en mémoire tampon, Mix_OpenAudio (22050, MIX_DEFAULT_FORMAT, 2, 4096) – Justen

+0

Vérifiez mes modifications ci-dessus. –

Questions connexes