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

MFC Discussion :

Comment Activer/Désactiver Direct3D sous VC++ ?


Sujet :

MFC

  1. #1
    liv
    liv est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 124
    Points : 41
    Points
    41
    Par défaut Comment Activer/Désactiver Direct3D sous VC++ ?
    Bonjour à tous !
    Dernièrement j'ai eu quelques soucis d'affichage avec une fonctionnalité d'un soft de prise de contrôle distant et il s'est avéré que si je désactivais Direct3d (ou l'accélération matérielle) au bon moment, mon problème se résolvait.

    Toutefois, je voudrais éviter de me taper cette manip à la mano à chaque fois et mon idée était de créer un petit exe permettant de le faire.

    En ce sens, est-ce que quelqu'un connait soit les routines VC++ (MFC ou pas) permettant d'Activer/Désactiver Direct3D ? (un peu comme le bouton sous DxDiag de directX finalement)
    Est-ce qu'il existe aussi des méthodes permettant de connaître l'état (Activé ou Désactivé) de Direct3D ?

    Merci d'avance.

    Liv.
    -----
    Liv

  2. #2
    Membre éclairé
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Points : 668
    Points
    668
    Par défaut
    essaye de chercher direct3D dans la base de registre, avec un peut de chance tu aura une clef qui te l'active et desactive....
    Qui va piano va sano...

  3. #3
    liv
    liv est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 124
    Points : 41
    Points
    41
    Par défaut
    L'idée est bonne mais j'ai rien trouvé de concluant. De toute façon, même si il existait une clé, tu penses que le fait de changer sa valeur permettrait d'Activer/Désactiver en simultanée Direct3D ?
    Dans mon cas je ne pensa pas que cela aurait une quelconque incidence car le soft en question ne s'appuie pas sur des valeurs de registre pour utiliser ou non Direct3D...il utilise des méthodes directes de bas niveau liées à DirectX.

    Je suis en train de mettre le nez dedans...DirectX et compagnie...c'est un vrai bonheur. Une vraie usine à gaz ! lol
    Mais je pense qu'il existe des méthodes toute prêtes...il suffit de les trouver quoi.
    -----
    Liv

  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 : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Activer ou désactiver Direct3D ne veut pas dire grand chose. Surtout si tu as du code l'utilisant. C'est l'accélération hardware que tu veux désactiver (ie. utiliser le rendu software) ?

  5. #5
    liv
    liv est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 124
    Points : 41
    Points
    41
    Par défaut
    Oui oui tout à fait...il s'agit effectivement de désactiver l'accélération matérielle. Mais comme j'avais le même résultat en désactivant Direct3D sous DxDiag de DirectX, je me suis dis que c'était à peu près la même chose.
    Enfin...de toute façon c'est exactement ce que je cherche à faire...désactiver l'accélération matérielle via une ou plusieurs méthodes sous Visual C++.
    -----
    Liv

  6. #6
    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 : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Ok.

    Par contre, est-ce que dans ton code tu utilises D3D ou bien tu n'as aucun bout de code qui y fasse référence ?

    Et puis faudrait tout de même savoir pourquoi désactiver l'accélération hardware résoud ton problème, bizarre cette histoire.

  7. #7
    liv
    liv est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 124
    Points : 41
    Points
    41
    Par défaut
    Bien...en fait pour te situer d'avantage la situation, je ne gère absolument pas le code source du logiciel.
    Il s'agit du logiciel HiClass conçu et réalisé à Taïwan et spécialisé dans le domaine des laboratoires multimédia à caractère pédagogique. Il fait en gros de la prise de contrôle distant...et d'autre choses bien entendu.

    Comme tu peux t'en douter nous avons poser le problème aux asiatiques qui nous ont répondu que le logiciel ne gérait pas la fonctionnalité en question, dans le cadre d'un double-écran.
    Pendant notre recherche de résolution de problème nous avons remarqué que cette fonctionnalité fonctionnait si l'on désactivait l'accélération matérielle.
    Sur ce, l'idée est de lancer, via un bouton du soft, cette désactivation juste avant de lancer la fonctionnalité en question...ça on peut le faire, on a cette liberté.

    Il faut donc que je ponde un exe permmettant de le faire...capable d'ailleur de répérer l'état de l'accélération matérielle aussi...et de l'activer/désactiver en conséquence.
    En gros, je pars de zéro. lol

    Voilà le contexte.
    -----
    Liv

  8. #8
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 749
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 749
    Points : 10 666
    Points
    10 666
    Billets dans le blog
    3
    Par défaut
    Probleme de carte graphique et de driver sûrement... (ça serait pas une carte ATI des fois ?) tu as essayé sur un autre PC ?

  9. #9
    liv
    liv est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 124
    Points : 41
    Points
    41
    Par défaut
    Oui avec plusieurs. Visiblement ça ne viens pas de la carte. C'est vraiment le soft qui ne gère pas donc du coup je suis obligé de me taper le dev. En même temps ça peut-être intéressant.
    -----
    Liv

  10. #10
    mat.M
    Invité(e)
    Par défaut
    Il faut donc que je ponde un exe permmettant de le faire...capable d'ailleur de répérer l'état de l'accélération matérielle aussi...et de l'activer/désactiver en conséquence.
    En gros, je pars de zéro. lol
    tu veux dire désinstaller temporairement Direct X ( c'est ce que je crois comprendre ) ?
    La seule solution est de désinstaller totalement Direct X chose qui est compliquée voire impossible

  11. #11
    mat.M
    Invité(e)
    Par défaut
    je crois que c'est assez ardu ce que tu demandes là
    Il faut peut-être directement toucher aux drivers avec le DDK ( ce que doit faire DxDiag )

    Voir des fonctions comme:
    DrvDisablePDEV
    The DrvDisablePDEV function is used by GDI to notify a driver that the specified PDEV is no longer needed.

    VOID
    DrvDisablePDEV(
    IN DHPDEV dhpdev
    );
    Parameters
    dhpdev
    Handle to the PDEV of the physical device to be disabled. This value is the handle returned by DrvEnablePDEV.
    Headers
    Declared in winddi.h. Include winddi.h.

    Comments
    If the physical device has an enabled surface, GDI calls DrvDisablePDEV after calling DrvDisableSurface. The driver should free any memory and resources used by the PDEV.

    DrvDisablePDEV is required for graphics drivers.

    See Also
    DrvAssertMode, DrvDisableSurface, DrvEnablePDEV
    Est-ce qu'il faut écrire un driver spécifique ??
    Mystère
    Celui qui apporte une solution je lui paie une caisse de champagne


  12. #12
    liv
    liv est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 124
    Points : 41
    Points
    41
    Par défaut
    Ah bah t'es rassurant !
    Je pensais que ça allait être compliqué mais là...de toute façon dès que l'on touche à DirectX c'est la merde.

    Bon...en gros ce n'est pas gagné...c'est ça ?
    -----
    Liv

  13. #13
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par liv
    Ah bah t'es rassurant !
    Je pensais que ça allait être compliqué mais là...de toute façon dès que l'on touche à DirectX c'est la merde.

    Bon...en gros ce n'est pas gagné...c'est ça ?

    euuhh je serais tenté de dire oui .... à moins que quelqu'un d'autre nous dise comment faire la même opération que fait DxDiag ( à savoir désactiver l'accélération matérielle )

  14. #14
    liv
    liv est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 124
    Points : 41
    Points
    41
    Par défaut
    Oui en gros c'est ça. Je suis curieux de savoir quelles routines appelle ce fameux bouton de DxDiag.
    -----
    Liv

  15. #15
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par liv
    Oui en gros c'est ça. Je suis curieux de savoir quelles routines appelle ce fameux bouton de DxDiag.
    je pense que DxDiag interrroge en interne les drivers qui sont installés
    Eventuellement les active ou les désactive .
    Sinon je n'ai pas trouvé d'API permettant de jouer sur l'accélération matérielle

  16. #16
    liv
    liv est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 124
    Points : 41
    Points
    41
    Par défaut
    Tu imagines si il n'y avait qu'une méthode permettant d'activer ou désactiver les drivers ? le pied...faut bien rêver. En même temps faut tomber dessus.

    Je continue à chercher. Je sais en tous cas que pour DirectDraw il y a des choses similaires.
    -----
    Liv

  17. #17
    mat.M
    Invité(e)
    Par défaut
    eh bien bonne chance

  18. #18
    liv
    liv est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 124
    Points : 41
    Points
    41
    Par défaut
    Merci à toi. :o
    Je ne ferai peut-être pas la même tête dans quelques temps.
    Ca sera plus de ce genre
    -----
    Liv

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/07/2009, 12h08
  2. Réponses: 2
    Dernier message: 05/03/2009, 10h57
  3. Comment activer/désactiver la touche échap
    Par CBen dans le forum VBA Access
    Réponses: 2
    Dernier message: 04/02/2008, 16h18
  4. Comment activer/désactiver les effets de flou de DWM? (FAQ)
    Par zubrow dans le forum Windows Vista
    Réponses: 3
    Dernier message: 01/12/2007, 22h15

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