FAQ DirectX
FAQ DirectXConsultez toutes les FAQ
Nombre d'auteurs : 4, nombre de questions : 63, dernière mise à jour : 14 juin 2021
- Comment participer à cette FAQ ?
- Ma question n'est pas traitée ici, que faire ?
- Qu'est-ce que DirectX ?
- Comment développer avec DirectX ?
- Comment développer avec DirectX et C++ Builder ?
- Comment développer avec DirectX et Dev-C++ ?
- Comment développer avec DirectX et Code::Blocks ?
- Comment développer avec DirectX en Delphi ?
- Quel est le futur de DirectX ?
- Où trouver des tutoriels pour DirectX ?
- Peut-on programmer avec DirectX en C ?
- Comment récupérer dans mon programme la version de DirectX installée ?
DirectX étant une API en constante évolution, nous comptons sur vous pour enrichir cette FAQ et participer à sa maintenance. Si vous avez remarqué une erreur, une simple faute d'orthographe, si vous souhaitez nous faire part d'un manque, ou n'importe quoi d'autre : vous pouvez contacter le responsable par MP (Laurent Gomila), ou poster à la suite de ce sujet consacré à la FAQ DirectX.
Merci !
Pensez tout d'abord à consulter la FAQ Programmation 3D : celle-ci contient des notions de 3D d'ordre plus général, notamment des problèmes que vous pourriez rencontrer avec DirectX, mais qui ne sont pas spécifiques à cette API.
Si vous ne trouvez de réponse à votre question dans aucune FAQ, et que celle-ci vous paraît pertinente, vous pouvez nous en faire part afin que nous l'ajoutions à cette FAQ. Voir https://jeux.developpez.com/faq/directx/?page=generalites#GENERALITES_participer.
Introduit en 1995 avec Windows 95, DirectX est une suite d'API multimédias basée sur le modèle COM, développée par Microsoft pour les systèmes Windows. Ces API, bien souvent utilisées pour le développement de jeux, permettent aux applications de tirer parti du matériel (carte graphique, carte son…) de façon homogène et optimisée.
Les API composant DirectX sont les suivantes :
- DirectGraphics (anciennement DirectDraw et Direct3D) : gestion des graphismes 2D/3D ;
- DirectMusic : gestion des sons et musiques ;
- DirectSound : gestion des sons au format wave ;
- DirectShow : gestion des vidéos ;
- DirectInput : gestion des périphériques d'entrées (clavier, souris, joystick…) ;
- DirectSetup : gestion de l'installation des composants DirectX ;
- DirectPlay : gestion des échanges réseau (obsolète).
Le développement avec DirectX est possible via plusieurs langages de programmation : C, C++, .NET (C++ managé, VB, C#…), Delphi, etc.
Pour développer des applications avec DirectX, il vous faudra télécharger et installer le SDK DirectX. Celui-ci se trouve sur le site de Microsoft :
http://www.microsoft.com/en-us/download/details.aspx?id=6812.
Ce SDK contient une documentation de référence, des tutoriels, des exemples (pour Visual Studio), les DLL debug/retail de DirectX, ainsi que les fichiers bibliothèques (.lib) et en-têtes (.h) nécessaires au développement.
Pour démarrer familiarisez-vous avec les tutoriels et la documentation, ceux-ci vous guideront pas à pas dans vos débuts.
Le SDK DirectX est prévu pour du développement sous Visual Studio, mais il est également possible d'utiliser d'autres environnements de programmation (voir https://jeux.developpez.com/faq/directx/?page=generalites#GENERALITES_bcb et https://jeux.developpez.com/faq/directx/?page=generalites#GENERALITES_devcpp).
Afin de développer avec DirectX dans un environnement C++ Builder il vous faudra, en plus du SDK (voir https://jeux.developpez.com/faq/directx/?page=generalites#GENERALITES_sdk), les versions C++ Builder des fichiers DLL et LIB de DirectX. Vous pourrez les trouver sur le site http://www.clootie.ru/cbuilder/index.html#D3D_SDKs ; attention de bien prendre les fichiers correspondant à la version de votre SDK !
Pour compiler convenablement, il vous faudra également définir certaines fonctions mathématiques non standard de Visual C++ : sqrtf, tanf, cosf, sinf, atanf, acosf, asinf.
Nous ne donnerons ici pas plus de détails, tout ceci étant très bien expliqué dans ce tutoriel.
Il existait autrefois un DevPack permettant de développer avec DirectX sous Dev-C++, cependant pour des raisons de droits, celui-ci a été retiré. Pour utiliser DirectX avec cet EDI, il faudra donc un peu feinter, voici la marche à suivre :
- téléchargez et installez le SDK DirectX (voir http://jeux.developpez.com/faq/directx/?page=generalites#GENERALITES_sdk) ;
- téléchargez et installez les utilitaires MinGW (mingw-utils-xxx.tar.gz) (http://sourceforge.net/projects/mingw/files/) ;
- l'utilitaire qui nous intéresse est reimp.exe. Il sert à convertir les fichiers .lib en .a compatibles avec Dev-C++.
reimp s'utilise très simplement : placez-vous dans le répertoire contenant les .lib du SDK, et tapez la commande suivante dans la console :
reimp d3d9
Cette commande convertit le fichier d3d9.lib en libd3d9.a ; faites de même avec tous les fichiers .lib que vous aurez à utiliser. Il ne reste ensuite plus qu'à lier avec les fichiers fraîchement créés : ajoutez par exemple « -ld3d9 » dans les options de l'éditeur de lien de votre projet Dev-C++.
Enfin, n'oubliez pas d'ajouter les chemins des en-têtes et bibliothèques DirectX aux chemins de Dev-C++ : dans les options du compilateur, onglet « répertoires », ajoutez « repertoire_du_sdk\lib\x86 » dans « Répertoires bibliothèques », et « repertoire_du_sdk\include » dans « Répertoires C++ .h ».
Sous Windows, l'environnement de programmation gratuit habituellement conseillé aux débutants était jusqu'alors Dev-C++. Mais comme vous vous en êtes peut-être rendu compte, utiliser DirectX avec cet environnement n'est pas naturel et peut causer pas mal de soucis.
Heureusement il existe aujourd'hui un EDI gratuit capable de s'interfacer avec la plupart des compilateurs et qui rend donc le développement DirectX moins problématique, il s'agit de Code::Blocks. Cependant il faudra télécharger quelques outils et SDK nécessaires à la compilation d'applications Win32.
Tout d'abord, le SDK de DirectX fournit ses bibliothèques au format .lib propre aux compilateurs Microsoft. De ce fait vous pouvez déjà oublier le compilateur MinGW (livré avec Dev-C++ et par défaut avec Code::Blocks). Cependant Microsoft met à disposition gratuitement un compilateur, Microsoft Visual C++ 2010 express. Vous le trouverez ici :
Microsoft Visual C++ 2010 express
Il s'agit d'un compilateur sans interface, utilisable en ligne de commande. Téléchargez-le et installez-le.
Le problème est que ce compilateur n'est fourni qu'avec les bibliothèques standard C et C++, et seulement celles-là. Il va donc falloir télécharger le SDK permettant de développer des applications Win32 fenêtrées. Il s'agit du Windows Plateform SDK. Vous le trouverez ici :
La prochaine étape est le téléchargement du SDK DirectX, que vous trouverez ici dans la section download :
Il ne reste plus qu'à télécharger Code::Blocks dans sa version sans compilateur :
Une fois installé, il reconnaîtra automatiquement votre installation du compilateur Microsoft et vous aurez la possibilité d'utiliser celui-ci pour compiler vos projets sous Code::Blocks.
N'oubliez pas d'inclure les divers chemins vers les dossiers en-têtes (include) et bibliothèques (lib) (Plateform SDK, DirectX SDK…), sans quoi le compilateur et/ou l'éditeur de liens ne va pas trouver les fichiers nécessaires à la génération de l'exécutable.
La programmation avec DirectX en Delphi nécessite une version traduite des fichiers de développement du SDK DirectX (écrit initialement pour le C++ et les langages .NET). Le problème est qu'il n'existe pas une version officielle, mais une multitude de packages plus ou moins à jour, plus ou moins complets.
Un bon point de départ pour tout savoir sur le développement DirectX en Delphi est ce tutoriel : Introduction à DirectX9 en Delphi.
Vous pouvez également consulter cet article présentant DelphiX : Introduction à DelphiX.
Ou, plus récemment, celui-ci présentant les composants Asphyre pour DirectX 9 : Les composants Asphyre.
Actuellement, Microsoft prépare DirectX 11.2 qui sera intégré à Windows 8.1 et dans la Xbox One.
Voici quelques liens qui vous seront utiles lors de votre apprentissage de DirectX.
Tutoriels en français
- Critique de livre DirectX 9
- GCN : tutoriels et forums
- Introduction à DirectX9 en Delphi
- DelphiX
- Les composants Asphyre pour DirectX 9
- Utiliser DirectX9 sous Borland C++ Builder
- Managed DirectX
- DirectX en .NET
Tutoriels en anglais
- La MSDN : doc officielle de Microsoft : aide en ligne, articles…
- CodeSampler : codes source
- Drunken Hyena : tutoriels C++ / .NET
- DevMaster : tutoriels, articles, forums…
- Gamedev : tutoriels, articles, forums…
- Le site developpeur de nVidia : pas mal de choses sur la programmation 3D, les techniques récentes, les outils et SDK nVidia, des articles, des tutoriels, des démos…
- Le site developpeur de ATI : même chose que chez nVidia, codes source, démos, outils, articles…
Bien sûr, n'oubliez pas de consulter avant toute chose les exemples et tutoriels fournis avec le SDK, ainsi que la documentation de référence.
Oui, comme avec tous les composants COM. Cependant, si l'on utilise DirectGraphics en C, on se prive de toutes les fonctionnalités D3DX (voir https://jeux.developpez.com/faq/directx/?page=dgraphics_generalites#DGRAPHICS_GENERALITES_d3dx), ce qui n'a donc finalement que très peu d'intérêt. D'autant plus que pratiquement toutes les plateformes sur lesquelles on peut programmer en C proposent également des compilateurs C++ performants. Si vraiment vous êtes allergiques au C++, vous pouvez donc toujours programmer en « C évolué » et ainsi profiter de tous les avantages offerts par DirectGraphics et D3DX.
Il n'existe malheureusement aucune fonction miracle ou bidouille magique pour récupérer la version de DirectX installée. Le seul et unique moyen est donné par le sample « DxVer » du SDK, pour l'intégrer à votre programme vous devrez donc en recopier le code.