Я новичок в XNA и мне интересно, есть ли какой-то встроенный рабочий процесс для восстановления графического стека до заданного состояния. Например, я заметил, что после рендеринга спрайта в мою 3D-сцену 3D-часть перестала работать после вызова SpriteBatch.begin (), и мне пришлось исправить это с помощью
GraphicsDevice.BlendState = BlendState.Opaque;
GraphicsDevice.DepthStencilState = DepthStencilState.Default;
GraphicsDevice.SamplerStates[0] = SamplerState.LinearWrap;
Есть ли что-то вроде glPushAttrib () / glPopAttrib (), чтобы обернуть это вместо того, чтобы просто знать, в каких состояниях изменяется движок спрайта?
Моя текущая проблема заключается в том, что я играю с целями рендеринга, и после создания я обнаружил, что моя трехмерная часть кажется испорченной после вызова SetRenderTarget ().
Например, если бы мне пришлось вызывать следующие две функции, исходя из того, что я понимаю в документации, установка нулевого графического устройства должна сбрасывать все.
GraphicsDevice.SetRenderTarget(target);
GraphicsDevice.SetRenderTarget(null);
Комментирование первой строки, приведенной выше, сохраняет правильность 3D-рендеринга, поэтому я предполагаю, что некоторые изменения в этом вызове сильно изменились. Документированы ли эти изменения состояния где-нибудь по вызову или есть способ явно сохранить состояние и восстановить его, когда завершит выполнение какой-либо операции?