D2D_PS_ENTRY函数

使用给定函数名称定义像素着色器入口点的宏。

语法

void WINAPI D2D_PS_ENTRY(
  in string Entryname
);

parameters

Entryname [in]

像素着色器入口点名称。

返回值

此函数不返回值。

注解

使用此宏,而不是以正常方式指定入口点输入签名:所有参数都是隐式的,在编译期间由 Direct2D 添加,具体取决于编译目标类型 (完整着色器或导出函数) 。

#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; 
} 

在此简短的示例中,请注意,不会声明任何函数参数,输入数和每个输入的类型在输入函数之前声明,输入是通过调用 D2DGetInput 检索的,并且必须在包含帮助程序文件之前定义预处理器指令。

与链接兼容的着色器必须同时提供常规单通道像素着色器和导出着色器函数。 当与着色器编译脚本结合使用时,D2D_PS_ENTRY 宏允许从同一代码生成其中的每一个。

编译完整着色器时,宏将扩展为以下代码,该代码具有与 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; 
} 

编译相同代码的导出函数版本时,将生成以下代码:

// Shader function version 
export float4 LinkingCompatiblePixelShader_Function( 
    float4 input0 : INPUT0 
    ) 
{ 
    input.rgb *= input.a; 

    return input; 
} 

请注意,通常通过对 Texture2D 采样检索的纹理输入已替换为函数 input0。

要求

要求
标头
D2d1effecthelpers.hlsli
DLL
D2d1.dll

请参阅

效果着色器链接

HLSL 帮助程序