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 :

Impossible de créer corectement une texture [SDL 2.0]


Sujet :

SDL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Ile Maurice

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2012
    Messages : 46
    Par défaut Impossible de créer corectement une texture
    Bonjour, j'aimerais pouvoir créer manuellement (et non pas en charger) des textures avec la SDL2, alors j'ai écrit cette fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SDL_Texture *SDL_Texture_create(SDL_Renderer *renderer, const unsigned width, const unsigned height, const Uint8 Rmask, const Uint8 Gmask, const Uint8 Bmask)
    {
        SDL_Texture *texture = NULL;
     
        if((texture = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_STATIC, width, height)) == 0)
            error_sdl();
     
        if((SDL_SetTextureColorMod(texture, Rmask, Gmask, Bmask)) < 0)
            error_sdl();
     
        return texture;
    }
    Je ne donne pas tout l'algorithme du programme complet car il est assez long, et parce que je pense que l'essentiel du soucis est ici. J'ai aussi un soucis avec le second paramètre de SDL_CreateTexture(), je ne sais pas vraiment qu'elle constante utiliser.

    La texture est bien créee, seulement il y a un gros soucis au niveau des couleurs :



    Elle ne sont pas du tout respectés, et affichent nimporte quoi ! Petite parenthèse j'ai ce même soucis lorsque je souhaite charger des images de 64x64.

    Bon ici plusieurs textures ont étés créees avec toutes une taille, un angle de rotation, une position et des couleurs différentes.

    J'aimerais donc savoir ici : Pourquoi les couleurs ne sont pas du tout respectées ? En espérant qu'il y ait aussi une solution à ce problème. Merci.

    Sinon juste pour préciser au niveau de l'OS je suis sous la dernière version d'Ubuntu.

  2. #2
    Inactif  
    Homme Profil pro
    c++ java php javascript
    Inscrit en
    Octobre 2013
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : c++ java php javascript
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2013
    Messages : 374
    Par défaut
    chez moi je fais ça et ça marche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    texture = SDL_CreateTexture(renderer,SDL_PIXELFORMAT_ARGB8888,SDL_TEXTUREACCESS_STATIC,W,H);

  3. #3
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 158
    Billets dans le blog
    152
    Par défaut
    Bonjour,

    Essayez de désactiver le masque, pour commencer.
    Ensuite, quel est le format que vous utilisez pour créer vos textures ?
    Êtes vous sur que c'est du RGBA ? (sur 32 bits) ?
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  4. #4
    Membre actif
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Ile Maurice

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2012
    Messages : 46
    Par défaut
    Désactiver le masque ? C'est à dire supprimer cette ligne ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        if((SDL_SetTextureColorMod(texture, Rmask, Gmask, Bmask)) < 0)
            error_sdl();
    Lorsque je fait cela j'obtient un résultat très semblable, mais les couleurs sont alors beaucoup plus sombre :



    Je ne sais pas vraiment quel format utiliser, ici j'ai utilisé SDL_PIXELFORMAT_RGBA8888 en pensant qu'il était le mieux adapté. J'ai aussi essayé SDL_PIXELFORMAT_ARGB8888, mais cela afiche toujours nimporte quoi.

  5. #5
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 158
    Billets dans le blog
    152
    Par défaut
    Le format a utilisé est celui que vous utilisez pour créer vos textures en mémoire. C'est le format des pixels de la surface.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  6. #6
    Membre actif
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Ile Maurice

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2012
    Messages : 46
    Par défaut
    Je suis désolé si je ne comprend pas très bien, le seul endroit ou j'ai indiqué le format à utiliser est lors de la création de la texture :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if((texture = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_STATIC, width, height)) == 0)
            error_sdl();
    Que dois-je faire plus précisément ?

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

Discussions similaires

  1. [lomboz 3.2]impossible de créer une nouvelle action
    Par olivier57b dans le forum Struts 1
    Réponses: 1
    Dernier message: 03/03/2007, 11h34
  2. Créer une texture transparente
    Par nicoenz dans le forum OpenGL
    Réponses: 21
    Dernier message: 09/01/2007, 14h24
  3. Réponses: 5
    Dernier message: 09/11/2006, 10h36
  4. Réponses: 1
    Dernier message: 30/12/2005, 17h14
  5. Réponses: 17
    Dernier message: 03/12/2004, 14h33

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