3

我明白他的错误

“当使用不是 2 次幂的纹理大小时,XNA Framework Reach 配置文件要求 TextureAddressMode 为 Clamp”

用于线

GraphicsDevice.DrawUserPrimitives<VertexPositionTexture>
                    (PrimitiveType.TriangleStrip, verts, 0, 2);

我应该怎么办 ?

谢谢,

4

2 回答 2

8

使用范围配置文件时,使用两个大小纹理的幂或将 TextureAddressingMode 设置为 Clamp。

TextureAddressingMode 是 GraphicsDevice SamplerState 的一部分。您需要在绘制调用之前设置此状态。以下代码显示如何将第一个纹理采样器设置为内置采样器状态之一。

GraphicsDevice.SamplerStates[0] = SamplerState.LinearClamp;

GraphicsDevice.DrawUserPrimitives<VertexPositionTexture>
                    (PrimitiveType.TriangleStrip, verts, 0, 2);
于 2011-04-11T04:05:47.220 回答
1

在我的情况下,Model.fx 文件将 AddressMode 设置为 Wrap,这搞砸了。

这是我的 Model.fx 中正确的 sampler_state:

sampler TextureSampler = sampler_state
{
    Texture = (Texture);

    MinFilter = Linear;
    MagFilter = Linear;
    MipFilter = Linear;

    AddressU = Clamp;
    AddressV = Clamp;
};

更多信息可以在这里找到:http: //www.packtpub.com/article/xna-hsl

于 2012-10-03T01:34:41.403 回答