Delen via


Textuurfiltering (Direct3D 9)

Wanneer Direct3D een primitief weergeeft, wordt de 3D-primitieve toegewezen aan een 2D-scherm. Als de primitieve een patroon heeft, moet Direct3D dat patroon gebruiken om een kleur te produceren voor elke pixel in de 2D-gerenderde afbeelding van de primitieve. Voor elke pixel in de primitieve afbeelding op het scherm moet deze een kleurwaarde verkrijgen van het patroon. Dit proces wordt patroonfiltering genoemd.

Wanneer een patroonfilterbewerking wordt uitgevoerd, wordt het patroon dat wordt gebruikt meestal ook vergroot of geminimificeerd. Met andere woorden, het wordt omgezet naar een primitieve afbeelding die groter of kleiner is dan de oorspronkelijke afbeelding. Vergroting van een textuur kan ertoe leiden dat veel pixels worden toegewezen aan één texel. Het resultaat kan een grof uiterlijk hebben. Minificatie van een textuur betekent vaak dat één pixel wordt toegewezen aan veel texels. De resulterende afbeelding kan wazig of alias zijn. Om deze problemen op te lossen, moet een menging van de texelkleuren worden uitgevoerd om een kleur voor de pixel te verkrijgen.

Direct3D vereenvoudigt het complexe proces van het filteren van patronen. Het biedt u drie typen textuurfilters: lineair filteren, anisotropische filters en mipmapfilters. Als u geen patroonfilter selecteert, gebruikt Direct3D een techniek die het dichtstbijzijnde puntsampling wordt genoemd.

Elk type patroonfilter heeft voor- en nadelen. Het lineaire texturefilter kan bijvoorbeeld onregelmatige randen of een blokkerig uiterlijk in de uiteindelijke afbeelding veroorzaken. Het is echter een methode voor texture filtering met weinig rekenkracht. Filteren met mipmaps levert meestal de beste resultaten op, vooral in combinatie met anisotropische filtering. Het vereist echter het meeste geheugen van de technieken die Direct3D ondersteunt.

Toepassingen die gebruikmaken van bitmapinterfaceaanwijzers moeten de huidige filtermethode voor patronen instellen door de methode IDirect3DDevice9::SetSamplerState aan te roepen. Stel de waarde van de eerste parameter in op het gehele indexnummer (0-7) van het patroon waarvoor u een filtermethode voor patronen selecteert. Geef D3DSAMP_MAGFILTER, D3DSAMP_MINFILTER of D3DSAMP_MIPFILTER door voor de tweede parameter om het filter voor vergroting, minificatie of mipmapping in te stellen. Geef een lid van het D3DTEXTUREFILTERTYPE geënumereerd type door als waarde in de derde parameter.

Deze sectie bevat de filtermethoden voor patronen die Direct3D ondersteunt. Het is ingedeeld in de volgende onderwerpen.

Notitie

Hoewel de statussen voor het filteren van textures in het D3DRENDERSTATETYPE enumeratietype worden vervangen door texture-stage-statussen, mislukt de IDirect3DDevice9::SetRenderState, in tegenstelling tot de IDirect3DDevice2-versie, niet als u deze probeert te gebruiken. In plaats daarvan wijst het systeem de effecten van deze renderstatussen toe aan de eerste fase in de multitextuurcascade, fase 0. Toepassingen mogen de verouderde renderstatussen niet combineren met de bijbehorende statussen van de structuurfase, omdat onvoorspelbare resultaten kunnen optreden.

 

Direct3D-patronen