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 :

Obtenir la taille d'une texture


Sujet :

SDL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 16
    Par défaut Obtenir la taille d'une texture
    Bonsoir !

    Je suis occupée à créer une fonction pour découper un sprite en plusieurs frame, mais il me faut la taille de l'image. Certes je pourrais l'indiquer moi même, mais je trouve plus pratique de pouvoir l'obtenir et donc de ne pas m'en soucier.

    Sous SDL 1.2 on faisait simplement surface.w ou surface.h. Mais avec les textures, il n'y a aucune info.

    Comment puis-je le faire ?
    Merci !

  2. #2
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    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 226
    Par défaut
    Pourtant il y a bel et bien w et h dans SDL_Texture.

    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
     
    /* Define the SDL texture structure */
    struct SDL_Texture
    {
        const void *magic;
        Uint32 format;              /**< The pixel format of the texture */
        int access;                 /**< SDL_TextureAccess */
        int w;                      /**< The width of the texture */
        int h;                      /**< The height of the texture */
        int modMode;                /**< The texture modulation mode */
        SDL_BlendMode blendMode;    /**< The texture blend mode */
        Uint8 r, g, b, a;           /**< Texture modulation values */
     
        SDL_Renderer *renderer;
     
        /* Support for formats not supported directly by the renderer */
        SDL_Texture *native;
        SDL_SW_YUVTexture *yuv;
        void *pixels;
        int pitch;
        SDL_Rect locked_rect;
     
        void *driverdata;           /**< Driver specific texture representation */
     
        SDL_Texture *prev;
        SDL_Texture *next;
    };

  3. #3
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 16
    Par défaut
    Ah zut, je me fiais uniquement à l'IDE, (code::blocks) qui d'habitude me liste tout ça.

    Merci !

    Néanmoins j'ai quand même un problème, si j'essaye d'accéder à texture->w par exemple il me marque ceci :

    error: dereferencing pointer to incomplete type

    Etrange... Je procédais ainsi avant.

  4. #4
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    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 226
    Par défaut
    Un bout de code me serait plus utile ,la je vais devoir supposé.

    Donc si tu ne met pas texture en pointeur c'est normal (cf revoir les pointeurs).

  5. #5
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 16
    Par défaut
    J'oubliais de préciser, je code en C.

    Voilà un début de fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    /* Découpe une image en frame */
    void cuttingTexture(SDL_Texture *texture)
    {
        int i = texture->w;
    }
    Elle ne fait pas encore son travail car je voulais juste tester pour le moment si je pouvais récupérer la taille.

    Texture est bien déclaré en pointeur. Et malgré tout j'ai cette erreur...

  6. #6
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    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 226
    Par défaut
    N'oublie pas de mettre les balise CODE.
    Ah effectivement , j'ai pas la SDL2 mais en regardant de plus prés en faite erreur dit grosso modo qu'il ne connait pas la structure externe de SDL_Texture , donc ne sait pas a quoi correspond w.
    Si tu veux connaitre w et h , il faut lui indiquer la structure donc :

    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
     
    struct SDL_Texture
    {
        const void *magic;
        Uint32 format;              /**< The pixel format of the texture */
        int access;                 /**< SDL_TextureAccess */
        int w;                      /**< The width of the texture */
        int h;                      /**< The height of the texture */
        int modMode;                /**< The texture modulation mode */
        SDL_BlendMode blendMode;    /**< The texture blend mode */
        Uint8 r, g, b, a;           /**< Texture modulation values */
     
        SDL_Renderer *renderer;
     
        /* Support for formats not supported directly by the renderer */
        SDL_Texture *native;
        void *yuv; // chez moiil connait pas la struture SDL_SW_YUVTexture 
        void *pixels;
        int pitch;
        SDL_Rect locked_rect;
     
        void *driverdata;           /**< Driver specific texture representation */
     
        SDL_Texture *prev;
        SDL_Texture *next;
    };
     
    /* Découpe une image en frame */
    void cuttingTexture(SDL_Texture *texture)
    {
    int i = texture->w;
    }

Discussions similaires

  1. Obtenir la taille d'une vue matérialisée
    Par sissi_2012 dans le forum SQL
    Réponses: 0
    Dernier message: 23/01/2012, 23h12
  2. OpenGL calculer la taille d'une texture en memoire
    Par Pinokio3x7 dans le forum OpenGL
    Réponses: 3
    Dernier message: 03/04/2010, 09h28
  3. Obtenir la taille d'une variable
    Par devtroll dans le forum Langage
    Réponses: 6
    Dernier message: 04/08/2008, 15h55
  4. Obtenir la taille d'une image chargée
    Par Invité dans le forum Flash
    Réponses: 9
    Dernier message: 15/11/2006, 05h34
  5. select pour obtenir la taille de remplissage d'une bdd
    Par sqlakf76 dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 15/07/2005, 13h44

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