Rémi Lebel - Simon Marsault - Serge Mbitom
|
|
DirectX est une collection de bibliothèques destinées à la programmation d'applications multimédia. Ces bibliothèques sont surtout utilisées dans les jeux vidéos, et les programmes faisant intervenir de la vidéo 2D et 3D.
DirectX a été développé par Microsoft. Ces bibliothèques ne fonctionnent que sur les systèmes d'exploitation microsoft : windows. Pour utiliser ces bibliothèques, ou programmer avec DirectX, il faut donc posséder une licence Windows, ce qui rend payante l'utilisation de ces bibliothèques.
DirectX est un regroupement de différentes bibliothèques dont le nom commence par "Direct". (Note : depuis directX 8, certaines bibliothèques ont pour préfixe "X" .)Chaque bibliothèque a une utilité bien précise. On peut en citer les principales :
La version de directX est mise à jour régulièrement et suit les avancéees technologiques.
Nous allons maintenant nous attarder sur la bibliothèque Direct3D.
Comme dit plus haut, Direct3D est un composant de l'API DirectX. Cette bibliothèque est uniquement utilisée sur les systèmes d'exploitation Windows (95 et au-delà). Direct3D permet de :
Direct3D contient en fait une multitude d'instructions pour l'affichage 3D, et très peu pour l'affichage 2D.
Enfin, les concurrents de Direct3D sont les bibliothèque respectant l'OpenGL. Il y a de nombreuses fonctionnalités et problèmes sur lesquels les partisans de l'une ou l'autre API sont en désaccord.
Le processus qui permet d’obtenir le rendu final qui est affiché peut être modelisé par un pipeline (procédure similaire sur OpenGL). Les données arrivent à l’entrée du pipeline et circulent tout le long en subissant un certain nombre de modifications jusqu’à produire le résultat final.

Les opérations réalisées à chaque niveau sont décrites ci-dessous :
Tous les modules représentés par des rectangles à bords arrondis sont entièrement programmables.
Voyons maintenant comment fonctionne l'interfaçage entre une application windows utilisant Direct3D et le materiel
Les relations entre une application Windows, Direct3D, et le matériel sont représentées par le schéma ci-dessous.

Direct3D permet à une application d’interagir avec la carte graphique de manière totalement transparente. Les applications Direct3D peuvent coexister avec des applications de type GDI (Graphics Device Interface – Interface des dispositifs d’affichage). GDI est une norme de Microsoft Windows pour la représentation d’objets graphiques (rendu de polices d’écritures par exemple) ainsi que pour leur transmission aux périphériques de sortie, typiquement un écran ou une imprimante.
Direct3D et GDI ont accès au périphérique graphique de l’ordinateur par l’intermédiaire des pilotes de la carte. La différence à ce niveau entre Direct3D et GDI est que Direct3D peut bénéficier des possibilités offertes par le matériel en créant un périphérique HAL (couche d’abstraction du matériel).
Un périphérique HAL fournit une accélération matérielle aux fonctions du pipeline, et ceci basé sur les possibilités offertes par la carte graphique. Des méthodes (fonctions) Direct3D permettent de récupérer les possibilités du périphérique d’affichage au moment de l’exécution (par exemple (IDirect3DDevice9::GetDeviceCaps) . Si une fonctionnalité n’est pas offerte par le matériel, le périphérique HAL le signale à Direct3D.
Cette technologie existe depuis la version 9 de Direct3D.
L'instancing permet la duplication de maillages complexes dans une même scène. Elle est utilisée pour représenter des objets lourds tel que les arbres, l'herbe, les cheveux ou bien des batiments identiques pouvant être répétés de manière non excessive. Bien que les données géométriques sont dupliquées à l'identique, chaque copie peut avoir certains paramètres différents (tels que la couleur ou l'animation) afin d'atténuer la sensation de répétition.
Avec Direct3D version 9, Microsoft a apporté le support matériel du geometry instancing. Cette méthode augmente potentiellement la vitesse de rendu en calculant de manière parallèle les différentes variations du maillage en formant des séries (en utilisant plusieurs pipelines en même temps, chacun dédié à une variation du mesh initial).


Cette technologie a été introduite dans la version 10 de Direct3D. Les premières cartes graphiques ayant bénéficié de cette technologie sont les GeForce 8800.
Le Geometry shader permet de simuler un effet d'évolution d'un objet.
Il génère des primitives graphiques en fonction du pipeline de base.

Le motion blur c'est l'ajout d'effet de flou, qui permet de gagner en fluidité dans les actions.
En effet, sans motion blur une bonne fluidité sur un jeu n'est atteinte qu'à partir d’environ 60 fps, alors qu'avec cette option activée même avec 30 fps on a une bonne impression de fluidité.
C'est un procédé qui est aussi utilisé au cinéma. Il se trouve qu’on tourne les films à 24 fps, or si on joue à un jeu à 24 fps, on aura l’impression qu’il est très saccadé. La différence s'explique par l'ajout de flou entre chaque action qui donne par conséquent l'illusion d'un mouvement fluide.

Cette technologie permet d'ignorer certaines parties de la scène qui n'ont pas besoin d'être affichées à l'écran, soit parce qu'ils sont cachés par un autre objet, soit parce qu'ils se trouvent trop loin du point de vue. Sur l'exemple ci-dessous, on peut voir la créature sur l'image de gauche. Sur l'image de droite elle n'est plus calculée car elle est cachée par le bloc blanc.


Pour finir, voici un comparatif entre le rendu des deux versionx de directX 9 et 10. On constate par exemple que l'eau est beaucoup mieux détaillée et optimisée.
