以下是两个版本的HLSL顶点着色器输入
struct VS_INPUTS_0 { float3 Pos:POSITION; float2 Tex0:TEXCOORD0; }
struct VS_INPUTS_1 { float3 Pos:POSITION; float3 Tex0:TEXCOORD0; }
唯一的区别是Tex0的float2和float3。是否有DX9 API来获取正确类型的Tex0以指示Tex0的类型是float2还是float3?
答案 0 :(得分:1)
对于DX9,据我所知,DX9会自动修补着色器。也就是说,如果您的像素着色器需要float2
并且您的顶点着色器提供float3
,它仍然有效。使用DirectX10 / 11,您可以使用着色器反射来查询已编译的着色器并找出它所期望的内容。
问题是:“正确型”是什么意思?这完全取决于你的像素着色器,单独的顶点着色器还不足以决定。