我做错了什么? 如果我编译这会得到一个错误
cbuffer MatrixBuffer
{
matrix worldM;
matrix viewM;
matrix projectionM;
};
struct VertexInput
{
float4 position : POSITION;
float4 color : COLOR;
};
struct PixelInput
{
float4 position : SV_POSITION;
float4 color : COLOR;
}
PixelInput ColorVertexShader(VertexInput input)
{
PixelInputType output;
input.position.w = 1.0f;
output.position = mul(input.position, worldM);
output.position = mul(output.position, viewM);
output.position = mul(output.position, projectionM);
output.color = input.color;
return output;
}
我在"第2行遇到语法错误{"
如果我这样做
matrix worldM;
matrix viewM;
matrix projectionM;
struct VertexInput
{
float4 position : POSITION;
float4 color : COLOR;
};
struct PixelInput
{
float4 position : SV_POSITION;
float4 color : COLOR;
}
PixelInput ColorVertexShader(VertexInput input)
{
PixelInputType output;
input.position.w = 1.0f;
output.position = mul(input.position, worldM);
output.position = mul(output.position, viewM);
output.position = mul(output.position, projectionM);
output.color = input.color;
return output;
}
我收到了意外的令牌'输出'
我不知道错在哪里 我仍然是HLSL中写作着色器的Noob
答案 0 :(得分:0)
我不确定这是否会有所帮助,但也许可以尝试定义你的cbuffer:
cbuffer cbPerObject: register(b0)
{
matrix WorldM: packoffset(c0);
matrix ViewM: packoffset(c4);
matrix ProjectionM: packoffset(c8);
};
答案 1 :(得分:0)
您已定义
struct PixelInput
{
float4 position : SV_POSITION;
float4 color : COLOR;
}
但稍后您使用
PixelInputType output;
显然,这不起作用。使用相同的名称。