Partage
  • Partager sur Facebook
  • Partager sur Twitter

Un simple dégradé du blanc vers le noir

Fenêtre qui reste noir

Sujet résolu
    14 janvier 2020 à 12:10:01

    Bonjour,

    Je suis sur la cours du language C, ou on s'amuse avec la SDL. L'un des exercices est de faire un dégradé du blanc vers le noir.

    Hors ma fenêtre reste noir et je ne comprend pas pourquoi...

    J'ai comparer mon code à celui de matteo, et au mien également (un autre dégradé qui lui fonctionne sans problème).

    J'aimerais comprendre mon erreur si quelqu'un pouvait m'aider...

    PS : Oui, SDL.dll est bien dans le dossier de mon programme.

    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    #include <SDL/SDL.h>
    
    void pause();
    
    int main ( int argc, char** argv )
    {
        // Initialisation et test de la SDL
        if (SDL_Init(SDL_INIT_VIDEO) == -1)
        {
            fprintf(stderr, "Erreur d'initialisation de la SDL: %s", SDL_GetError());
            exit(EXIT_FAILURE);
        }
    
        // Déclaration des variables 
        SDL_Surface *ecran = NULL, *lignes[256] = {NULL};
        SDL_Rect position;
        int i = 0, b = 255;
    
        
        // Première surface écran
        ecran = SDL_SetVideoMode(640, 256, 32, SDL_HWSURFACE);
        
        // Création d'un dégradé du blanc vers le noir sur toute la surface de l'écran
        for(i = 0; i <= 255; i++)
        {
            lignes[i] = SDL_CreateRGBSurface(SDL_HWSURFACE, 640, 1, 32, 0,0,0,0);
            for (b = 255; b >= 0; b--) 
            {
                SDL_FillRect(lignes[i], NULL, SDL_MapRGB(lignes[i] -> format, b, b, b));
            }
            position.x = 0;
            position.y = i;
            SDL_BlitSurface(lignes[i], NULL, ecran, &position);
         }
    
        // Actualisation de l'écran et maintiens de la fenêtre
        SDL_Flip(ecran);
        pause();
    
        // On libère et quitte décemment la SDL
        for (i = 0; i <= 255; i++)
        {
            SDL_FreeSurface(lignes[i]);
        }
    
        SDL_Quit();
        return EXIT_SUCCESS;
    }
    
    // Fonction donner dans le cours pour le maintiens de la fenêtre
    void pause()
    {
        int continuer = 1;
        SDL_Event event;
    
        while (continuer)
        {
            SDL_WaitEvent(&event);
            switch(event.type)
            {
                case SDL_QUIT:
                    continuer = 0;
            }
        }
    }
    
    

    Merci à vous !

    • Partager sur Facebook
    • Partager sur Twitter

    Un simple dégradé du blanc vers le noir

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown