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

Windows Discussion :

[API Win32]Problème déplacement horizontal de sprites


Sujet :

Windows

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de nikau6
    Homme Profil pro
    Inscrit en
    Février 2008
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Février 2008
    Messages : 406
    Par défaut [API Win32]Problème déplacement horizontal de sprites
    Bonjours,

    Je programme actuellement un moteur de jeux 2D avec l'API win32, et simplement avec l'API win32.

    Lors du déplacement de sprites verticalement, tous va bien, mais lorsque je les déplaces horizontalement, c'est pas terrible.C'est légèrement saccadé.Par moments, c'est comme ci certaines partis du sprite étaient décalée par rapport à d'autres.
    Comment y remédier?

    Merci

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Passes-tu par un "double" buffer?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre très actif Avatar de nikau6
    Homme Profil pro
    Inscrit en
    Février 2008
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Février 2008
    Messages : 406
    Par défaut
    Oui, j'utilise une sorte de double buffer.Je creer un HDC mémoire, un bitmap vierge, je copie la scéne dans le bitmap vierge, et je recopie le tous dans le DC de ma fenêtre avec la fonction BitBlt();

    Mon problème n'est pas un problème de scintillement que l'on peux avoir lorsque l'on n'utilise pas de double buffer.

    Il y a comme un décalage entre certaines partis du sprite, mais seulement en déplacement horizontale

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Oui, ça ressemble à un problème dû à une lenteur de la copie d'image.
    Ton bitmap intermédiaire, l'as-tu créé avec CreateDIBSection() ou CreateCompatibleBitmap()? Je pense que ça sera plus rapide à copier avec le second...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre très actif Avatar de nikau6
    Homme Profil pro
    Inscrit en
    Février 2008
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Février 2008
    Messages : 406
    Par défaut
    J'utilise CreateCompatibleBitmap()

    Voila à quoi ca ressemble:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     mHdc = GetDC(mHwnd);
     mBufferDC = CreateCompatibleDC(mHdc); 
     mHbitmapBuffer = CreateCompatibleBitmap(mHdc, mWidth, mHeight);
    ...
    BitBlt(mHdc, 0, 0, mWidth, mHeight, mBufferDC, 0, 0 ,SRCCOPY);

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Dans ce cas, je ne vois pas trop comment corriger le problème.
    Par contre, au lieu du GetDC(), ne devrais-tu pas avoir un BeginPaint() ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Réponses: 10
    Dernier message: 03/03/2007, 13h46
  2. API Win32 problème de fermeture de fenêtre
    Par Ano dans le forum Windows
    Réponses: 3
    Dernier message: 13/12/2006, 21h37
  3. [API WIN32] Double problème: DialogBox && Statusbar
    Par Ackboo dans le forum Windows
    Réponses: 9
    Dernier message: 20/08/2006, 13h15
  4. Réponses: 2
    Dernier message: 26/07/2006, 00h33
  5. Problème de declaration de variable (API Win32)
    Par barbarello dans le forum Windows
    Réponses: 2
    Dernier message: 30/01/2006, 09h57

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