Problème fenêtre SDL2

Le problème exposé dans ce sujet a été résolu.

Salut
J’ai récemment décidé de m’intéresser a la bibliothèque SDL2 et je suis tombée sur ce site. Cependant dès la création d’une fenêtre un problème se pose, plutôt que de tenter de l’expliquer sans vraiment bien y arriver voici une illustration du problème :

Ca fait bientôt 2 bonnes heures que je cherches une solution au problème en vain. J’avais émis l’hypothèse (un peu foireuse) selon laquelle il fallait remplir le fond manuellement mais toujours rien. Pour le code il s’agit de celui du cours en remplaçant juste le delay par une fonction pause :

#include <stdio.h>
#include <stdlib.h>
#include <SDL2/SDL.h>

void pause();

int main(int argc, char const *argv[]) {

  SDL_Window *window = NULL;
  SDL_Renderer *renderer = NULL;
  int statut = EXIT_FAILURE;
  SDL_Color blue = {0, 0, 255, 255};

  //init window and renderer
  if(0 != SDL_Init(SDL_INIT_VIDEO)) {
        fprintf(stderr, "Erreur SDL_Init : %s", SDL_GetError());
        goto Quit;
  }
  window = SDL_CreateWindow("CECI EST UN TEST", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
                              640, 480, SDL_WINDOW_SHOWN);
  if(NULL == window) {
        fprintf(stderr, "Erreur SDL_CreateWindow : %s", SDL_GetError());
        goto Quit;
  }
  renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
  if(NULL == renderer) {
        fprintf(stderr, "Erreur SDL_CreateRenderer : %s", SDL_GetError());
        goto Quit;
  }
  //end

  //blue window
  if(0 != SDL_SetRenderDrawColor(renderer, blue.r, blue.g, blue.b, blue.a)) {
    fprintf(stderr, "Erreur SDL_SetRenderDrawColor : %s", SDL_GetError());
    goto Quit;
  }

  if(0 != SDL_RenderClear(renderer)) {
    fprintf(stderr, "Erreur SDL_SetRenderDrawColor : %s", SDL_GetError());
    goto Quit;
  }
  //end

  pause();

  statut = EXIT_SUCCESS;

 Quit:
  if(NULL != renderer)
    SDL_DestroyRenderer(renderer);
  if(NULL != window)
    SDL_DestroyWindow(window);
  SDL_Quit();
  return statut;
}


void pause () {
  int continuer = 1;
  SDL_Event event;
  while(continuer) {
    SDL_WaitEvent(&event);
    switch(event.type) {
      case SDL_QUIT :
        continuer = 0;
    }
  }
}

Merci d’avance

Salut,

Il te manque le SDL_RenderPresent pour mettre à jour l’affichage.

EDIT : pour ta pause, autant utiliser un if. On peut même la faire avec while(SDL_WaitEvent(&event) && event.type != SDL_QUIT) vu que SDL_WaitEvent renvoie 1 en cas de succès.

+0 -0

Merci pour ta réponse rapide, effectivement en rajoutant cette petite ligne plutôt utile tout marche beaucoup mieux ! Ca ne m’étonne même pas que je l’ai oubliée sans m’en rendre compte.

J’ai aussi pris en compte tes suggestions pour ma fonction pause qui ne comporte désormais plus que 2 lignes, merci encore !

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte