Исключение при рисовании в xna при подключении нового монитора

У меня проблема с моим решением xna. Когда я подключаю новый монитор к компьютеру во время работы моего решения xna, я получаю исключение:

Попытка чтения или записи защищенной памяти. это часто указывает на то, что другая память повреждена.

Это всегда происходит в этой строке:

mSimpleEffect.CurrentTechnique.Passes [0].Нанесите ();

только когда я подключаю новый монитор к своему компьютеру. Я совершенно невежественен.

mSimpleEffect является объектом класса "BasicEffect". Эта строка находится внутри события "OnFrameRender" (внутри блока try, который его не перехватывает), которое вызывается каждый раз, когда программа собирается отрендерить новый кадр.

1 ответ

Я не совсем уверен, поможет ли это, но я решил проблему с помощью рендеринга с WPF/OSG и изменения размера окна

он блокируется, как когда вы подключаете монитор, разрешение меняется, а буфер рендеринга изменяется, особенно когда вы работаете в полноэкранном режиме. при изменении разрешения включаемая попытка рендеринга в тот же самый размер буфера, не имея достаточно места в буфере.

я не знаю, может ли это помочь, но я думаю, что вам нужно 1. попытаться перехватить сообщение об изменении размера экрана или плагина и реагировать на него, как при изменении разрешения

 protected override void Update(GameTime gameTime)


 {
        if(userClickedTheResolutionChangeButton)
        {
            graphics.IsFullScreen = userRequestedFullScreen;
            graphics.PreferredBackBufferHeight = userRequestedHeight;
            graphics.PreferredBackBufferWidth = userRequestedWidth;
            graphics.ApplyChanges();
        }

        // ...
    } 

рад, если это поможет хоть как-то, но давайте подождем, пока профессионал ответит:)

Другие вопросы по тегам