Strukturfiltrering (Direct3D 9)
När Direct3D renderar en primitiv mappas 3D-primitiven till en 2D-skärm. Om primitiven har en struktur måste Direct3D använda den strukturen för att skapa en färg för varje pixel i primitivens 2D-renderade bild. För varje bildpunkt i primitivens bild på skärmen måste den hämta ett färgvärde från strukturen. Den här processen kallas för strukturfiltrering.
När en texturfilteråtgärd utförs förstoras eller minifieras den textur som används vanligtvis också. Med andra ord mappas den till en primitiv bild som är större eller mindre än sig själv. Förstoring av en struktur kan leda till att många bildpunkter mappas till en texel. Resultatet kan vara ett bulkigt utseende. Minificering av en textur innebär ofta att en enskild pixel mappas till många texlar. Den resulterande bilden kan vara suddig eller aliaserad. För att lösa dessa problem måste viss blandning av texelfärgerna utföras för att få fram en färg för pixeln.
Direct3D förenklar den komplexa processen för texturfiltrering. Det ger dig tre typer av strukturfiltrering – linjär filtrering, anisotrop filtrering och mipmap-filtrering. Om du inte väljer någon strukturfiltrering använder Direct3D en teknik som kallas närmaste punktsampling.
Varje typ av strukturfiltrering har fördelar och nackdelar. Linjär texturfiltrering kan till exempel ge ojämna kanter eller ett segmentigt utseende i den slutliga bilden. Det är dock en beräkningsmässigt låg overhead-metod för texturfiltrering. Filtrering med mipmaps ger vanligtvis bästa resultat, särskilt när de kombineras med anisotropisk filtrering. Det kräver dock mest minne av de tekniker som Direct3D stöder.
Program som använder texturgränssnittspekare bör ange den aktuella metoden för strukturfiltrering genom att anropa metoden IDirect3DDevice9::SetSamplerState. Ange värdet för den första parametern till heltalsindexnumret (0–7) för den struktur som du väljer en strukturfiltreringsmetod för. Skicka D3DSAMP_MAGFILTER, D3DSAMP_MINFILTER eller D3DSAMP_MIPFILTER som den andra parametern för att ange förstoringsfiltret, minskningsfiltret eller mipmappingfiltret. Passera en medlem av den D3DTEXTUREFILTERTYPE uppräknade typ som värdet i den tredje parametern.
I det här avsnittet beskrivs de metoder för texturfiltrering som Direct3D stöder. Det är uppdelat i följande avsnitt.
- Nearest-Point Sampling (Direct3D 9)
- Linjär strukturfiltrering (Direct3D 9)
- Bilinear-strukturfiltrering (Direct3D 9)
- Anisotropisk Strukturfiltrering (Direct3D 9)
- strukturfiltrering med Mipmaps (Direct3D 9)
Anmärkning
Även om återgivningstillstånden för texturfiltrering som finns i den D3DRENDERSTATETYPE uppräknade typen ersätts av strukturstegstillstånd, misslyckas inte IDirect3DDevice9::SetRenderState, i motsats till IDirect3DDevice2-versionen, om du försöker använda dem. Systemet mappar effekterna av dessa återgivningstillstånd till den första fasen i flertexturkaskaden, steg 0. Program bör inte blanda äldre återgivningstillstånd med motsvarande strukturfastillstånd, eftersom oförutsägbara resultat kan uppstå.
Relaterade ämnen