SlimDX - Установить состояние блока - PullRequest
1 голос
/ 27 сентября 2011

Я хочу установить состояния в устройстве 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 Ответ

1 голос
/ 27 сентября 2011

Единственная подсказка, которую я могу вам дать, учитывая вашу информацию, заключается в том, что EndStackeBlock должен возвращать объект StateBlock, который является одноразовым.Я думаю, вы получаете их после события LostDevice?Перед перезагрузкой устройства вам необходимо освободить все эти ресурсы.И, конечно же, вся причина создания StateBlocks состоит в том, что вы создаете их один раз и используете их повторно, но кажется, что вы воссоздаете их каждый раз и никогда не применяете их.Итак, через некоторое время вы создали много блоков состояния, не используя и не удаляя ни один из них.Но, возможно, вы можете разместить больше кода или дать больше информации.

...