Ressources
Une ressource est une zone de mémoire accessible au pipeline Direct3D. Pour permettre un accès efficace du pipeline à la mémoire, les données fournies au pipeline (géométrie d’entrée, ressources des nuanceurs et textures) 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. 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 a é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 a 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 (telles que les textures ou les mémoires tampons). É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 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 mappages de cube dynamiques dans une seule passe et de rendre simultanément sur plusieurs tranches d’un volume.
Dans cette section
Sujet | Description |
---|---|
Différents types de ressources ont une disposition distincte (ou une empreinte mémoire). Toutes les ressources utilisées par le pipeline Direct3D dérivent de deux types de ressources de base : les mémoires tampons et les textures. Une mémoire tampon est une collection de données brutes (éléments) ; une texture est une collection de texels (éléments de texture). |
|
Une ressource est une collection de données utilisées par le pipeline 3D. La création de ressources et la définition de leur comportement constituent la première étape de la programmation de votre application. Ce guide traite des rubriques de base pour choisir les ressources requises par votre application. |
|
Les indicateurs d’utilisation indiquent la façon dont l’application a l’intention d’utiliser les données de ressource pour placer des ressources dans la zone de mémoire la plus performante possible. Les données de ressources sont copiées entre les ressources afin que le processeur ou le GPU puisse y accéder sans avoir d’impact sur les performances. |
|
Dans Direct3D, les ressources de texture sont accessibles avec une vue, qui est un mécanisme d’interprétation matérielle d’une ressource en mémoire. Une vue permet à une étape de pipeline particulière d’accéder uniquement aux sous-ressources dont elle a besoin, dans la représentation souhaitée par l’application. |