Partager via


Ressources (Direct3D 10)

Une ressource est une zone en mémoire accessible par le pipeline Direct3D. Pour que le pipeline puisse accéder efficacement à la mémoire, les données fournies au pipeline (telles que la géométrie d’entrée, les ressources de nuanceur, les textures, etc.) doivent être stockées dans une ressource. Il existe deux types de ressources dont dérivent toutes les ressources Direct3D : une mémoire tampon ou une texture. Jusqu’à 128 ressources peuvent être actives pour chaque phase de pipeline.

Chaque application crée généralement de nombreuses ressources. Voici quelques exemples de ressources : mémoires tampons de vertex, mémoire tampon d’index, mémoire tampon constante, textures et ressources de nuanceur. Il existe plusieurs options qui déterminent comment les ressources peuvent être utilisées. Vous pouvez créer des ressources fortement typées ou moins typées ; vous pouvez contrôler si les ressources disposent à la fois d’un accès en lecture et en écriture ; vous pouvez rendre les ressources accessibles uniquement au processeur, au GPU ou aux deux. Naturellement, il y aura une vitesse et un compromis des fonctionnalités : plus vous autorisez une ressource à avoir, moins vous devriez vous attendre à des performances.

Étant donné qu’une application utilise souvent de nombreuses textures, Direct3D introduit également le concept d’un tableau de textures pour simplifier la gestion des textures. Un tableau de textures contient une ou plusieurs textures (tout le même type et dimensions) qui peuvent être indexées à partir d’une application ou par des nuanceurs. Les tableaux de texture vous permettent d’utiliser une seule interface avec plusieurs index pour accéder à de nombreuses textures. Vous pouvez créer autant de tableaux de textures pour gérer différents types de textures que nécessaire.

Une fois que vous avez créé les ressources que votre application utilisera, vous connectez ou liez chaque ressource aux étapes de pipeline qui les utiliseront. Pour ce faire, appelez une API de liaison, qui prend un pointeur vers la ressource. Étant donné que plusieurs étapes de pipeline peuvent avoir besoin d’accéder à la même ressource, Direct3D 10 introduit le concept d’une vue de ressource. Une vue identifie la partie d’une ressource accessible. Vous pouvez créer des vues m ou une ressource et les lier à n étapes de pipeline, en supposant que vous suivez les règles de liaison pour la ressource partagée (le runtime génère des erreurs au moment de la compilation si vous ne le faites pas).

Une vue des ressources fournit un modèle général pour l’accès à une ressource (textures, mémoires tampons, etc.). Étant donné que vous pouvez utiliser une vue pour indiquer au runtime les données auxquelles accéder et comment y accéder, les vues de ressources vous permettent de créer moins de ressources. Autrement dit, vous pouvez créer des ressources pour une taille donnée au moment de la compilation, puis déclarer le type de données dans la ressource lorsque la ressource est liée au pipeline. Les vues exposent de nombreuses nouvelles fonctionnalités d’utilisation de ressources, telles que la possibilité de lire des surfaces de profondeur/gabarit de retour dans le nuanceur, de générer des cubemaps dynamiques dans une seule passe et de rendre simultanément sur plusieurs tranches d’un volume.

Pour en savoir plus sur les types de ressources de base, les tableaux de textures et la création et l’utilisation de ressources, consultez les autres rubriques suivantes :

Guide de programmation pour Direct3D 10