2014-01-22 65 views
1

我得到了一个着色器,里面没有运行的采样器,我现在用一个临时修复覆盖。但我finnaly找到问题并修复此着色器。采样器不包裹纹理

基本上我有我的纹理采样器这样定义(使用Profile = fx_4_0;,也tryed定义取样例如许多其他方法:使用sampler_state DX9方式等):

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

,我也tryed其他写入相同采样器的变体,但最终使用夹住纹理坐标的默认采样器结束。

和读取纹理: Output.Color = dirtTexture.Sample(WrapSampler, PSIn.TextureCoords);

我的时间修复,即正确地使纹理包裹(无论何种原因),如下:如有需要, _effect.Parameters["WrapSampler"].SetResource(GraphicsDevice.SamplerStates.LinearWrap);

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

回答

2

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

here

+0

哇非常感谢你救了我很多头疼的:d – HellGate

+0

欢迎您! – thumbmunkeys