Freigeben über


Texturfilterung (Direct3D 9)

Wenn Direct3D einen Grundtyp rendert, wird der 3D-Grundtyp einem 2D-Bildschirm zugeordnet. Wenn der Grundtyp über eine Textur verfügt, muss Direct3D diese Textur verwenden, um eine Farbe für jedes Pixel im 2D gerenderten Bild des Grundtyps zu erzeugen. Für jedes Pixel im Bild des Grundtyps auf dem Bildschirm muss ein Farbwert aus der Textur abgerufen werden. Dieser Prozess wird als Texturfilterung bezeichnet.

Wenn ein Texturfiltervorgang ausgeführt wird, wird die verwendete Textur in der Regel ebenfalls vergrößert oder minimiert. Mit anderen Worten, es wird einem primitiven Bild zugeordnet, das größer oder kleiner als sich selbst ist. Die Vergrößerung einer Textur kann dazu führen, dass viele Pixel einem Texel zugeordnet werden. Das Ergebnis kann eine klobige Darstellung sein. Die Minimierung einer Textur bedeutet oft, dass ein einzelnes Pixel vielen Texels zugeordnet wird. Das resultierende Bild kann verschwommen oder aliasiert sein. Um diese Probleme zu beheben, muss eine Mischung der Texelfarben durchgeführt werden, um eine Farbe für das Pixel zu erhalten.

Direct3D vereinfacht den komplexen Prozess der Texturfilterung. Es bietet Ihnen drei Arten von Texturfilterung: lineare Filterung, anisotrope Filterung und Mipmap-Filterung. Wenn Sie keine Texturfilterung auswählen, verwendet Direct3D eine Technik, die als Sampling für den nächsten Punkt bezeichnet wird.

Jede Art von Texturfilterung hat Vor- und Nachteile. Für instance kann die lineare Texturfilterung zu gezackten Kanten oder einer klobigen Darstellung im endgültigen Bild führen. Es handelt sich jedoch um eine berechnungsarme Methode der Texturfilterung. Das Filtern mit Mipmaps führt in der Regel zu den besten Ergebnissen, insbesondere in Kombination mit anisotroper Filterung. Es erfordert jedoch den größten Arbeitsspeicher der Techniken, die Direct3D unterstützt.

Anwendungen, die Texturschnittstellenzeiger verwenden, sollten die aktuelle Texturfiltermethode festlegen, indem sie die IDirect3DDevice9::SetSamplerState-Methode aufrufen. Legen Sie den Wert des ersten Parameters auf die ganzzahlige Indexnummer (0-7) der Textur fest, für die Sie eine Texturfiltermethode auswählen. Übergeben Sie D3DSAMP_MAGFILTER, D3DSAMP_MINFILTER oder D3DSAMP_MIPFILTER für den zweiten Parameter, um den Vergrößerungs-, Minimierungs- oder Mipmapping-Filter festzulegen. Übergeben Sie einen Member des aufgezählten D3DTEXTUREFILTERTYPE-Typs als Wert im dritten Parameter.

In diesem Abschnitt werden die Texturfiltermethoden vorgestellt, die Direct3D unterstützt. Sie ist in die folgenden Themen unterteilt.

Hinweis

Obwohl die Texturfilterungs-Renderzustände, die im aufgezählten D3DRENDERSTATETYPE-Typ vorhanden sind, durch Texturphasenzustände ersetzt werden, schlägt IDirect3DDevice9::SetRenderState im Gegensatz zur IDirect3DDevice2-Version nicht fehl, wenn Sie versuchen, sie zu verwenden. Vielmehr ordnet das System die Auswirkungen dieser Renderzustände der ersten Phase der Multitexture-Kaskade, Phase 0, zu. Anwendungen sollten die älteren Renderzustände nicht mit den entsprechenden Texturphasenzuständen mischen, da unvorhersehbare Ergebnisse auftreten können.

 

Direct3D-Texturen