for-Anweisung

Führt eine Reihe von Anweisungen basierend auf der Auswertung des bedingten Ausdrucks iterativ aus.

[Attribut] für ( Initialisierer; Bedingte; Iterator ) { Anweisungsblock; }

Parameter

Attribut

Ein optionaler Parameter, der steuert, wie die Anweisung kompiliert wird. Wenn kein Attribut angegeben ist, versucht der Compiler zuerst, eine gerollte Version der Schleife auszugeben. Wenn dies fehlschlägt oder einige Vorgänge einfacher wären, wenn die Schleife aufrollt würde, wird auf eine nicht rollierte Version der Schleife zurückgesetzt.

attribute BESCHREIBUNG
unroll(x) Heben Sie die Registrierung der Schleife auf, bis die Ausführung beendet wird. Kann optional angeben, wie oft die Schleife maximal ausgeführt werden soll. Nicht kompatibel mit dem [loop] -Attribut.
loop Generieren Sie Code, der die Ablaufsteuerung verwendet, um jede Iteration der Schleife auszuführen. Nicht kompatibel mit dem [unroll] -Attribut.
fastopt Reduziert die Kompilierzeit, führt jedoch zu weniger aggressiven Optimierungen. Wenn Sie dieses Attribut verwenden, hebt der Compiler die Registrierung von Schleifen nicht auf.
Dieses Attribut wirkt sich nur auf Shadermodellziele aus, die Breakanweisungen unterstützen. Dieses Attribut ist im Shadermodell vs_2_x und Shadermodell 3 und höher verfügbar. Dies ist besonders nützlich im Shadermodell 4 und höher, wenn der Compiler Schleifen kompiliert. Der Compiler simuliert Schleifen standardmäßig, um auszuwerten, ob die Registrierung aufgehoben werden kann. Wenn Sie nicht möchten, dass der Compiler Schleifen aufrollt, verwenden Sie dieses Attribut, um die Kompilierzeit zu reduzieren.
allow_uav_condition Ermöglicht die Beendigung einer Compute-Shaderschleife, die auf einem UAV-Lesevorgang basiert. Die Schleife darf keine systeminternen Synchronisierungsvorgänge enthalten.

Initialisierung

Der Anfangswert des Schleifenzählers.

Bedingte

Ein bedingter Ausdruck. Wenn der bedingte Ausdruck als true ausgewertet wird, wird der Anweisungsblock ausgeführt. Die Schleife endet, wenn der Ausdruck als false ausgewertet wird.

Iterator

Aktualisieren Sie den Wert des Schleifenzählers.

Anweisungsblock

Mindestens eine HLSL-Anweisung.

Bemerkungen

Die Attribute [unroll] und [loop] schließen sich gegenseitig aus und generieren Compilerfehler, wenn beide angegeben sind.

Die Attribute [fastopt] und [allow_uav_condition] werden ignoriert, wenn [unroll] angegeben ist.

Siehe auch

Ablaufsteuerung