Freigeben über


Syntax der Effektvariablen (Direct3D 10)

Eine Effektvariable wird mit der folgenden Syntax deklariert.

Syntax

DataTypeVariableName [ : SemanticName ] <Anmerkungen>;

Name BESCHREIBUNG
DataType Beliebiger Basis- oder Texturtyp.
VariableName Eine ASCII-Zeichenfolge, die den Namen der Effektvariable eindeutig identifiziert.
SemanticName Eine ASCII-Zeichenfolge, die zusätzliche Informationen darüber angibt, wie eine Variable verwendet werden soll. Eine Semantik ist eine ASCII-Zeichenfolge, die entweder ein vordefinierter Systemwert oder eine benutzerdefinierte Zeichenfolge sein kann.
Anmerkungen Eine oder mehrere vom Benutzer bereitgestellte Informationen (Metadaten), die vom Effektsystem ignoriert werden. Informationen zur Syntax finden Sie unter Anmerkungssyntax (Direct3D 10).

 

Eine Effektvariable, die außerhalb aller Funktionen deklariert wird, gilt als global im Bereich; innerhalb einer Funktion deklarierte Variablen sind lokal für diese Funktion.

Beispiel

Das BasicHLSL10-Beispiel verwendet globale Variablen ohne Semantik für Materialfarben, Lichteigenschaften und Transformationsmatrizen.

In diesem Beispiel werden globale Effektvariablen veranschaulicht.

float4 g_MaterialAmbientColor;      // Material's ambient color
float4 g_MaterialDiffuseColor;      // Material's diffuse color
float3 g_LightDir[3];               // Light's direction in world space
float4x4 g_mWorld;                  // World matrix for object

In diesem Beispiel werden Effektvariablen veranschaulicht, die für eine Shaderfunktion lokal sind.

VS_OUTPUT RenderSceneVS( ... )
{
    float3 vNormalWorldSpace;
    float4 vAnimatedPos;

    // shader body
}

In diesem Beispiel werden Funktionsparameter mit Semantik veranschaulicht.

VS_OUTPUT RenderSceneVS( float4 vPos : SV_POSITION,
                         float3 vNormal : NORMAL,
                         float2 vTexCoord0 : TEXCOORD0,
                         uniform int nNumLights,
                         uniform bool bTexture,
                         uniform bool bAnimate )
{
  ...
}

In diesem Beispiel wird das Deklarieren einer Texturvariable veranschaulicht.

Texture2D g_MeshTexture;            // Color texture for mesh

Das Sampling einer Textur erfolgt mit einem Textur-Sampler. Informationen zum Einrichten eines Samplers in einem Effekt finden Sie im Samplertyp.

Effektformat