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

发布于 2024-12-09 06:27:06 字数 263 浏览 2 评论 0原文

这是 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

太阳男子 2024-12-16 06:27:06

对于 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 provides float3, 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文