Freigeben über


Shadertyp

Die Syntax zum Deklarieren einer Shadervariable in einem Effekt wurde von Direct3D 9 in Direct3D 10 geändert.

Shadertyp für Direct3D 10

Deklarieren Sie eine Shadervariable in einem Effektdurchlauf (in Direct3D 10) mithilfe der Syntax des Shadertyps:

SetPixelShader Compile( ShaderTarget, ShaderFunction ); SetGeometryShader Compile( ShaderTarget, ShaderFunction ); SetVertexShader Compile( ShaderTarget, ShaderFunction );

Parameter

Element Beschreibung
SetXXXShader
Der Direct3D-API-Aufruf, der das Shaderobjekt erstellt. Kann entweder SetPixelShader oder SetGeometryShader oder SetVertexShader sein.
ShaderTarget
Das Shadermodell, für das kompiliert werden soll. Dies gilt für jedes Ziel, einschließlich aller Direct3D 9-Ziele sowie der Shadermodell 4-Ziele : vs_4_0, gs_4_0 und ps_4_0.
ShaderFunction
Eine ASCII-Zeichenfolge, die den Namen der Shadereinstiegspunktfunktion enthält; Dies ist die Funktion, die mit der Ausführung beginnt, wenn der Shader aufgerufen wird. Das (...) stellt die Shaderargumente dar; Dies sind die gleichen Argumente, die an die API der Shadererstellung übergeben werden: VSSetShader oder GSSetShader oder PSSetShader.

Beispiel

Hier sehen Sie ein Beispiel, das einen Vertex-Shader und ein Pixelshaderobjekt erstellt, die für ein bestimmtes Shadermodell kompiliert werden. Im Direct3D 10-Beispiel gibt es keinen Geometrie-Shader, sodass der Zeiger auf NULL festgelegt ist.

// Direct3D 10
technique10 Render
{
    pass P0
    {
        SetVertexShader( CompileShader( vs_4_0, VS() ) );
        SetGeometryShader( NULL );
        SetPixelShader( CompileShader( ps_4_0, PS() ) );
    }
}

Shadertyp für Direct3D 9

Deklarieren Sie eine Shadervariable in einem Effektdurchlauf (für Direct3D 9) mithilfe der Shadertypsyntax:

PixelShader = Compile ShaderTarget ShaderFunction(...); VertexShader = Compile ShaderTarget ShaderFunction(...);

Parameter

Element Beschreibung
XXXShader
Eine Shadervariable, die den kompilierten Shader darstellt. Kann entweder PixelShader oder VertexShader sein.
ShaderTarget
Das Shadermodell , für das kompiliert werden soll; hängt vom Typ der Shadervariablen ab.
ShaderFunction(...)
Eine ASCII-Zeichenfolge, die den Namen der Shadereinstiegspunktfunktion enthält; Dies ist die Funktion, die mit der Ausführung beginnt, wenn der Shader aufgerufen wird. Das (...) stellt die Shaderargumente dar; Dies sind die gleichen Argumente, die an die API für die Shadererstellung übergeben werden: SetVertexShader oder SetPixelShader.

Beispiel

Hier sehen Sie ein Beispiel für einen Vertexshader und ein Pixelshaderobjekt, das für ein bestimmtes Shadermodell kompiliert wurde.

// Direct3D 9
technique RenderSceneWithTexture1Light
{
    pass P0
    {          
        VertexShader = compile vs_2_0 RenderSceneVS( 1, true, true );
        PixelShader  = compile ps_2_0 RenderScenePS( true );
    }
}

Siehe auch

Datentypen (DirectX HLSL)