Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Patroonbeheer is het proces om te bepalen welke patronen nodig zijn om op een bepaald moment weer te geven en ervoor te zorgen dat deze patronen in het videogeheugen worden geladen. Net als bij elk algoritme variƫren patroonbeheerschema's in complexiteit, maar elke benadering van patroonbeheer omvat de volgende belangrijke taken.
- De hoeveelheid beschikbaar bitmapgeheugen bijhouden.
- Berekenen welke patronen nodig zijn voor rendering en welke niet.
- Bepalen welke bestaande textuurresources opnieuw kunnen worden geladen met een andere afbeelding van het patroon en welke oppervlakken moeten worden vernietigd en vervangen door nieuwe textuurresources.
Direct3D implementeert door het systeem ondersteunde structuurbeheer om ervoor te zorgen dat patronen worden geladen voor optimale prestaties. Texture-resources die Direct3D beheert, worden beheerde texturen genoemd.
De patroonbeheerder houdt patronen bij met een tijdstempel die aangeeft wanneer het patroon voor het laatst is gebruikt. Vervolgens wordt een minst recent gebruikt algoritme gebruikt om te bepalen welke patronen moeten worden verwijderd. Patroonprioriteiten worden gebruikt als bindonderbrekers wanneer twee patronen zijn bedoeld voor verwijdering uit het geheugen. Als twee patronen dezelfde prioriteitswaarde hebben, wordt het minst recent gebruikte patroon verwijderd. Als twee patronen echter hetzelfde tijdstempel hebben, wordt eerst het patroon met een lagere prioriteit verwijderd.
U vraagt automatisch patroonbeheer aan voor patronenoppervlakken wanneer u ze maakt. Als u een beheerd patroon in een C++-toepassing wilt ophalen, maakt u een patroonresource door IDirect3DDevice9::CreateTexture- aan te roepen en de D3DPOOL_MANAGED voor de poolparameter op te geven. U kunt niet opgeven waar u het patroon wilt maken. U kunt de D3DPOOL_DEFAULT of D3DPOOL_SYSTEMMEM vlaggen niet gebruiken bij het maken van een beheerd patroon. Nadat u het beheerde patroon hebt gemaakt, kunt u de methode IDirect3DDevice9::SetTexture methode aanroepen om deze in te stellen op een fase in de patroontrap van het renderingapparaat.
U kunt een prioriteit toewijzen aan beheerde patronen door de methode IDirect3DResource9::SetPriority methode voor het patroonoppervlak aan te roepen.
Direct3D downloadt automatisch patronen naar videogeheugen, indien nodig. Het systeem kan beheerde patronen opslaan in het lokale of niet-lokale videogeheugen, afhankelijk van de beschikbaarheid van niet-lokaal videogeheugen of andere factoren. De cachelocatie van uw beheerde patronen wordt niet doorgegeven aan uw toepassing en deze informatie is ook niet vereist voor het gebruik van automatisch patroonbeheer. Als uw toepassing meer patronen gebruikt dan in het videogeheugen past, verwijdert Direct3D oudere patronen uit het videogeheugen om ruimte te maken voor de nieuwe patronen. Als u een verwijderd patroon opnieuw gebruikt, gebruikt het systeem het oorspronkelijke patroonoppervlak voor systeemgeheugen om het patroon opnieuw te laden in de videogeheugencache. Hoewel het opnieuw laden van het patroon nodig is, vermindert het ook de prestaties van de toepassing.
U kunt de oorspronkelijke kopie van het systeemgeheugen van het patroon dynamisch wijzigen door de structuurresource bij te werken of te vergrendelen. Wanneer het systeem een vuil oppervlak detecteert - nadat een update is voltooid of wanneer het oppervlak is ontgrendeld - werkt de patroonbeheerder automatisch de kopie van het videogeheugen van het patroon bij. Het gemaakte prestatietreffer is vergelijkbaar met het opnieuw laden van een verwijderd patroon.
Wanneer u een nieuw niveau in een game invoert, moet uw toepassing mogelijk alle beheerde patronen uit het videogeheugen leegmaken (door IDirect3DDevice9::EvictManagedResourcesaan te roepen).
Zie Resources beheren (Direct3D 9)voor meer informatie over resourcebeheer.
Verwante onderwerpen