如何在 DX9 的顶点着色器中获取正确类型的纹理坐标输入
这是 HLSL 顶点着色器输入
结构 VS_INPUTS_0 的两个版本 { float3 Pos:位置; float2 Tex0 : TEXCOORD0; }
结构 VS_INPUTS_1 { float3 Pos:位置; float3 Tex0 : TEXCOORD0; 唯一的区别
是Tex0 的float2 和float3。是否有DX9 API可以获取Tex0的正确类型来指示Tex0的类型是float2还是float3?
Here are two version of HLSL vertex shader input
struct VS_INPUTS_0
{
float3 Pos : POSITION;
float2 Tex0 : TEXCOORD0;
}
struct VS_INPUTS_1
{
float3 Pos : POSITION;
float3 Tex0 : TEXCOORD0;
}
The only difference is the float2 and float3 of Tex0. Is there a DX9 API to get the right type of Tex0 to indicate whether the type of Tex0 is float2 or float3?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
对于 DX9,据我所知,DX9 会自动修补你的着色器。也就是说,如果您的像素着色器需要
float2
并且顶点着色器提供float3
,它仍然可以工作。使用 DirectX10/11,您可以使用着色器反射来查询已编译的着色器并找出它所期望的内容。问题是:“正确类型”是什么意思?这完全取决于您的像素着色器,仅靠顶点着色器不足以决定。
For DX9, not as far as I know, as DX9 automatically patches your shaders. That is, if your pixel shader expects
float2
and your vertex shader providesfloat3
, it will still work. With DirectX10/11, you can use shader reflection to query the compiled shader and figure out what it expects.Question is: What do you mean with "right type"? That totally depends on your pixel shader, the vertex shader alone is not enough to decide.