我想在SlimDX Direct3d9设备中设置状态。
我在frameRender函数的开头有这段代码。
device.BeginStateBlock();
device.SetRenderState(RenderState.ZEnable, false);
device.SetRenderState(RenderState.Lighting, false);
device.SetRenderState(RenderState.CullMode, Cull.None);
device.EndStateBlock(); 但是我在调试窗口中得到了这个错误:
Object of type SlimDX.Direct3D9.StateBlock was not disposed. Stack trace of object creation:我得到了上百万条这样的台词。他们说的都是一样的话。我应该如何处理这些状态?如何以恰当的方式制作它?
发布于 2011-09-27 07:45:23
根据您的信息,我能给您的唯一提示是,EndStackeBlock应该返回一个StateBlock对象,该对象是可处理的。我的猜测是,你是在LostDevice事件后得到这些的?在重置设备之前,您需要释放所有这些资源。当然,制作StateBlocks的全部原因是为了让您创建它们一次并重用它们,但似乎您每次都在重新创建它们,并且从未应用过它们。因此,过了一段时间后,您创建了许多状态块,但没有使用或处理任何状态块。但也许你可以发布更多的代码或提供更多的信息。
https://stackoverflow.com/questions/7562390
复制相似问题