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 :

Problème affichage texture


Sujet :

SDL

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 24
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 35
    Points : 17
    Points
    17
    Par défaut Problème affichage texture
    Bonjour ^^,

    Dans le cadre d'un projet de réalisation de la tour de Hanoi je doit animé des disques. J'avais d'abord des problèmes à afficher les rectangle tracer sur la texture sur le render, je suis parvenu à résoudre mon problème en passant par une surface. En voulant m'amuser un peux et mettre un fond d'écran j'ai remarquer une zone de point qui n'était pas sur l'image à l'origine. J'ai finit par comprendre qu'il s’agissait en faite d'un disque que je tentais de déplacer. Cependant le disque apparait en une zone de pointiller blanc et ceux seulement si une image à été charger sur le render (si elle est supprimer avec le déplacement les point blanc apparaisse tout de même), si le render est vide on ne voit même pas le disque. Je ne comprend pas pourquoi le disque n'est pas un pavé vert comme j'aurait voulu qu'il le soit, j'avais tenter de déplacer la texture d'une zone qui est un disque vert.
    Voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        SDL_Init(SDL_INIT_VIDEO);
        SDL_Window* Window = SDL_CreateWindow("test",SDL_WINDOWPOS_UNDEFINED,SDL_WINDOWPOS_UNDEFINED,width,height,0);
        SDL_Renderer *rendere = SDL_CreateRenderer(Window,-1,SDL_RENDERER_ACCELERATED);
        SDL_Texture *texture = SDL_CreateTexture(rendere,SDL_PIXELFORMAT_RGBA8888,SDL_TEXTUREACCESS_TARGET,width,height);
     
        //
        SDL_Texture *screen = SDL_CreateTexture(rendere,SDL_PIXELFORMAT_RGBA8888,SDL_TEXTUREACCESS_TARGET,width,height);
        SDL_Surface *signature = /*SDL_CreateRGBSurface(0,width,height,32,0,0,0,0);*/SDL_LoadBMP("guilty_crown_1.bmp");
    La zone en commentaire dans SDL_surface me permet d'avoire un fond noire mais je ne voie pas le disque à sa nouvelle position.
    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
     
        void DrawPlater()
        {
            SDL_SetRenderDrawColor(rendere,0,255,0,SDL_ALPHA_OPAQUE);
            int platerWidthInital = rodewidth+(width/(2*numberOfRode+1))/2;
            int platerWidth = platerWidthInital-n*platerWidthInital/numberOfPlater;
            int xInitial = (width/(numberOfRode+1));
            int yInitial = (height-20)-platerHeight;
            for (n=0;n<numberOfPlater;n++)
            {
                SDL_Rect plater = {xInitial-(platerWidth-n*platerWidth/numberOfPlater)/2,yInitial-n*platerHeight,
                                    (platerWidth-n*platerWidth/numberOfPlater),platerHeight};
                x[n] = plater;
                SDL_RenderFillRect(rendere, &plater);
            }
            return;
        }
     
     
        SDL_SetRenderDrawColor(rendere,0,0,0,SDL_ALPHA_OPAQUE);
     
        //affichage de l'image
        texture = SDL_CreateTextureFromSurface(rendere,signature);
        SDL_FreeSurface(signature);
        SDL_RenderCopy(rendere,texture,NULL,NULL);
        SDL_RenderPresent(rendere);
        //
        SDL_SetRenderDrawColor(rendere,255,255,255,SDL_ALPHA_OPAQUE);
        DrawRodesAndBase();
        SDL_SetRenderTarget(rendere,texture);
        DrawPlater();
        SDL_Rect move = {100,100,100,platerHeight};
        SDL_RenderCopy(rendere,texture,NULL,&move);
        SDL_RenderPresent(rendere);
        SDL_Delay(1000);
    Merci de votre aide, je pense qu'il y a un meilleur moyen d'afficher la texture sur le render mais c'est le seul que j'ai trouver qui fonctionne

    Edit : Les point blanc vienne du fait que ce que je déplace n'est pas un rectangle mais une partie de la texture j'ai réssayer avec "&x[1]" à la place de texture à la ligne 33 mais rien n'apparait

  2. #2
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Cela fait un bail que je n'ai pas fait de SDL2 mais ton code me semble bordélique niveau affichage.

    Et je trouve tes calculs assez "complexe" pour sûrement pas grand chose.
    Bon ce que je veux souligner c'est que le nombre de division et multiplication successive peut être très imprécis avec des nombres entiers donc peut être que le résultat final n'est pas ce que tu attends !

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 24
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    J'ai l'impression que ça affiche ce qui est en arrière plan derrière mes disque, comme si les disques n'étaient pas dessiner sur la texture

Discussions similaires

  1. Problème affichage textures de modele
    Par martantoine dans le forum OpenGL
    Réponses: 4
    Dernier message: 08/05/2018, 19h31
  2. [Débutant][OpenGL ES] Problème affichage textures
    Par Niicoo dans le forum OpenGL
    Réponses: 2
    Dernier message: 12/06/2009, 15h15
  3. Réponses: 10
    Dernier message: 08/06/2009, 11h30
  4. Problème affichage de texture.
    Par laflak dans le forum OpenGL
    Réponses: 6
    Dernier message: 29/12/2008, 12h16
  5. [OpenSceneGraph] Problème affichage de texture
    Par PP(Team) dans le forum OpenSceneGraph
    Réponses: 3
    Dernier message: 23/01/2007, 16h35

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