Freigeben über


Texturphasen

Die Texturphase gibt die Position der Textur in der Texturpipeline an. Die Position mit der höchsten Nicht-NULL-Textur ist dem Framepuffer am nächsten. Jede Phase ist eine Texturmischungseinheit, die den Vorgang ausführt, mit dem eine zugeordnete Textur zu einem Polygon kombiniert wird, wie in der folgenden Abbildung gezeigt.

Diagramm, das eine einzelne Texturphase in der Texturpipeline veranschaulicht.

Die aktuelle Textur tritt in die Phase ein und wird mit einer anderen Textur und einer diffusen Komponente gemischt, wobei das Ergebnis an die nächste Stufe in der Texturpipeline übergeben wird (oder den Framepuffer, wenn es sich um die letzte Phase handelt).

Es gibt acht Texturstufen, nummeriert 0 bis sieben, wobei null am weitesten vom Framepuffer entfernt ist und dem Renderzustandstexturhandle D3DRENDERSTATE_TEXTUREHANDLE entspricht, das in der DirectX SDK-Dokumentation beschrieben wird. Der Treiber muss bis zu acht Texturkoordinaten verarbeiten, auch wenn die Hardware nicht so viele unterstützt.

Beim Rendern mehrerer Texturen sind die Texturphasen mit niedrigeren Zahlen weiter vom Framepuffer entfernt. Die niedrigste Texturstufe in der Kaskade wird erfasst und gefiltert, um ein Texel- oder Texturelement zu erhalten. Zwischen diesem Texel und dem nächsten Texel wird ein Mischvorgang durchgeführt, während die Texturpipeline in Richtung des Framepuffers nach unten kaskadiert wird.

Wenn beispielsweise zwei Texturen, Texture0 und Texture1, miteinander gemischt werden, tritt der resultierende Texel genauso wie eine einzelne Textur mit Legacytexturierung in die Rasterungspipeline ein. Mit drei Texturen wird Texture0 mit Texture1 gemischt. Das resultierende Texel wird dann entsprechend einem programmierbaren Gewicht mit Texture2 gemischt. Dies bedeutet, dass Texture0 Texture2 nicht direkt beeinflussen kann. Dies ist nur möglich, indem sie mit Texture1 gemischt wird, wie in der folgenden Abbildung dargestellt.

Diagramm, das eine dreistufige Texturpipeline mit Mischvorgängen veranschaulicht.

Jede Texturphase führt eine Textur in die Pipeline ein. Die Pixelpipeline ist getrennt und erfolgt nach mehreren Texturvorgängen. Dies kann die Nebelanwendung oder das Alpha-Blending des Framepuffers umfassen.