我一直在尝试编写几何着色器以生成广告牌系统,如 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:错误:在技术渲染中找不到有效的 VertexShader-GeometryShader 组合,通过 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;
};
它们应该相同吗?