【发布时间】:2016-11-26 16:58:12
【问题描述】:
假设我的着色器中有这两个变量:
HLSL
texture ModelTexture;
sampler2D TextureSampler
这就是我设置纹理的方式:
C#
myEffect.Parameters["ModelTexture"].SetValue(woodTexture);
采样器有什么作用?没有EffectParameter.SetValue(SamplerState) 重载,但我想在运行时更改过滤器。我该怎么办?
我很确定其余代码没问题,因为如果我直接在 HLSL 中初始化 TextureSampler,它会正确地绘制带纹理的对象。
编辑:
我尝试在 GraphicsDevice 中设置一个 SamplerState 对象。
C#
GraphicsDevice.SamplerStates[0] = new SamplerState { Filter = TextureFilter.Linear };
HLSL
sampler2D TextureSampler : register(s0);
现在纹理分配(参见第二个 sn-p)抛出 NullReferenceException。
我也尝试过像上面那样设置纹理,而不是通过EffectParameter:
C#
GraphicsDevice.Textures[0] = woodTexture;
HLSL
texture ModelTexture : register(t0);
程序编译运行,但未加载纹理(渲染对象为黑色)。
【问题讨论】:
标签: c# xna shader monogame hlsl