我一直在努力在XNA中实现2D照明系统,并且已经使该系统正常工作-只要我的窗户尺寸是2的幂。否则,程序将在此行失败:

GraphicsDevice.DrawUserPrimitives(PrimitiveType.TriangleStrip, Vertices, 0, 2);


该异常指出“使用不为2的幂的纹理大小时,XNA Framework Reach概要文件要求TextureAddressMode为Clamp”,并且我为解决该问题所做的每一次尝试均以失败告终-我找到的最常见的解决方案在互联网上将GraphicsDevice.SamplerStates[0] = SamplerState.LinearClamp;线直接放在上面的线上方,但这并没有解决我的问题。

如果遗漏了解决此问题所需的任何信息,我深表歉意;我将非常乐意根据需要提供更多内容。

最佳答案

这不是您之前问的相同问题吗?

在您的HLSL中,查找声明像素着色器正在使用的采样器的行。

您可以设置地址模式以限制在此行中。

SamplerState somethingLikeThis {
    Filter = MIN_MAG_MIP_LINEAR;
    AddressU = Clamp;
    AddressV = Clamp;
};

10-06 05:09