Types d’appareils (Direct3D 9)
Appareil HAL
Le type d’appareil principal est l’appareil hal, qui prend en charge la rastérisation accélérée matérielle et le traitement du vertex matériel et logiciel. Si l’ordinateur sur lequel votre application s’exécute est équipé d’une carte d’affichage prenant en charge Direct3D, votre application doit l’utiliser pour les opérations Direct3D. Les appareils Direct3D hal implémentent toutes ou partie des modules de transformation, d’éclairage et de rastérisation dans le matériel.
Les applications n’accèdent pas directement aux adaptateurs graphiques. Ils appellent des fonctions et des méthodes Direct3D. Direct3D accède au matériel via la hal. Si l’ordinateur sur lequel votre application s’exécute prend en charge la hal, elle obtiendra les meilleures performances à l’aide d’un appareil hal.
Pour créer un appareil hal, appelez CreateDevice à l’aide de D3DDEVTYPE_HAL comme type d’appareil.
Référence de l’appareil
Direct3D prend en charge un type d’appareil supplémentaire appelé appareil de référence ou ratériseur de référence. Contrairement à un appareil logiciel, le rastériseur de référence prend en charge chaque fonctionnalité Direct3D. Cet appareil est destiné à être utilisé à des fins de débogage et n’est donc disponible que sur les machines où le Kit de développement logiciel (SDK) DirectX a été installé. Étant donné que ces fonctionnalités sont implémentées pour la précision plutôt que la vitesse et sont implémentées dans les logiciels, les résultats ne sont pas très rapides. Le rastériseur de référence utilise des instructions spéciales sur l’UC chaque fois qu’il peut, mais il n’est pas destiné aux applications de vente au détail. Utilisez le rastériseur de référence uniquement à des fins de test ou de démonstration de fonctionnalités. Pour créer un appareil de référence, appelez méthode CreateDevice à l’aide de D3DDEVTYPE_REF comme type d’appareil.
Appareils HAL et REF
Les appareils HAL (couche d’abstraction matérielle) et ref (ratériseur REFerence) sont les deux principaux types d’appareils Direct3D ; le premier est basé sur la prise en charge matérielle, et est très rapide, mais peut ne pas tout prendre en charge ; alors que la seconde n’utilise aucune accélération matérielle, elle est donc très lente, mais elle est garantie de prendre en charge l’ensemble des fonctionnalités Direct3D, de la manière correcte. En général, vous n’aurez besoin que d’utiliser des appareils HAL, mais si vous utilisez une fonctionnalité avancée que votre carte graphique ne prend pas en charge, vous devrez peut-être revenir à REF.
L’autre fois que vous souhaiterez peut-être utiliser REF, c’est-à-dire si l’appareil HAL produit des résultats étranges, c’est-à-dire que vous êtes sûr que votre code est correct, mais que le résultat n’est pas ce que vous attendez. L’appareil REF est garanti de se comporter correctement. Vous pouvez donc tester votre application sur l’appareil REF et voir si le comportement étrange persiste. Si ce n’est pas le cas, cela signifie que (a) votre application suppose que la carte graphique prend en charge un élément qui ne le fait pas, ou (b) qu’il s’agit d’un bogue de pilote. S’il ne fonctionne toujours pas avec l’appareil REF, il s’agit d’un bogue d’application.
Traitement de vertex matériel et logiciel
Le traitement du vertex matériel et logiciel s’applique uniquement aux appareils HAL. Lorsque vous poussez les sommets à travers le pipeline, ils doivent être transformés (par le monde, la vue et les matrices de projection à leur tour) et allumés (par les lumières intégrées de D3D) - cette phase de traitement est appelée T&L (pour Transformation & Éclairage). Le traitement du vertex matériel signifie que cela est effectué dans le matériel, si le matériel le prend en charge ; ergo, le traitement du vertex logiciel est effectué est logiciel. La pratique générale consiste à essayer d’abord de créer un appareil T matériel&L, et si cela échoue, essayez Mixed et, si cela échoue, essayez le logiciel. (En cas d’échec du logiciel, abandonnez et quittez avec une erreur).
Rubriques connexes