插入新监视器时在xna中绘制时出现异常

时间:2014-10-07 15:34:15

标签: wpf c#-4.0 .net-4.0 xna multiple-monitors

我的xna解决方案存在问题。 当我在运行xna解决方案时将新显示器插入计算机时,我得到了例外:

  
    

尝试读取或写入受保护的内存。这通常表明其他内存已损坏。

  

这总是发生在这一行:

  
    

mSimpleEffect.CurrentTechnique.Passes [0]。适用();

  

仅当我将新显示器插入计算机时。我完全无能为力。

mSimpleEffect是“BasicEffect”类的对象。这一行位于事件“OnFrameRender”(在一个没有捕获它的try块内),每次程序要渲染一个新帧时都会调用它。

1 个答案:

答案 0 :(得分:0)

我不确定这是否会有所帮助,但我通过使用WPF / OSG渲染并调整窗口大小来解决类似问题

它锁定就像你插入一个监视器一样,分辨率正在改变,你渲染缓冲区更改,尤其是当你全屏显示时。 通过更改分辨率,引入尝试通过不在缓冲区中放置来渲染到相同的缓冲区中。

我不知道这是否有帮助,但我想你需要 1.尝试拦截屏幕大小的更改/或插件消息,并通过分辨率更改对其作出反应

 protected override void Update(GameTime gameTime)


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

        // ...
    } 

如果这有助于至少某种方式,请高兴,但让我们等待专业软件:)