Appareils Direct3D (Direct3D 9)

Un périphérique Direct3D est le composant de rendu de Direct3D. Il encapsule et stocke l’état de rendu. En outre, un appareil Direct3D effectue des transformations et des opérations d’éclairage et rastérise une image sur une surface.

D’un point de vue architectural, les appareils Direct3D contiennent un module de transformation, un module d’éclairage et un module de rastérisation, comme le montre le diagramme suivant.

diagramme de l’architecture de l’appareil direct3d

Direct3D prend actuellement en charge deux types main d’appareils Direct3D :

  • Appareil de hal avec rastérisation et ombrage accélérés par le matériel avec traitement du vertex matériel et logiciel
  • Un appareil de référence

Vous pouvez considérer ces appareils comme deux pilotes distincts. Les périphériques logiciels et de référence sont représentés par des pilotes logiciels, et le périphérique hal est représenté par un pilote matériel. La façon la plus courante de tirer parti de ces appareils consiste à utiliser l’appareil hal pour l’expédition d’applications et l’appareil de référence pour les tests de fonctionnalités. Ceux-ci sont fournis par des tiers pour émuler des appareils particuliers, par exemple, du matériel de développement qui n’a pas encore été publié.

L’appareil Direct3D créé par une application doit correspondre aux fonctionnalités du matériel sur lequel l’application s’exécute. Direct3D fournit des fonctionnalités de rendu, soit en accédant au matériel 3D installé sur l’ordinateur, soit en émulant les fonctionnalités du matériel 3D dans un logiciel. Par conséquent, Direct3D fournit des appareils pour l’accès matériel et l’émulation logicielle.

Les appareils à accélération matérielle offrent de bien meilleures performances que les appareils logiciels. Le type d’appareil hal est disponible sur toutes les cartes graphiques prises en charge par Direct3D. Dans la plupart des cas, les applications ciblent les ordinateurs qui ont une accélération matérielle et qui s’appuient sur l’émulation logicielle pour prendre en charge les ordinateurs bas de gamme.

À l’exception de l’appareil de référence, les appareils logiciels ne prennent pas toujours en charge les mêmes fonctionnalités qu’un appareil matériel. Les applications doivent toujours rechercher les fonctionnalités de l’appareil pour déterminer les fonctionnalités prises en charge.

Étant donné que le comportement des logiciels et des appareils de référence fournis avec Direct3D 9 est identique à celui de l’appareil hal, le code d’application créé pour fonctionner avec l’appareil hal fonctionne avec le logiciel ou les appareils de référence sans modification. Notez que bien que le comportement du logiciel fourni ou de l’appareil de référence soit identique à celui de l’appareil de hal, les fonctionnalités de l’appareil varient et un appareil logiciel particulier peut implémenter un ensemble de fonctionnalités beaucoup plus petit.

Comportements

Direct3D vous permet de spécifier le comportement d’un appareil, ainsi que le type de l’appareil. La méthode IDirect3D9::CreateDevice permet de combiner un ou plusieurs indicateurs de comportement pour contrôler les comportements globaux de l’appareil Direct3D. Ces comportements spécifient ce qui est et ce qui n’est pas conservé dans la partie d’exécution de Direct3D, et les types d’appareils spécifient le pilote à utiliser. Bien que certaines combinaisons de comportements d’appareil ne soient pas valides, il est possible d’utiliser tous les comportements d’appareil avec tous les types d’appareils. Par exemple, il est valide de spécifier D3DDEVTYPE_SW sur un appareil créé avec D3DCREATE_PUREDEVICE.

Prise en main