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 :

Recuperer le BackBuffer d'une fenetre DirectX


Sujet :

DirectX

  1. #1
    Membre habitué
    Inscrit en
    Juin 2008
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 162
    Points : 172
    Points
    172
    Par défaut Recuperer le BackBuffer d'une fenetre DirectX
    Bonjour
    J'aimerai pouvoir récupérer les données d'une fenêtre DirectX dont je ne connais que le handler windows. J'ai essayé la méthode utilisée dans le logiciel Taksi en récupérant le GetFrontBuffer. Mais le problème c'est que ça renvoi le buffer de l'écran entier et donc si la fenêtre est cachée par une autre on obtient un peu n'importe quoi. J'aimerai donc savoir s'il était possible à partir du handler de la fenêtre DirectX de récupérer le BackBuffer de cette fenêtre.

    Merci

  2. #2
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 386
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 386
    Points : 20 475
    Points
    20 475
    Par défaut
    je ne comprends pas ce que tu veux faire au final; c'est pour faire un programme de capture d'écran ?
    Je doute que cela soit possible car si un une fenêtre qui a crée un objet Direct 3D est masquée par une autre elle est réellement masquée.
    La fenêtre ne remet à jour que si elle repasse en premier plan et réactualise son affichage.
    Donc moralité quoique tu fasses si la fenêtre est partiellement masquée tu obtiendras effectivement n'importe quoi..

  3. #3
    Membre habitué
    Inscrit en
    Juin 2008
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 162
    Points : 172
    Points
    172
    Par défaut
    Es tu sur que le rendu 3D de DirectX ne se remet pas à jour en entier? Ca m'étonnerai que windows injecte des volumes de clipping.
    Ça réduirai les perfs au lieu de les améliorer...
    Apres au niveau du "composing" entre les fenêtres c'est sur que windows ne récupère que les parties dont il a besoin ...
    Mais justement je ne veux pas accéder au buffer de l'écran entier, mais à la surface DirectX de la fenêtre qui m'intéresse ...

  4. #4
    Membre expérimenté

    Profil pro
    Programmeur
    Inscrit en
    Août 2002
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Août 2002
    Messages : 1 091
    Points : 1 679
    Points
    1 679
    Par défaut
    Citation Envoyé par goast Voir le message
    Es tu sur que le rendu 3D de DirectX ne se remet pas à jour en entier? Ca m'étonnerai que windows injecte des volumes de clipping.
    Ça réduirai les perfs au lieu de les améliorer...
    Apres au niveau du "composing" entre les fenêtres c'est sur que windows ne récupère que les parties dont il a besoin ...
    Mais justement je ne veux pas accéder au buffer de l'écran entier, mais à la surface DirectX de la fenêtre qui m'intéresse ...
    tu fais comme Fraps, tu "hookes" ton intercepteur de device d3d entre l'appli et le runtime. Et tu utilises GetRendertargetData pour lire le backbuffer. Bien entendu il faut renouveler le code pour chaque API (d3d7,6,8,9,10,11 etc).

  5. #5
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 386
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 386
    Points : 20 475
    Points
    20 475
    Par défaut
    Citation Envoyé par goast Voir le message
    Es tu sur que le rendu 3D de DirectX ne se remet pas à jour en entier? Ca m'étonnerai que windows injecte des volumes de clipping.
    Ça réduirai les perfs au lieu de les améliorer...
    Apres au niveau du "composing" entre les fenêtres c'est sur que windows ne récupère que les parties dont il a besoin ...
    ...
    1-tu n'as pas répondu avec précision à la question posée : que veux-tu faire ?
    2-oui tu as raison je me trompe peut-être le rendu il est effectué intégralement..
    mais ce que tu poses comme question c'est peut-être trop complexe pour y répondre ; il fau taper dans le bas-niveau , intercepter des appels à Direct3D comme LeGreg dit.

Discussions similaires

  1. Réponses: 7
    Dernier message: 09/07/2007, 21h14
  2. recuperer un attribut apres affichage d'une fenetre
    Par DragonLebna dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 16/05/2007, 19h22
  3. Réponses: 3
    Dernier message: 11/05/2006, 16h34
  4. [VB6] [Système] Récupérer le contenu d'une fenêtre DOS
    Par Nounours666 dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 18/11/2004, 16h38
  5. redimensionnement d'une fenetre DirectX
    Par tibyann dans le forum DirectX
    Réponses: 3
    Dernier message: 11/06/2004, 13h09

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