Ressources (Direct3D 10)

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

Chaque application crée généralement de nombreuses ressources. 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 un compromis entre la vitesse et les fonctionnalités : plus vous autorisez une ressource à disposer de fonctionnalités, moins vous devez vous attendre à des performances.

Étant donné qu’une application utilise souvent de nombreuses textures, Direct3D introduit également le concept de tableau de textures pour simplifier la gestion des textures. Un tableau de textures contient une ou plusieurs textures (toutes de même type et dimensions) qui peuvent être indexées à partir d’une application ou par des nuanceurs. Les tableaux de textures 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 que nécessaire pour gérer différents types de textures.

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’affichage des ressources. 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 ce n’est pas le cas).

Une vue de 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 à quelles données accéder et comment y accéder, les vues de ressources vous permettent de créer des ressources de type moins. 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 des ressources, telles que la possibilité de lire des surfaces de profondeur/gabarit dans le nuanceur, de générer des cubemaps dynamiques en une seule passe et de rendre simultanément 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