2014-10-07 20 views
0

我遇到了xna解决方案的问题。 当我插上了新的显示器到我的电脑在运行我的XNA的解决方案,我得到异常:在插入新显示器时在xna中绘制异常

试图读取或写入保护内存。这往往表明其他内存已损坏。

这总是发生在这条线:

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

只有当我插入一台新的显示器到我的电脑。我完全无能为力。

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

回答

0

我不漂亮知道这会帮助,但IA与WPF/OSG渲染和调整窗口大小

其锁定,当你的插件显示器分辨率改变像哈德一个simular问题,你渲染缓冲当你在全屏显示时会发生变化。 通过更改分辨率,通过不在缓冲区中放置位置,将尝试渲染到相同的缓冲区大小。

我不知道是否可以帮助,但我猜你需要 1.尝试截取屏幕尺寸的变化/或插件的消息,并通过分辨率改变它的反应就像

protected override void Update(GameTime gameTime) 


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

     // ... 
    } 

幸福是否有帮助至少在某种程度上,但让我们等待一个亲answare :)

+0

谢谢,但由于我使用wpf我不知道该放哪段代码。 – 2014-10-07 20:41:38

+0

你正在使用XNA的罪孽,你有一个类派生自:游戏。这应该是正确的地方来覆盖更新功能 – Oscar 2014-10-08 08:45:10

+0

不,我不使用任何来自游戏的派生...我使用GraphicsDevice – 2014-10-08 13:02:05