2012-07-07 2 views
1

버텍스 쉐이더에서 출력되는 매개 변수가 많아서이를 픽셀 쉐이더로 전달하고 싶습니다.HLSL 버텍스 쉐이더에서 픽셀 쉐이더로 배열 전달

이 작업을 수행하는 일반적인 방법은

struct vOut 
{ 
    float4 param0 : TEXCOORD0 ; 
    float4 param1 : TEXCOORD1 ; 
} ; 

그래서 별도의 변수를 작성하고 텍스처의 각 좌표를 넣어야 출력 구조를 선언하는 것입니다.

16 * float4 배열을 선언하는 방법이 있습니까? 이처럼 정점 선언을 쓰지 않고도 TEXCOORD0 -> TEXCOORD15을 차지하게 할 수 있습니까?

struct VertexOutput_Test 
{ 
    float4 hPosition : POSITION; 
    float4 vArr[5]  : TEXCOORD0; 
}; 

및 버텍스 및 픽셀 셰이더 예컨대 내에 정상적으로 주소 :

답변

1

너무 같이 선언 이 더미 코드 : 당신이 FXC 출력 보면

VertexOutput_Test VS_Test(VertexInput_1UV IN) 
{ 
    VertexOutput_Test OUT = (VertexOutput_Test)0; 
    float4 Po = float4(IN.position.xyz,1.0); 
    float3 No = IN.normal.xyz; 
    OUT.hPosition = mul(Po,worldViewProj); 
    OUT.vArr[0] = float4(1,0,0,0); 
    OUT.vArr[1] = float4(1,1,0,0); 
    OUT.vArr[2] = float4(1,0,1,0); 
    OUT.vArr[3] = float4(1,0,0,1); 
    OUT.vArr[4] = float4(1,1,1,1); 
    return OUT; 
} 

, 당신이 그것을 위해

에 잘 그들을 낳는 것을 볼 수 있습니다
관련 문제