Freigeben über


call (sm4 – asm)

Ruft eine Unterroutine auf, die durch gekennzeichnet ist, wobei die Bezeichnung l# im Programm angezeigt wird.

call l #
Element Beschreibung
L #
[in] Die Bezeichnung der Unterroutine.

Bemerkungen

Wenn eine ret gefunden wird, geben Sie nach diesem Aufruf die Ausführung an die Anweisung zurück.

Das Tokenformat enthält als Komfort den Offset der entsprechenden Bezeichnung im Shader.

Das folgende Beispiel zeigt die Aufrufanweisung.

                ...
                call l3
                ...
                ret
                label l3
                    ...
                    retc_nz r0.x
                    ...
                ret

Beschränkungen

  • Unterroutinen können 32 tief geschachtelt werden.
  • Der Stapel der Rückgabeadresse wird von der Implementierung transparent verwaltet.
  • Wenn bereits 32 Einträge auf dem Rücksendeadressenstapel vorhanden sind und ein Anruf ausgegeben wird, wird der Anruf übersprungen.
  • Es gibt keinen automatischen Parameterstapel. Die Anwendung kann ein indizierbares temporäres Registerarray (x#[]) verwenden, um einen Stapel manuell zu implementieren. Die Adressen der Subroutineaufrufrückgabe sind jedoch nicht sichtbar und orthogonal für jede manuelle Stapelverwaltung, die von der Anwendung durchgeführt wird.
  • Die Indizierung des l#- Parameters ist nicht zulässig.
  • Rekursion ist nicht zulässig.

Diese Anweisung gilt für die folgenden Shaderphasen:

Vertexshader Geometrie-Shader Pixelshader
x x x

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

Shadermodell 4-Assembly (DirectX HLSL)