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 :

Afficher les possibilités d'acceleration 3D dans un Setup


Sujet :

DirectX

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 7
    Par défaut Afficher les possibilités d'acceleration 3D dans un Setup
    Tout d'abord Bonjours.

    Je débute en C++ et je me sers de la lib graphique Qt.
    J'ai besoin d'aide car j'ai l'intention de faire un setup de configuration.
    Avec le paramétrage de la résolution, du son, etc..

    J'ai réussi a récupérer les résolutions possible avec EnumDisplaySettings, qui permet a l'utilisateur de choisir sa résolution d'affichage (1280x1024, 1024x768, etc..).

    En revanche je bute complètement quant a la manière d'afficher les différents type d'accélération 3D possible.
    Par exemple, l'utilisateur aurait le choix entre: Direct 3D HAL et Direct 3D T&L HAL, etc..

    Si vous connaissez un moyens de faire cela en C++, avec Qt ou qt_windows.h (nécessaire pour EnumDisplaySettings), ou autre, je prend.
    Avec un petit exemple si possible, je ne cracherai pas dessus. =P

    Merci encore.

  2. #2
    Membre Expert Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 048
    Par défaut
    Bonjour,

    Tu devrais être dans la partie Applications->jeux3D->DirectX tu aurais plus de réponse

    Ce que tu demande est disponible avec l'API DirectX.
    Le mode HAL et REF sont les deux dispositifs possible de DirectX
    Un dispositif est composé d'un module de transformation, d'éclairage et de rasterisation. HAL est matériel et REF est logiciel.
    Pour demander à DirectX de s'informer sur ton matériel et créer l'environnement adéquate tu as plusieurs étapes à réaliser.

    1- Récupère le nombre de cartes graphiques sur la machine
    2- Récupère les modes d'affichages disponible pour chaque carte graphique
    IDirect3D9::EnumAdapterModes

    3- vérifie l'accélération graphique pour chaque mode
    IDirect3D9::CheckDeviceType

    4- Vérifie ce qui est possible avec la carte graphique (antialiasing etc..)

    De là, tu auras tout ce qu'il faut pour faire ce que tu désires

    bye

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 7
    Par défaut
    Merci beaucoup.

    J'ai essayé ceci dans un premier temps, je suis pas sûr du tout si c'est ça.
    Le soucis c'est que ca m'affiche plusieurs fois Direct3D HAL/Direct3D T&L HAL.

    Aussi, certaines personnes ont leur carte graphique qui s'affiche en double sur le setup original que j'essaie de reproduire, ça correspondrait a quelle accélération 3D ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    	IDirect3D9* pD3D = Direct3DCreate9(D3D_SDK_VERSION);
     
    	D3DDISPLAYMODE theMode;
    	D3DDEVTYPE devicetype;
    	D3DFORMAT Format = D3DFMT_R5G6B5; // 16 Bits
     
    	// Pour detecter les carte graphique
    	UINT iAmountDevices = pD3D->GetAdapterCount();
    	D3DADAPTER_IDENTIFIER9* psAdapterIdentifier=new(D3DADAPTER_IDENTIFIER9[iAmountDevices]);
    	for( UINT n = 0; n < iAmountDevices; n++ )
    	{
    		pD3D->GetAdapterIdentifier( n, 0, &psAdapterIdentifier[n] );
     
    		// boucles les differents Mode
    		UINT nCount = pD3D->GetAdapterModeCount( n, Format );
    		for( UINT j = 0; j < nCount; ++j )
    		{
    			// Test le Format
    			if( SUCCEEDED( pD3D->EnumAdapterModes( n, Format, j, &theMode) ) )
    			{
    				// Test l'acceleration 3D HAL
    				if( SUCCEEDED( pD3D->CheckDeviceType( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, Format, Format, true ) ) )
    				{
    					graphique->addItem( "Direct3D T&L HAL" );
    				}
     
    				// Test l'acceleration 3D REF
    				if( SUCCEEDED( pD3D->CheckDeviceType( D3DADAPTER_DEFAULT, D3DDEVTYPE_REF, Format, Format, true ) ) )
    				{
    					graphique->addItem( "Direct3D HAL" );
    				}
    			}
    		}
    	}

  4. #4
    Membre extrêmement actif

    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 399
    Par défaut
    il va te les afficher plusieurs fois parce qu'il renvoit hardware ou software MAIS aussi la résolution où c'est valide !!

    au fait D3DDEVTYPE_REF correspond au device software, pas à un device hardware.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 7
    Par défaut
    au fait D3DDEVTYPE_REF correspond au device software, pas à un device hardware.
    Donc D3DDEVTYPE_REF = Direct3D T&L HAL et D3DDEVTYPE_HAL = Direct 3D HAL ?

    il va te les afficher plusieurs fois parce qu'il renvoit hardware ou software MAIS aussi la résolution où c'est valide !!
    Oui, je vois, avec les différents type de rafraîchissement (60hz/75hz/etc..).
    Il me suffit d'enlever la boucle et de le lire qu'une fois ça devrait aller je pense.

    Il me reste deux colles.
    1/ Sur le setup original, chez certaines personnes, le setup leur propose carrément leurs Carte Graphique au lieux de Direct3D: HAL / T&L HAL.
    Leur Carte graphique a donc l'accélération graphique intégré mais comment le savoir ?

    2/ Dans le setup original, une fois le choix de l'accélération 3D fait, une valeur est enregistré dans le registre, son nom est GUIDDEVICE, et elle détient une valeur hexadecimal (HEX-8) sur deux ligne.
    Une idée de ce que je suis sensé récupérer comme valeur ?

  6. #6
    Membre extrêmement actif

    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 399
    Par défaut
    non, D3DDEVTYPE_REF c'est quand toutes les fonctions sont exécutées sur le cpu.

    après si tu veux différencier les possibilités hardware, il faut trouver les bons flags, et là je ne les connais pas.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 7
    Par défaut
    Personne a une idée pour les problèmes restant ?

  8. #8
    Membre Expert Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 048
    Par défaut
    Bonjour,
    Je pense que tu confond les 2 type de device. Comme l'a dis stardeath.
    non, D3DDEVTYPE_REF c'est quand toutes les fonctions sont exécutées sur le cpu.
    Donc tu n'a le choix que entre HAL et REF.
    REF ("Direct 3D REF" non pas "Direct 3D HAL") ne te sera pas utile pour un jeu actuel. La plupart ont une configuration minimum pour ça, il refuse de lancé le jeu sans carte graphique minimum. Ce mode ne sert réellement que au développeur matériel car il vise l'exactitude des résultats et non la performance. Tu peux cependant tout faire mais aucune réelle performance notable.

    HAL ("Direct 3D HAL" ou "Accélération hardware") te permet de tirer performance d'une carte graphique. Tu pourras ne faire que ce qu'elle te permet de faire mais tu auras une performance très élevé.

    Bref 99% des cas tu utilisera HAL ou tu ne pourras pas utilisé le logiciel car pas assez performant pour une utilisation temps réel.

    colle 1:
    Leur Carte graphique a donc l'accélération graphique intégré mais comment le savoir ?
    Comment? Une carte graphique est une accélération des calculs graphiques, si elle t'en propose plusieurs c'est que tu dois avoir un chipset intégré sur ta carte mère en plus peut-être
    Ton setup affiche les chaines de caractères que tu rentres dans ton objet nommé "graphique"?

    colle 2:
    C'est une valeur donné par le système donc elle peut toujours changer en fonction de ta machine.

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 7
    Par défaut
    D'accord, donc REF, inutile.

    @Astraya, en fait, le setup que je produit existe déjà, je m'exerce, et je le refais complètement en c++ avec la lib Qt, et quelques améliorations.
    Il ne me reste plus que ce soucis d'accélération 3D.

    Et sur l'original, chez beaucoup de monde, les accélérations sont:
    - Direct3D HAL
    - Direct3D T&L HAL
    - et souvent: La carte graphique proposé en double (mais le fait qu'il y ai écrit deux fois le nom de la CG doit être un bug je pense, faudrait que je demande a quelqu'un de sélectionner un coup l'un, un coup l'autre, pour voir si la valeur du GUIDDEVICE change dans la base de registre)

    Personnellement, j'ai une veille carte graphique nvidia 7200 GS, et le setup original ne me propose pas ma CG.

    Je le précise car tu as l'air de penser que c'est ma version du setup qui provoque ceci.

    Ce que je veux, c'est que mon setup réagisse comme l'original, donc qu'il ne propose pas ma CG (il doit avoir une bonne raison à cela), et que pour ceux qui ont leur CG proposé avec l'original, que ma version le propose également.

    De même, pouvoir proposer DirectD3 HAL et T&L HAL.

    Pour finir, écrire le GUIDDEVICE en fonction de ce qui est choisi dans la base de registre.

    J'ai trouvé quelque chose qui s'en rapproche pour le GUIDDEVICE, D3DADAPTER_IDENTIFIER9, http://msdn.microsoft.com/en-us/libr...=VS.85%29.aspx, qui affiche une valeur hexa, sauf que cette valeur est unique pour la CG.
    Moi il m'en faut une en fonction du choix fait, Direct3D HAL / T&L HAL / CG.

    Merci encore de votre aide/soutien.

  10. #10
    Membre extrêmement actif

    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 399
    Par défaut
    Citation Envoyé par Keveun Voir le message
    De même, pouvoir proposer DirectD3 HAL et T&L HAL.
    ça sert à rien de proposer les 2, le premier c'est "je me sers de la carte graphique" et le 2ème "je fais les calculs de transformation et d'éclairage sur la carte graphique" ce qui est depuis pas mal de temps la même chose.

    d'ailleurs il me vient à l'esprit une question : le setup que tu copies date de quand?

  11. #11
    Membre Expert Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 048
    Par défaut
    Bonjour,

    Dans ce cas que tu décris je pense surtout que c'est un disfonctionnement de ton Setup. Je présume que tu as installer le SDK de DirectX. Si tu veux vraiment voir correctement tout ce que tu peut obtenir sans problème, utilise DirectX Caps Viewer et tu verras en comparant quel sont les problèmes de ton Setup actuel.

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 7
    Par défaut
    @stardeath, oui en effet, je crois que je vois ou tu veux en venir, le setup est très vieux, outdated, finalement le mieux c'est de vérifier si HAL est fonctionnel chez l'utilisateur, sans proposer quoi que ce soit d'autre, et de m'en servir.
    Le tout c'est de trouver le meilleur flag.
    Juste ?

    @Astraya, je crois que tu n'as pas compris, mon setup n'a pas vraiment encore de problème, puisque j'en suis encore qu'à la phase "poser des questions". xD
    Je parle surtout du setup original que je reproduit pour m'exercer, et de comment m'y prendre.

  13. #13
    Membre extrêmement actif

    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 399
    Par défaut
    le mieux je pense si tu veux proposer plein de possibilités, c'est de regarder dans les samples directx9 ce qui est proposé quand tu cliques sur "Change device (F2)"

    dxut est assez obscure mais tu auras toutes les pistes pour l'implémentation.

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/02/2015, 17h18
  2. Réponses: 2
    Dernier message: 27/12/2005, 20h09
  3. Afficher les élements d'un formulaire dans une autre fenetre
    Par BernardT dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 11/12/2005, 22h52
  4. Réponses: 29
    Dernier message: 03/11/2005, 10h37

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