1

CgFX でジオメトリ シェーダーを使用するには? 実際に「テクニック」内でジオメトリシェーダーを指定する方法は?

リストは以下のとおりです。頂点シェーダーとフラグメント シェーダーは適切にコンパイルされています。しかし、「NVIDIA FX Composer 2.5」は、に追加した'error C3001 no program defined'後に を起動します。'GeometryProgram''technique'

float4x4 WorldITXf : WorldInverseTranspose;
float4x4 WorldViewProjXf : WorldViewProjection;
float4x4 WorldXf : World;

struct appdata
{
    float4 Position : POSITION;
    float4 Color    : COLOR0;
};

struct vertexOutput
{
    float4 Position : POSITION;
    float4 Color : COLOR0;
};


TRIANGLE void gshader1(AttribArray<float4> pos : POSITION,
                      AttribArray<float4> col : COLOR0)
{
//    some code will be here;
}


vertexOutput vshader1(appdata IN)
{
    vertexOutput OUT;
    float4 Po = float4(IN.Position.xyz,1.0f);
    OUT.Position = mul(WorldViewProjXf, Po);

    OUT.Color = IN.Color;

    return OUT;
}

float4 fshader1(vertexOutput IN) : COLOR
{
    return  IN.Color;
}

technique Tec1 {
    pass p0 {
        GeometryProgram = compile glslg gshader1();
        VertexProgram = compile glslv vshader1();
        FragmentProgram = compile glslf fshader1();
    }
}
4

1 に答える 1

1

解決しました。プロファイルに問題があるため、'glslg'プロファイルを変更して'gp4gp'問題を修正します。

于 2012-09-11T10:00:33.260 に答える