次の方法で共有


D2D_PS_ENTRY関数

指定された関数名を持つピクセル シェーダー エントリ ポイントを定義するマクロ。

構文

void WINAPI D2D_PS_ENTRY(
  in string Entryname
);

パラメーター

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 ヘルパー