使用:
Texture2D texture = this.Content.Load<Texture2D>("MyTexture");
将默认纹理使用到“不可变”,并且只能作为着色器视图绑定。
为了生成MIPMAP,需要默认和绑定为Shaderview/Renderview。
现在您有一些选择:
1/将您的纹理作为带有MIPMAP的DD的预处理,加载程序将考虑到这一点。
Texconv 可以为你做。 (使用-m指定级别计数)。
2/如上所述加载纹理,使用
Texture2D texturewithmips = Texture2D.New(device, texture.Width, texture.Height, MipMapCount.Auto, texture.Format,
TextureFlags.ShaderResource | TextureFlags.RenderTarget,
1,Direct3D11.ResourceUsage.Default);
现在,您需要复制第一个MIP,使用:
device.Copy(texture, 0, null, t2, 0);
您现在可以使用:
t2.GenerateMipMaps(this.GraphicsDevice);
3/由于在上面的方法上,您有点丢失内容管理器(为您提供自动缓存)。
您可以通过添加更多纹理加载选项来修改TextureContentReader类为您做到这一点。
如果您需要更多的帮助,请自由。