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 :

Effacement de l'écran [SDL 2.0]


Sujet :

SDL

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Ile Maurice

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2012
    Messages : 46
    Points : 31
    Points
    31
    Par défaut Effacement de l'écran
    Bonjour j'ai un soucis avec la SDL 2.0. J'ai ce code :

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    #include <SDL.h>
     
    #include "context.h"
    #include "input.h"
     
    void setCameraLimits(Map *M, Tileset *T)
    {
        if(M->camera->x < 0)
            M->camera->x = 0;
        if(M->camera->y < 0)
            M->camera->y = 0;
        if(M->camera->x > M->nbtilesX*T->tileWidth)
            M->camera->x = M->nbtilesX*T->tileWidth;
        if(M->camera->y > M->nbtilesY*T->tileHeight)
            M->camera->y = M->nbtilesY*T->tileHeight;
    }
     
    void renderMap(ScreenContext *SC, Tileset *T, Map *M)
    {
        short i, j;
        short xmin, xmax, ymin, ymax;
        unsigned numtile;
        SDL_Rect dest;
     
        xmin = M->camera->x / T->tileWidth;
        ymin = M->camera->y / T->tileHeight;
        xmax = (M->camera->x + M->camera->w) / T->tileWidth;
        ymax = (M->camera->y + M->camera->h) / T->tileHeight;
     
        for(j = ymin; j <= ymax; j++)
        {
            for(i = xmin; i <= xmax; i++)
            {
                dest.x = i*T->tileWidth - M->camera->x;
                dest.y = j*T->tileHeight - M->camera->y;
     
                if(i < 0 || i >= M->nbtilesX || j < 0 || i >= M->nbtilesY)
                    numtile = 0;
                else
                    numtile = M->tileindex[j][i];
                SDL_RenderCopy(SC->renderer, T->texture, &T->tileProps[numtile].rect, &dest);
            }
        }
    }
     
    void renderCurentTile(ScreenContext *SC, Tileset *T, Input in)
    {
        SDL_Rect dest;
     
        dest.x = in.mousex - (T->tileWidth / 2);
        dest.y = in.mousey - (T->tileHeight / 2);
        dest.w = T->tileWidth;
        dest.h = T->tileHeight;
     
        SDL_RenderCopy(SC->renderer, T->texture, &T->tileProps[T->curentTile].rect, &dest);
    }
     
    void display(ScreenContext *SC, Tileset *T, Map *M, Input in)
    {
        SDL_SetRenderDrawColor(SC->renderer, 0x0, 0x0, 0x0, 0x0);
     
        setCameraLimits(M, T);
        renderMap(SC, T, M);
        renderCurentTile(SC, T, in);
     
        SDL_RenderPresent(SC->renderer);
     
        SDL_Delay(5);
    }
    J'aimerais pouvoir blitter le monde, puis ensuite le curentTile(fonction : renderCurentTile), seulement je ne peux pas effacer l'écran :



    J'ai ensuite essayé de rajouter une instruction SDL_RenderClear(SC->renderer) après le SDL_SetRenderDrawColor(SC->renderer, 0x0, 0x0, 0x0, 0x0), mais ça ne marche toujours pas :



    Quelqu'un aurais une solution? Parce que là je ne comprend vraiment pas

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Ile Maurice

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2012
    Messages : 46
    Points : 31
    Points
    31
    Par défaut
    STOP !!! C'est ok, j'ai trouvé la solution juste après avoir ouvert la discution

    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
    void renderMap(ScreenContext *SC, Tileset *T, Map *M)
    {
        short i, j;
        short xmin, xmax, ymin, ymax;
        unsigned numtile;
        SDL_Rect dest;
     
        dest.w = T->tileWidth;
        dest.h = T->tileHeight;
     
        xmin = M->camera->x / T->tileWidth;
        ymin = M->camera->y / T->tileHeight;
        xmax = (M->camera->x + M->camera->w) / T->tileWidth;
        ymax = (M->camera->y + M->camera->h) / T->tileHeight;
     
        for(j = ymin; j <= ymax; j++)
        {
            for(i = xmin; i <= xmax; i++)
            {
                dest.x = i*T->tileWidth - M->camera->x;
                dest.y = j*T->tileHeight - M->camera->y;
     
                if(i < 0 || i >= M->nbtilesX || j < 0 || i >= M->nbtilesY)
                    numtile = 0;
                else
                    numtile = M->tileindex[j][i];
                SDL_RenderCopy(SC->renderer, T->texture, &T->tileProps[numtile].rect, &dest);
            }
        }
    }
    Juste après la déclaration de variables, il fallait que je précise la largeur et la hauteur, quel étourdi ! . Désolé d'avoir dérangé

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

Discussions similaires

  1. Dessiner et effacer sur l'écran
    Par nick974 dans le forum Débuter
    Réponses: 4
    Dernier message: 31/03/2008, 11h12
  2. Effacer complètement l'écran
    Par psykbe dans le forum Langage
    Réponses: 13
    Dernier message: 10/02/2006, 16h28
  3. Effacer écran sous VC
    Par issou dans le forum Visual C++
    Réponses: 1
    Dernier message: 15/12/2005, 13h09
  4. effacer l'écran
    Par youp_db dans le forum C++
    Réponses: 3
    Dernier message: 17/09/2005, 14h45
  5. [debutant] Effacer écran
    Par bdaboah dans le forum C
    Réponses: 7
    Dernier message: 16/09/2005, 09h17

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