Delen via


Resources (Direct3D 10)

Een resource is een gebied in het geheugen dat toegankelijk is voor de Direct3D-pijplijn. Om de pijplijn efficiënt toegang te geven tot geheugen, moeten gegevens die aan de pijplijn worden verstrekt (zoals invoergeometrie, shaderresources, patronen, enzovoort) worden opgeslagen in een resource. Er zijn twee typen resources waaruit alle Direct3D-resources zijn afgeleid: een buffer of een patroon. Maximaal 128 resources kunnen actief zijn voor elke pijplijnfase.

Elke toepassing maakt doorgaans veel resources. Voorbeelden van resource zijn: hoekpuntbuffers, indexbuffer, constante buffer, patronen en shader-resources. Er zijn verschillende opties die bepalen hoe resources kunnen worden gebruikt. U kunt resources maken die sterk zijn getypt of minder typen; u kunt bepalen of resources zowel lees- als schrijftoegang hebben; u kunt resources toegankelijk maken voor alleen de CPU, GPU of beide. Natuurlijk is er snelheid versus functionaliteit. Hoe meer functionaliteit u toestaat voor een resource, hoe minder prestaties u zou verwachten.

Omdat een toepassing vaak veel patronen gebruikt, introduceert Direct3D ook het concept van een patroonmatrix om het beheer van patronen te vereenvoudigen. Een patroonmatrix bevat een of meer texturen (allemaal hetzelfde type en dezelfde dimensies) die vanuit een toepassing of door shaders kunnen worden geïndexeerd. Met bitmapmatrices kunt u één interface met meerdere indexen gebruiken voor toegang tot veel patronen. U kunt zoveel bitmapmatrices maken om verschillende patronentypen te beheren als u nodig hebt.

Zodra u de resources hebt gemaakt die door uw toepassing worden gebruikt, verbindt of verbindt u elke resource met de pijplijnfasen die deze gaan gebruiken. Dit wordt bereikt door een bindings-API aan te roepen, die een aanwijzer naar de resource neemt. Omdat meer dan één pijplijnfase toegang nodig heeft tot dezelfde resource, introduceert Direct3D 10 het concept van een resourceweergave. Een weergave identificeert het gedeelte van een resource dat kan worden geopend. U kunt m-weergaven of een resource maken en deze binden aan n pijplijnfasen, ervan uitgaande dat u bindingsregels voor gedeelde resources volgt (de runtime genereert fouten tijdens het compileren als u dat niet doet).

Een resourceweergave biedt een algemeen model voor toegang tot een resource (patronen, buffers, enzovoort). Omdat u een weergave kunt gebruiken om de runtime te vertellen welke gegevens moeten worden geopend en hoe u deze kunt openen, kunt u met resourceweergaven minder resources maken. Dat wil zeggen dat u tijdens het compileren resources kunt maken voor een bepaalde grootte en vervolgens het gegevenstype binnen de resource declareert wanneer de resource wordt gebonden aan de pijplijn. Weergaven bieden veel nieuwe mogelijkheden voor het gebruik van resources, zoals de mogelijkheid om diepte-/stenciloppervlakken in de shader te lezen, dynamische kubuskaarten in één pas te genereren en tegelijkertijd weer te geven aan meerdere segmenten van een volume.

Zie de volgende andere onderwerpen voor meer informatie over de basisresourcetypen, patroonmatrices en het maken en gebruiken van resources:

Programmeerhandleiding voor Direct3D 10