SlimDX - 设置状态块

时间:2011-09-26 23:06:18

标签: c# .net directx device slimdx

我想在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:

我收到了数百万行。所有人都说同样的话。 我应该如何处置这些状态?如何以正确的方式制作它?

1 个答案:

答案 0 :(得分:1)

根据您的信息,我可以给您的唯一提示是EndStackeBlock应该返回StateBlock对象,这是一次性的。我的猜测是,你在LostDevice事件后得到这些?在重置设备之前,您需要释放所有这些资源。 当然,制作StateBlocks的全部原因是你创建它们并重复使用它们,但似乎你每次都在重新创建它们而从不应用它们。所以过了一段时间,你创建了很多状态块,而没有使用或处理它们中的任何一个。 但也许你可以发布更多代码或提供更多信息。