我有一个非常简单的VS和PS应该在屏幕上绘制一个屏幕尺寸的四边形。然而,我基于纹理坐标进行着色的测试在整个矩形(屏幕)上显示纯色,而不是沿x和y方向的内插淡化颜色。这是我的着色器代码:
struct FRAGMENT {float4 position:SV_POSITION; float3 tex_coord:TEXCOORD0;};
FRAGMENT vs_main(uint vertex_id : SV_VertexID) {
FRAGMENT OUT;
OUT.tex_coord = float3(0.0f,0.0f,0.0f);
if(vertex_id == 1) OUT.tex_coord.x = 1.0f;
else if(vertex_id == 2) OUT.tex_coord.y = 1.0f;
else if(vertex_id == 3) OUT.tex_coord.xy = float2(1.0f, 1.0f);
OUT.position = float4(OUT.tex_coord.x * 2.0f - 1.0f, OUT.tex_coord.y * 2.0f - 1.0f, 0.0f, 0.0f);
return OUT;
}
float4 ps_main(FRAGMENT IN) : SV_TARGET {
return float4(IN.tex_coord, 1.0f);
}
四边形绘制得很好,我可以手动着色,但IN.tex_coord的值在整个屏幕上都是实心的。有谁知道出了什么问题?