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 :

Sauvegarder les coordonnées de plusieurs images d'un sprite.


Sujet :

SDL

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    431
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 431
    Points : 172
    Points
    172
    Par défaut Sauvegarder les coordonnées de plusieurs images d'un sprite.
    Bonsoir, je souhaiterais savoir quel était la meilleur solution pour sauvegarder les coordonnées de plusieurs images que l'on a découpés dans un sprite.

    Par exemples si on a dans un sprite 30 images (w et h même valeur pour les 30 images) et que je veux découper chaque image et sauvegarder les coordonnées de chaque image quel est la meilleur solution faire:

    — faire un tableau de SDL_Rect à 2 dimensions ce qui fera 30 SDL_Rect ou bien
    — faire un tableau de int à 2 dimensions le 1er tableau sera pour les 30 images et le 2eme sera pour les coordonnées x, y, w, h donc int[30][4] ou bien
    — faire une struct qui contiendrait les valeurs x, y, w, h ce qui ferai 30 struct

    Est-ce que c'est embêtant si on créer une 30taine de SDL_Rect ou plus (si on avait un sprites contenant 100 images de tailles identiques) est-ce que cela peut ralentir le programme est-ce une façon naïve de coder ?

    C'est pour ensuite utilisé les coordonnées de ces images pour les blitté

    Voilà merci par avance.

    Ps.: Est-ce que c'est normal que le site me déconecte automatiquement toute les 5 ou 10 minutes environ

  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
    Il y a pas de règle a suivre , et niveau perf faut vraiment mal coder pour avoir ce genre de souci.

    Moi je te conseille aucune des trois propositions après tu fait ce que tu veux mais la meilleur solution reste un seul SDL_Rect par personnage.
    D'ailleurs la plupart des jeux pro (en tout cas anciens) faisait comme cela , tout les perso en 16x32 ou 32x32 et on se cassait pas la tête
    Pour les jeux PS1 ,PS2 qui utilisée des sprites 2D était guère différent juste que la résolution des perso était légèrement plus grosse (32x64 en moyenne).

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    431
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 431
    Points : 172
    Points
    172
    Par défaut
    Merci pour ta réponse, donc si je comprends bien pour un sprite comme ceci par exemple (pris sur ce site) :

    Nom : sprites.png
Affichages : 254
Taille : 4,0 Ko là il y a 24 animations ou 24 images (24 chatons) donc je dois faire 24 SDL_Rect.

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


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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Le seul impact à avoir plein de SDL_Rect, c'est un impact de mémoire. Toutefois, je doute que vous soyez avec une machine ayant moins de 4 Mo donc cela ira amplement. Niveau perf, c'est un tableau linéaire (ou au pire 2D), donc il y a pas de souci dessus, on peut pas vraiment mieux faire dans un tel cas.
    Si vraiment vous êtes certains que vous n'avez jamais de changement de largeur/hauteur, alors faites une structure contenant x et y et faites un tableau de votre propre structure. Vous allez gagner en mémoire, mais pas vraiment en performances, car il y aura la conversion en SDL_Rect à faire tôt ou tard (même si négligeable) et surtout, vous perdez en modularité (pour le jour où vous avez des largeur/hauteur qui changent ).
    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.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    431
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 431
    Points : 172
    Points
    172
    Par défaut
    Merci pour ta réponse

  6. #6
    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
    là il y a 24 animations ou 24 images (24 chatons) donc je dois faire 24 SDL_Rect.
    Non un seul SDL_Rect suffit.
    un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    rect.x = i*32;
    rect.y = choix_anim*32;
    rect.w = 32;
    rect.h = 32;
    Après j'en convient que ton sprites ne permet pas que ce genre de code marche convenablement , je dirait que les sprites sont mal agencé.

    Pour ma part voici les sprites que j'utilise :


    Et le résultat :


    Je montre juste pour dire que je que je raconte c'est pas de la théorie hein

  7. #7
    Expert confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Points : 4 442
    Points
    4 442
    Par défaut
    Citation Envoyé par Kannagi Voir le message
    Après j'en convient que ton sprites ne permet pas que ce genre de code marche convenablement , je dirait que les sprites sont mal agencé.
    Bof, le calcul d'indices est plus compliqué, mais la même technique reste utilisable.
    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
    struct Anim {
       int start;
       int lenght;
    };
     
    Anim anims[] = {
       { 0, 3 }, { 3, 3 },
       { 6, 3 }, { 9, 3 },
       { 12, 3 }, { 15, 3 }
    };
     
    int const sprite_width = 16;
    int const sprite_height = 16;
     
    int anim_start = anims[choix_anim].start;
     
    rect.x = sprite_width * ((anim_start + frameNumber) % 6);
    rect.y = sprite_height * ((anim_start + frameNumber) / 6);
    rect.w = sprite_width;
    rect.h = sprite_height;

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    431
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 431
    Points : 172
    Points
    172
    Par défaut
    Désolé pour la réponse tardive.

    Merci Kannagi pour ton aide, et super ton jeux un vrai rpg !

    Iradrille Merci aussi pour ton aide et ton code.

Discussions similaires

  1. Récupérer les coordonnées d'une image sur JPanel
    Par abdel_java dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 03/11/2014, 22h09
  2. connaitre les coordonnées d'une image
    Par abdessalem10 dans le forum ImageJ
    Réponses: 0
    Dernier message: 17/04/2011, 03h39
  3. Sauvegarder les coordonnées d'un point dans une figure 3D
    Par Jean Dumoncel dans le forum MATLAB
    Réponses: 2
    Dernier message: 18/11/2009, 13h28
  4. Récupérer les coordonnées de plusieurs DIV dans une boucle PHP
    Par renaud26 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 05/11/2009, 10h23
  5. Déterminer les coordonnées d'une image
    Par blaise4714 dans le forum Images
    Réponses: 2
    Dernier message: 27/11/2006, 19h05

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