采样器不包裹纹理

时间:2014-01-22 22:38:02

标签: c# directx shader hlsl sharpdx

我有一个着色器,里面有一个不起作用的采样器,我目前用时间修复覆盖。但我最终找到了问题并修复了这个着色器。

基本上我的纹理和采样器定义如下(使用Profile = fx_4_0;,还尝试了许多其他方法来定义采样器,例如:使用sampler_state的dx9方式等):

Texture2D dirtTexture;
SamplerState WrapSampler {
    Filter = MIN_MAG_MIP_LINEAR;
    AddressU = Wrap;
    AddressV = Wrap;
};

我还尝试了编写相同采样器的其他变体,但总是使用夹住纹理坐标的默认采样器结束。

并且用于读取纹理: Output.Color = dirtTexture.Sample(WrapSampler, PSIn.TextureCoords);

我的临时修复,使纹理包装正确(无论出于何种原因),如下所示: _effect.Parameters["WrapSampler"].SetResource(GraphicsDevice.SamplerStates.LinearWrap);

如果需要,

完整着色器:http://pastebin.com/tLJi1Uwd

1 个答案:

答案 0 :(得分:2)

您必须在着色器外部定义samplerstate,因此您的临时修复是正确的方法。

请参阅here