我正在使用 SharpDX 的 11.2 兼容版本,并且到目前为止渲染效果很好,但是我开始使用大纹理进行测试,并且需要 mipmaping 以避免高于屏幕分辨率纹理的丑陋伪影。
据我了解,如果我想要完整的 mipmap 级别集,我需要在我的纹理创建中将 MipLevels 设置为 0,但是,将 MipLevels 参数从 1(它是什么并且有效)更改为 0(我的目标)会导致异常纹理实例化行上的参数无效。
错误必须在该点或之前(在到达任何渲染之前和声明步骤之前崩溃)。
这是我声明纹理状态的方式:
new SharpDX.Direct3D11.Texture2DDescription()
{
Width = bitmapSource.Size.Width,
Height = bitmapSource.Size.Height,
ArraySize = 1,
BindFlags = SharpDX.Direct3D11.BindFlags.ShaderResource,
Usage = SharpDX.Direct3D11.ResourceUsage.Immutable,
CpuAccessFlags = SharpDX.Direct3D11.CpuAccessFlags.None,
Format = SharpDX.DXGI.Format.R8G8B8A8_UNorm,
MipLevels = 1, // This works, but if i change it to 0, i get an argument invalid exception
OptionFlags = SharpDX.Direct3D11.ResourceOptionFlags.None,
SampleDescription = new SharpDX.DXGI.SampleDescription(1, 0),
}