Geometry Shader不会在DirectX10 HLSL中编译

时间:2011-06-08 11:08:01

标签: hlsl directx-10 geometry-shader

我一直在尝试编码几何着色器以生成广告牌系统,如Frank Luna的书“DirectX 3D游戏编程简介”中所述。我将着色器插入到我的技术中,如下所示:

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:错误:在技术渲染,传递P3中找不到有效的VertexShader-GeometryShader组合。

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

他们应该一样吗?

1 个答案:

答案 0 :(得分:0)

问题在于用于从顶点着色器,几何着色器和像素着色器输入和输出的结构。如果顶点着色器输出PS_INPUT类型,则几何着色器需要使用该PS_INPUT作为其输入类型。