1

Frank Luna の著書『Introduction to 3D Game Programming with DirectX』で説明されているように、ビルボード システムを生成するためにジオメトリ シェーダーをコーディングしようとしています。次のようにシェーダーをテクニックに挿入します。

pass P3
    {
        SetVertexShader(CompileShader(vs_4_0, VS()));
        SetGeometryShader(CompileShader(gs_4_0, GS()));
        SetPixelShader(CompileShader( ps_4_0, PS_NoSpecular()));
        SetBlendState(SrcAlphaBlendingAdd, float4( 0.0f, 0.0f, 0.0f, 0.0f ), 0xFFFFFFFF );
    }

ただし、これによりエラー 1>D3DEffectCompiler : エラー : 有効な VertexShader-GeometryShader の組み合わせが Technique render の Pass P3 に見つかりませんでした。

VS と GS の両方の構造体を以下に示します。

struct GS_INPUT
{
    float4 PosH : SV_POSITION;   
    float4 PosW : POSITION;   
    float2 Tex : TEXCOORD; 
    float3 N : NORMAL;  
    float3 Tangent : TANGENT;
    float3 Binormal : BINORMAL;
};

struct VS_INPUT
{
    float4 Pos : POSITION;   
    float2 Tex : TEXCOORD; 
    float3 N : NORMAL;  
    float3 Tangent : TANGENT;
    float3 Binormal : BINORMAL;
};

それらは同じであるべきですか?

4

1 に答える 1