Freigeben über


D3D10_SIGNATURE_PARAMETER_DESC-Struktur (d3d10shader.h)

Beschreibt eine Shadersignatur.

Syntax

typedef struct _D3D10_SIGNATURE_PARAMETER_DESC {
  LPCSTR                        SemanticName;
  UINT                          SemanticIndex;
  UINT                          Register;
  D3D10_NAME                    SystemValueType;
  D3D10_REGISTER_COMPONENT_TYPE ComponentType;
  BYTE                          Mask;
  BYTE                          ReadWriteMask;
} D3D10_SIGNATURE_PARAMETER_DESC;

Member

SemanticName

Typ: LPCSTR

Eine Zeichenfolge pro Parameter, die angibt, wie die Daten verwendet werden. Siehe Semantik (DirectX HLSL).

SemanticIndex

Typ: UINT

Semantischer Index, der die Semantik ändert. Wird verwendet, um verschiedene Parameter zu unterscheiden, die dieselbe Semantik verwenden.

Register

Typ: UINT

Das Register, das die Daten dieser Variablen enthält.

SystemValueType

Typ: D3D10_NAME

Eine vordefinierte Zeichenfolge, die die Funktionalität bestimmter Pipelinephasen bestimmt. Siehe D3D10_NAME.

ComponentType

Typ: D3D10_REGISTER_COMPONENT_TYPE

Der Datentyp pro Komponente, der in einem Register gespeichert ist. Siehe D3D10_REGISTER_COMPONENT_TYPE. Jedes Register kann bis zu vier Komponenten von Daten speichern.

Mask

Typ: BYTE

Mask, die angibt, welche Komponenten eines Registers verwendet werden.

ReadWriteMask

Typ: BYTE

Mask, die angibt, ob eine bestimmte Komponente nie geschrieben (wenn die Signatur eine Ausgabesignatur ist) oder immer gelesen wird (wenn es sich bei der Signatur um eine Eingabesignatur handelt). Die Maske ist eine Kombination aus D3D10_REGISTER_COMPONENT_TYPE Werten.

Hinweise

Ein Shader kann n Eingaben annehmen und m-Ausgaben erzeugen. Die Reihenfolge der Eingabe- oder Ausgabeparameter, die zugehörigen Typen und alle angefügten Semantiken bilden die Shadersignatur. Jeder Shader verfügt über eine Eingabe- und eine Ausgabesignatur.

Beim Kompilieren eines Shaders oder Effekts ruft einige API-Instanzen auf, die Shadersignaturen überprüfen (z. B. D3D10CompileShader und D3D10CompileEffectFromMemory). Das heißt, sie vergleichen die Ausgabesignatur eines Shaders (wie einen Vertexshader) mit der Eingabesignatur eines anderen Shaders (z. B. einem Pixelshader). Dadurch wird sichergestellt, dass ein Shader Daten ausgibt, die mit einem Downstream-Shader kompatibel sind, der diese Daten verwendet. Kompatibel bedeutet, dass eine Shadersignatur eine exakt übereinstimmende Teilmenge der vorherigen Shaderphase ist. Genaue Übereinstimmung bedeutet, dass Parametertypen und Semantik genau übereinstimmen müssen. Teilmenge bedeutet, dass ein Parameter, der für eine Downstreamphase nicht erforderlich ist, diesen Parameter nicht in seine Shadersignatur einschließen muss.

Rufen Sie eine Shadersignatur aus einem Shader oder einem Effekt ab, indem Sie APIs wie ID3D10ShaderReflection::GetInputParameterDesc oder ID3D10EffectShaderVariable::GetInputSignatureElementDesc aufrufen.

Anforderungen

Anforderung Wert
Header d3d10shader.h

Weitere Informationen

Shader-Strukturen