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 |