2015-07-01 25 views
1

我收到警告產值VERT沒有完全地初始化

在「自定義/ NoobShader_02」

着色器警告:輸出值「VERT」不是 在第30行(在D3D11)

完全初始化

用下面的代碼任何人都可以解釋爲什麼它這樣做?

Shader "Custom/NoobShader_02" { 
    Properties { 
     twisting ("Twist", Range(-10,10)) = 1 
    } 
    SubShader { 
     Pass{ 
     CGPROGRAM 
     #pragma vertex vert 
     #pragma fragment frag 

     float twisting; 

     struct VertexOutput 
     { 
      float4 pos : SV_POSITION; 
      float3 nor : NORMAL; 
     }; 

     struct VertexInput 
     { 
      float4 vertex : POSITION; 
      float3 normal : NORMAL; 
     }; 

     struct FragmentOutput 
     { 
      float4 color : COLOR; 
     }; 

     VertexOutput vert (VertexInput i) 
     { 
      VertexOutput VOUT; 
      VOUT.pos = mul(UNITY_MATRIX_MVP, i.vertex); 

      return VOUT; 
     } 

     FragmentOutput frag() 
     { 
      FragmentOutput FOUT; 
      float4 tempCol = {abs(_SinTime.z),0,0,1}; 
      FOUT.color = tempCol; 
      return FOUT; 
     } 
     ENDCG 
     } 
    } 
    FallBack "Diffuse" 
} 

回答

1

它說幾乎會發生什麼,VertexOutput VOUT;只是你變量的聲明。這就像定義MyObject o;然後嘗試使用o.ToString();o仍然爲空。

你必須使用:

VertexOutput VOUT; 
UNITY_INITIALIZE_OUTPUT(VertexOutput, VOUT);