【发布时间】:2014-01-04 01:25:58
【问题描述】:
我正在使用 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),
}
【问题讨论】:
-
如果你关注sharpdx.com/forum/4-general/…,你应该能够自己诊断
-
我只是按照这些步骤操作(打开本机调试并使用调试标志创建设备)。我仍然得到相同的结果,一个 SharpDXException 说明我的参数不正确。
-
即使按照这些步骤,我也没有在输出窗口中得到任何东西(如果重要的话,我正在使用 VS 2013)
-
好吧,不确定发生了什么,但本机调试再次未选中,重新检查,但它抱怨缺少 nvumdshimx.dll,所以我认为我缺少能够正确调试的东西?
-
通过进入反汇编视图并跳过该行(它在错误之前),设法跳过丢失的 pdb,但是我从附加输出中得到的一切都是无用的:D3D11 错误:ID3D11Device::CreateTexture2D:返回 E_INVALIDARG,表示传递了无效参数。 [STATE_CREATION 错误 #104:CREATETEXTURE2D_INVALIDARG_RETURN]
标签: graphics rendering directx-11 sharpdx mipmaps