Graphics 如何在DX9中的顶点着色器中获得正确类型的纹理坐标输入

Graphics 如何在DX9中的顶点着色器中获得正确类型的纹理坐标输入,graphics,directx,hlsl,vertex-shader,Graphics,Directx,Hlsl,Vertex Shader,以下是两个版本的HLSL顶点着色器输入 结构与\u输入\u 0 { 浮动3位:位置; 浮动2 Tex0:TEXCOORD0; } 结构与输入1 { 浮动3位:位置; 浮动3 Tex0:TEXCOORD0; } 唯一的区别是Tex0的float2和float3。是否有一个DX9 API来获取正确的Tex0类型,以指示Tex0的类型是float2还是float3?对于DX9,据我所知不是这样,因为DX9会自动修补着色器。也就是说,如果像素着色器需要float2,而顶点着色器提供float3,则它仍然

以下是两个版本的HLSL顶点着色器输入

结构与\u输入\u 0 { 浮动3位:位置; 浮动2 Tex0:TEXCOORD0; }

结构与输入1 { 浮动3位:位置; 浮动3 Tex0:TEXCOORD0; }


唯一的区别是Tex0的float2和float3。是否有一个DX9 API来获取正确的Tex0类型,以指示Tex0的类型是float2还是float3?

对于DX9,据我所知不是这样,因为DX9会自动修补着色器。也就是说,如果像素着色器需要
float2
,而顶点着色器提供
float3
,则它仍然可以工作。使用DirectX10/11,您可以使用着色器反射来查询已编译的着色器,并找出它所需的内容


问题是:“正确的类型”是什么意思?这完全取决于您的像素着色器,仅顶点着色器不足以决定。

谢谢。我认为这个问题与像素着色器无关,因为我想获得顶点着色器输入的正确类型信息。