2012-09-11 3 views
1

CgFX에서 geometry shaders를 사용하는 방법은 무엇입니까? 실제로 '기법'에서 기하 구조 셰이더를 지정하는 방법은 무엇입니까?CgFX geometry shader

목록은 아래에 있습니다. 정점 및 조각 셰이더는 잘 컴파일됩니다. 그러나 'NVIDIA FX 작곡가 2.5'는 'technique''GeometryProgram'을 추가 한 후 'error C3001 no program defined'을 발동합니다.

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

답변

1

해결. 'glslg' 프로필에서 문제가 발생했습니다.이를 'gp4gp'으로 변경하면 문제가 해결됩니다.