Shader警告X3578:
warning X3578: Output value 'VS' is not completely initialized。
這個警告是因爲Vertex Shader,這裏的名字是“VS”,有一個output的變量(頂點着色器的輸出結構,自定義)被賦值了,但是沒有所有的部分被賦值。
舉例:
struct OUTPUT
{
float4 depth;
};
PixelInput VS(VertexInput input)
{
....
OUTPUT out;
out.rgb = 0;
}
因爲shader可以支持我們上面的寫法,只給某個float4(其實會對應到一個GPU寄存器)的前三位賦值,但是定義的量是float4,相對來說也就是有4個部分,所以還餘下一個float部分沒有初始化,所以shader編譯的時候編譯器會出警告。
解法:
output = 0;
對整個float4賦值就解決該問題。
實驗平臺:
Shade Model 4.0, visual studio 2008.