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 :

Plusieurs couches en SDL?


Sujet :

SDL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2007
    Messages : 18
    Par défaut Plusieurs couches en SDL?
    Bonjour à tous!
    Petite question pour ceux qui maitrisent un peu la SDL:
    Je tente de faire un programme a base de layers, a savoir que je vais avoir 3 couches, BackgroundLayer , ObjectsLayer et FontLayer.
    Donc 3 SDL_Surface*.
    Apres, je declare une 4e surface, screen, qui servira d'ecran (donc DOUBLE_BUFFER etc...).
    Mon but, c'est de charger mes différents éléments sur les layers qui leurs correspondent, et ensuite de coller ces layers sur l'ecran.
    En gros, je BlitSurface sur chacune des 3 premieres surfaces, puis je BlitSurface les layers eux memes sur la surface ecran.
    A priori, ce devrait etre faisable, mais j'y arrive pas .
    Un bout de code tout bete pour illustrer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        SDL_Surface *loadedImage = SDL_LoadBMP( "../sprites/fond.bmp" );    
        SDL_BlitSurface(loadedImage,NULL,screen,NULL);
        SDL_Flip (screen);
    Ca, ca marche bien (encore heureux me direz vous).
    Mais des que j'essaie de passer par une SDL_Surface intermediaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        SDL_Surface *loadedImage = SDL_LoadBMP( "../sprites/fond.bmp" );
        SDL_Surface *Back = NULL;
        SDL_BlitSurface(loadedImage,NULL,Back, NULL);
        SDL_UpdateRect(Back,0,0,0,0);
        SDL_BlitSurface(Back,NULL,screen,NULL);
        SDL_Flip (screen);
    J'ai plus rien a l'ecran, avec ou sans le UpdateRect, bref, c'est relou.

    Donc si quelqu'un, en voyant mon petit souci, avait une idée géniale et pouvait pointer du doigt mon incompétence en la matière (en me disant au passage ce que je peux faire pour remedier au probleme plus haut, evidemment), il serait le bienvenu.

    Merci a vous

    F.

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SDL_Surface *Back = NULL;
    On ne peut pas vraiment dire que Back soit une surface correctement créée
    Pour créer une nouvelle surface valide il faut utiliser SDL_CreateRGBSurface si mes souvenirs sont bons.

    Mais bon, pourquoi passer par des surfaces intérmédiaires ? Dessiner les couches dans l'ordre directement sur la surface principale ne suffit pas ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2007
    Messages : 18
    Par défaut
    Bah, c'est a dire que...
    Ouais remarque...
    Au depart, je comptais importer un paquet d'objets, suivant le champ "destination" qu'ils allaient contenir je les Blitais sur la Surface correspondante, et apres j'ai plus qu'a Bliter les surfaces en question sur l'ecran, ca me parraissait plus propre (et pis surtout plus simple si un jour l'envie me prenais de faire un scrolling differentiel).
    Mais effectivement je peux me contenter de tout blitter sur l'ecran, ceux qui ont un champ background en premier, etc...

    Mais c'est frustrant, c'est pas propre et ca resoud pas le probleme de départ enfin je vais quand meme jeter un coup d'oeil au SDL_CreateRGBSurface parce que maintenant que tu le dis, ca m'evoque quelque chose
    Je pourrais tester que ce soir parce que la je bosse, mais je vous tiens au courant

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Mais c'est frustrant, c'est pas propre et ca resoud pas le probleme de départ
    Je ne vois pas tellement ce que ça change. Le résultat sera le même, au niveau code tu peux garder une abstraction en couches, tout ce qui change est la fonction de rendu.
    Et puis ça résoud le problème de départ dû aux allocations de surfaces manquantes, non ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2007
    Messages : 18
    Par défaut
    Ouais bien entendu, lol je suis juste un peu chiant et j'aime pas dire une connerie, ou partir sur un idée fausse (ceci étant je commence a m'y faire )
    Je vais tester ca des que je pourrais, mais a priori devrait pas y avoir de souci.
    Merci m'sieur


    [EDIT @ 17h35]

    Yeaaah en effet ca marche mieux quand on initialise proprement sa surface avec SDL_CreateRGBSurface
    Merci encore

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

Discussions similaires

  1. Plusieurs couches de dessin
    Par Foogiz972 dans le forum Graphisme
    Réponses: 1
    Dernier message: 02/11/2008, 18h23
  2. Novice : plusieurs couches de panneaux
    Par tomagold dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 16/03/2007, 16h06
  3. Plusieurs couches Graphics sur JPanel, etc..
    Par aristeas dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 17/02/2007, 09h59
  4. [AWT] plusieurs couches
    Par ®om dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 04/10/2006, 15h17
  5. Gestion de plusieurs couches d'affichage
    Par esteban63 dans le forum Windows
    Réponses: 2
    Dernier message: 08/03/2006, 21h21

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