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.