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.