dcl_maxOutputVertexCount (sm4 – asm)
Deklariert die maximale Anzahl von Scheitelpunkten, die von einem Geometrie-Shader ausgegeben werden können.
dcl_maxOutputVertexCount Anzahl |
---|
Element | Beschreibung |
---|---|
Count |
[in] Eine 32-Bit-Ganzzahl ohne Vorzeichen zwischen 1 und n, einschließlich. |
Ein Geometrie-Shader kann maximal 1024 32-Bit-Werte ausgeben. Dieses Maximum umfasst die Größe der Eingabedaten und die Größe der vom Shader erstellten Daten.
Hier sind einige Einschränkungen:
- Wenn die Anzahl der Scheitelpunkte erreicht wird, bevor der Geometrie-Shader ausgeführt wird, wird der Shader beendet.
- Ein Geometrie-Shader kann das Ende seines Programms erreichen, bevor er vertices ausgibt. das ist völlig legal.
- Wenn Sie einen Geometrie-Shader debuggen, können Sie die Anzahl der generierten Scheitelpunkte ermitteln, indem Sie die Anzahl der generierten Emittanweisungen zählen.
Diese Anweisung gilt für die folgenden Shaderphasen:
Vertexshader | Geometrie-Shader | Pixelshader |
---|---|---|
x |
Diese Anweisung ist enthalten, um das Debuggen eines Shaders in der Assembly zu unterstützen. Sie können keinen Shader in der Assemblysprache mit Shader Model 4 erstellen.
Beispiel
Hier einige Beispiele.
Gehen Sie davon aus, dass Eingabedaten aus Position (.xyzw) und Farbe (.rgb) bestehen. Jede Komponente verbraucht ein Byte; Bei 7 Bytes ist die maximale Anzahl von Scheitelpunkten, die der Shader generieren kann, 1024 / (4 + 3) = 146.
dcl_maxOutputVertexCount 146
Angenommen, Ihr Geometrie-Shader erstellt 32 Vektoren mit vier Komponenten. Die maximale Anzahl von Scheitelpunkten, die der Shader generieren kann, wäre 1024 / (32 * 4) = 8.
dcl_maxOutputVertexCount 8
Minimales Shadermodell
Diese Funktion wird in den folgenden Shadermodellen unterstützt.
Shadermodell | Unterstützt |
---|---|
Shadermodell 5 | ja |
Shadermodell 4.1 | ja |
Shadermodell 4 | ja |
Shadermodell 3 (DirectX HLSL) | Nein |
Shadermodell 2 (DirectX HLSL) | Nein |
Shadermodell 1 (DirectX HLSL) | Nein |