IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SDL Discussion :

Colorier des pixels [Débutant(e)]


Sujet :

SDL

  1. #1
    Membre averti
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 014
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 014
    Points : 407
    Points
    407
    Billets dans le blog
    1
    Par défaut Colorier des pixels
    Salut en m'inspirant du tuto SDL de developpez.net j'ai essayé a mon tour de colorier des pixels mais l'écran reste noir:
    main.c :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #include <stdio.h>
    #include <stdlib.h>
    #include <SDL/SDL.h>
    #include "fonctions.h"
    /*
     * 
     */
    int main(int argc, char** argv) {
     
        init();
        affiche();
        wait();
        return (EXIT_SUCCESS);
    }
    fonctions.h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #ifndef FONCTIONS_H
    #define	FONCTIONS_H
     
    #ifdef	__cplusplus
    extern "C" {
    #endif
     
        void init();
        void close();
        void setPixel(int x, int y,Uint32 Couleur);
        void affiche();
        void wait();
     
     
    #ifdef	__cplusplus
    }
    #endif
     
    #endif	/* FONCTIONS_H */
    et enfin fonctions.c :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    #include <stdio.h>
    #include <stdlib.h>
    #include <SDL/SDL.h>
    #include "fonctions.h"
     
    SDL_Surface *surface=NULL;
     
    void affiche() {
        int x=0, y=0;
        for(y=10; y<100; y++) {
            for(x=10; x<100; x++) {
                Uint32 couleur=SDL_MapRGB(surface->format, 255, 0, 255);
                setPixel(x, y, couleur);
            }
        }
    }
    void init() {
        if(SDL_Init(SDL_INIT_VIDEO)==-1) {
            printf("Impossible d'initialiser la vidéo.\n");
            exit(EXIT_FAILURE);
        }
        surface=SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE);
        if(surface==NULL) {
            printf("Impossible de créer l'écran !\n");
            exit(EXIT_FAILURE);
        }
        atexit(SDL_Quit);
    }
    void setPixel(int x, int y, Uint32 couleur) {
        *((Uint32*)(surface->pixels)+x+(y*surface->w))=couleur;
    }
    void wait() {
        SDL_Event event;
        int continuer=1;
        while(continuer) {
            SDL_WaitEvent(&event);
            switch(event.type) {
                case SDL_QUIT:
                    continuer=0;
                    break;
            }
        }
    }
    Je ne vois pas pourquoi ça fonctionne pas mais peut être vous le verrez.
    Merci.

  2. #2
    Membre averti
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 014
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 014
    Points : 407
    Points
    407
    Billets dans le blog
    1
    Par défaut
    Finalement j'ai trouvé il fallait ajouter un SDL_UpdateRect après le changement de couleur, ma fonction affiche devient donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void affiche() {
        int x=0, y=0;
        for(y=10; y<100; y++) {
            for(x=10; x<100; x++) {
                Uint32 couleur=SDL_MapRGB(surface->format, 255, 0, 255);
                setPixel(x, y, couleur);
            }
        }
        SDL_UpdateRect(surface, 10, 10, 100, 100);
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. diffusion des pixels d'une image
    Par hagui dans le forum Traitement d'images
    Réponses: 11
    Dernier message: 11/05/2006, 18h31
  2. [VBA-E2003] Colorier des cellule sélectionnée
    Par 973thom dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 26/04/2006, 10h19
  3. [MFC]déplacement des pixels d'une image
    Par hagui dans le forum MFC
    Réponses: 8
    Dernier message: 19/01/2006, 16h51
  4. Modifier le codage des pixels pour capture vidéo
    Par supergrey dans le forum DirectX
    Réponses: 10
    Dernier message: 27/08/2005, 10h48
  5. Réponses: 2
    Dernier message: 30/05/2002, 10h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo