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

DirectX Discussion :

Copie d'une surface dans le backbuffer


Sujet :

DirectX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 50
    Par défaut Copie d'une surface dans le backbuffer
    Bonjour,

    Je travaille sur un éditeur de cartes en C/C++ affichant plusieurs éléments rendus à l'aide de DirectX dans différentes fenêtres.

    Ces éléments ne sont rendus que si nécessaire (le chipset lorsque l'on change de fichier, la carte lorsqu'elle est éditée) et sont conservés dans des surfaces.

    Pour éviter les rendus superflus, je procède (enfin...j'essaie) comme suit :
    Rendu du chipset ou de la carte chacun dans une surface -> Copie de cette surface dans le backbuffer -> Ajout du curseur si nécessaire -> Affichage dans une fenêtre.

    Mon problème tient dans la copie de la surface que je créé à celle du backbuffer.
    J'ai essayé à l'aide de UpdateSurface, GetRenderTargetData, avec des surfaces créé à l'aide de D3DXCreateTexture, CreateOffscreenSurface et CreateRenderTarget, le tout sans résultat (D3DERR_INVALIDCALL...). Et voulant éviter de rendre à chaque frame, j'exclus l'utilisation d'un quad texturé pour l'affichage...

    Comment pourrais-je procéder pour réaliser cette *simple* copie ?

  2. #2
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par -Mod- Voir le message
    Et voulant éviter de rendre à chaque frame, j'exclus l'utilisation d'un quad texturé pour l'affichage...
    C'est dommage, c'est pourant comme ca qu'on "copie" une texture dans une rendering-target.

    Et pourquoi tu veux exclure le rendu à chaque frame ?
    Comment tu gères le changement de buffer ? (alt-tab, resize, ...). Sans compter que tu n'as jamais un seul buffer à priori !

  3. #3
    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
    Pareil, tu as voulu faire "plus simple" mais pour le coup tu te prends beaucoup plus la tête que si tu rendais simplement chaque frame.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 50
    Par défaut
    Je souhaite exclure le rendu à chaque frame pour éviter d'utiliser à 40~90% le système, comme c'était le cas dans mes précédents essais. Avoir le PC qui rame légèrement à cause d'un éditeur de map 2D, c'est pas ce qu'il y a de plus agréable :/

    Comment tu gères le changement de buffer ? (alt-tab, resize, ...). Sans compter que tu n'as jamais un seul buffer à priori !
    Hum, la je ne suis pas sûr de bien comprendre la question...

    Sinon, je venais justement dire que j'avais trouvé la solution : surfaces créées à l'aide de D3DXCreateTexture, et copiées avec StretchRect.

  5. #5
    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
    Ce n'est pas l'utilisation d'un quad texturé par rapport à un UpdateTexture ou autre qui va te faire ramer.

  6. #6
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Hmmm... chez moi StretchRect est plus lent que le dessin d'un Quad... sauf quand toute la surface de destination est utilisée...

    Bien sur on parle de dessin de quad sans z-testing/alpha-testing etc...

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

Discussions similaires

  1. [ORACLE] Copie d'une table dans une table temporaire
    Par david71 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 09/08/2007, 11h23
  2. Copie d'une ligne dans une table
    Par Logp524 dans le forum WinDev
    Réponses: 8
    Dernier message: 23/06/2007, 19h41
  3. [VBA Excel] Copie d'une feuille dans un autre fichier
    Par nattyman dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/08/2006, 10h35
  4. [VBA] Copy d'une selection dans Word
    Par marsupoilu dans le forum VBA Word
    Réponses: 1
    Dernier message: 04/07/2006, 09h27
  5. Sauvegarder une surface dans un fichier
    Par Freakazoid dans le forum DirectX
    Réponses: 6
    Dernier message: 18/08/2002, 15h23

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