La couche de rendu des jeux est généralement une partie assez bien isolée/abstraite de l'ensemble de l'application. En ce qui concerne le moteur de jeu, à chaque trame, vous créez simplement une liste d'objets conceptuels (arbres, personnages, etc.). Si le moteur de jeu choisit de rendre un objet particulier, il revient à la couche de rendu de traduire cette intention en appels DX. Un rendu DX10 va générer un ensemble différent d'appels draw à une couche DX9, mais conceptuellement, ils exécutent toujours la même action - 'render this tree'. Le rendu est bien abstrait, car il est rare que vous souhaitiez récupérer des informations à partir du calque de rendu, une fois que l'action 'render this tree' est exécutée, le moteur de jeu suppose simplement que le rendu est correct. Il est peu nécessaire de gérer différents résultats potentiels des appels de rendu DX9/DX10, car 99,9% des informations vont du moteur au système graphique, et les 0,1% qui reviennent prennent probablement la même forme entre les deux API. La configuration de l'application est un peu plus compliquée, car vous devez demander au système si le DX10 est pris en charge ou non et revenir en arrière sur DX9, mais c'est le tarif standard pour la configuration de l'application (de la même manière que le jeu doit choisir une résolution, un taux de rafraîchissement, un périphérique d'entrée, etc.).