使用 XNA 的 SamplerState.LinearWrap

发布于 2024-11-25 14:11:59 字数 621 浏览 1 评论 0原文

有没有人有幸让 LinearWrap 与 XNA 4.0 在到达配置文件上一起工作?

示例...

device.SamplerStates[0] = SamplerState.LinearWrap;    

leftVert.TexCoord = new NormalizedShort(0.0f, 0.0f);
rightVert.TexCoord = new NormalizedShort(5.0f, 1.0f);

这不会将纹理沿 u 轴包裹 5 次。事实上,它渲染得就像 5.0f 是 1.0f 一样。

另一个例子...

leftVert.TexCoord = new NormalizedShort(-5.0f, 0.0f);
rightVert.TexCoord = new NormalizedShort(5.0f, 1.0f);

这将纹理包裹一次,但不是预期的 10 次。

那么...有人知道如何使用这个系统的“规则”吗?

也就是说......

相邻坐标之间是否存在最大支持偏差? 所有坐标都需要在 (-1,1) 范围内吗? 第一个数字必须是负数吗? (为什么微软没有在任何地方记录这一点)

Has anyone had any luck getting LinearWrap to work with XNA 4.0 on reach profile?

Example...

device.SamplerStates[0] = SamplerState.LinearWrap;    

leftVert.TexCoord = new NormalizedShort(0.0f, 0.0f);
rightVert.TexCoord = new NormalizedShort(5.0f, 1.0f);

This does not wrap the texture 5 times across the u axis. In fact it renders just as if that 5.0f was a 1.0f.

Another example...

leftVert.TexCoord = new NormalizedShort(-5.0f, 0.0f);
rightVert.TexCoord = new NormalizedShort(5.0f, 1.0f);

This wraps the texture once, but not 10 times as expected.

So... does anyone know the "rules" for how to use this system?

That is...

Is there a max supported deviation between adjacent coords?
Do all coords need to be within (-1,1)?
Does the first number have to be negative?
(And why isn't this documented anywhere Microsoft)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(1

十年不长 2024-12-02 14:11:59

我认为你的问题是 NormalizedShort 对象。 “标准化”通常表示从 -1 到 1 的值。对于 XNA,它似乎是 相同

尝试使用 Vector2(浮动)作为纹理坐标。

I think your issue is the NormalizedShort object. "Normalized" usually means a value from -1 to 1. In case of XNA, it seems to be the same.

Try using Vector2 (floats) as your texture coords instead.

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