Monochrome Light Maps (Direct3D 9)
Einige ältere 3D-Beschleunigerboards unterstützen keine Texturmischung mit dem Alphawert des Zielpixels. Weitere Informationen finden Sie unter Alphatexturmischung (Direct3D 9). Diese Adapter unterstützen in der Regel auch keine Mehrfachtexturmischung. Wenn Ihre Anwendung auf einem Adapter wie diesem ausgeführt wird, kann sie die Mehrpasstexturmischung verwenden, um eine monochrome Lichtzuordnung durchzuführen.
Um eine monochrome Lichtzuordnung durchzuführen, speichert eine Anwendung die Beleuchtungsinformationen in den Alphadaten ihrer Lightmap-Texturen. Die Anwendung verwendet die Texturfilterfunktionen von Direct3D, um eine Zuordnung von jedem Pixel im Grundtypbild zu einem entsprechenden Texel in der Lichtkarte durchzuführen. Er legt den Quellmischungsfaktor auf den Alphawert des entsprechenden Texels fest.
Im folgenden Beispiel wird veranschaulicht, wie eine Anwendung eine Textur als monochrome Lichtkarte verwenden kann:
// This example assumes that d3dDevice is a valid pointer to an
// IDirect3DDevice9 interface and that lptexLightMap is a valid
// pointer to a texture that contains monochrome light map data.
// Set the light map texture as the current texture.
d3dDevice->SetTexture(0, lptexLightMap);
// Set the color operation.
d3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
// Set argument 1 to the color operation.
d3dDevice->SetTextureStageState(0, D3DTSS_COLORARG1,
D3DTA_TEXTURE | D3DTA_ALPHAREPLICATE);
Da Grafikkarten, die die Ziel-Alphamischung nicht unterstützen, in der Regel keine Mehrfachtexturmischung unterstützen, wird in diesem Beispiel die Lightmap als erste Textur festgelegt, die auf allen 3D-Beschleunigerkarten verfügbar ist. Der Beispielcode legt den Farbvorgang für die Mischphase der Textur fest, um die Texturdaten mit der vorhandenen Farbe des Grundtyps zu mischen. Anschließend werden die erste Textur und die vorhandene Farbe des Grundtyps als Eingabedaten ausgewählt.
Zugehörige Themen