D2D_PS_ENTRY, fonction
Macro qui définit un point d’entrée de nuanceur de pixels avec le nom de fonction donné.
Syntaxe
void WINAPI D2D_PS_ENTRY(
in string Entryname
);
Paramètres
-
Entryname [in]
-
Nom du point d’entrée du nuanceur de pixels.
Valeur renvoyée
Cette fonction ne retourne pas de valeur.
Notes
Utilisez cette macro au lieu de spécifier la signature d’entrée du point d’entrée de manière normale : tous les paramètres sont implicites et ajoutés par Direct2D pendant la compilation en fonction du type de cible de compilation (nuanceur complet ou fonction d’exportation).
#define D2D_INPUT_COUNT 1
#define D2D_INPUT0_SIMPLE
#include d2d1effectauthor.hlsli
D2D_PS_ENTRY(LinkingCompatiblePixelShader)
{
float4 input = D2DGetInput(0);
input.rgb *= input.a;
return input;
}
Dans cet exemple court, notez qu’aucun paramètre de fonction n’est déclaré, que le nombre d’entrées et le type de chaque entrée sont déclarés avant la fonction d’entrée, que l’entrée est récupérée en appelant D2DGetInput et que les directives de préprocesseur doivent être définies avant l’inclusion du fichier d’assistance.
Un nuanceur compatible avec liaison doit fournir à la fois un nuanceur de pixels à passe unique et une fonction de nuanceur d’exportation. La macro D2D_PS_ENTRY permet à chacun d’entre eux d’être généré à partir du même code, lorsqu’il est utilisé conjointement avec le script de compilation du nuanceur.
Lors de la compilation d’un nuanceur complet, les macros sont développées dans le code suivant, qui a une signature d’entrée compatible avec les effets D2D.
Texture2D<float4> InputTexture0;
SamplerState InputSampler0;
float4 LinkingCompatiblePixelShader(
float4 pos : SV_POSITION,
float4 posScene : SCENE_POSITION,
float4 uv0 : TEXCOORD0
) : SV_Target
{
float4 input = InputTexture0.Sample(InputSampler0, uv0.xy);
input.rgb *= input.a;
return input;
}
Lors de la compilation d’une version de fonction d’exportation du même code, le code suivant est généré :
// Shader function version
export float4 LinkingCompatiblePixelShader_Function(
float4 input0 : INPUT0
)
{
input.rgb *= input.a;
return input;
}
Notez que l’entrée de texture, normalement récupérée par échantillonnage d’une texture2D, a été remplacée par une entrée de fonction input0.
Spécifications
Condition requise | Valeur |
---|---|
En-tête |
|
DLL |
|