我有xna和windows窗体的问题。我用xna开发了一个控件,并在窗口窗体中使用了该控件。我的问题开始时,我打开一个新的窗体,它完全覆盖使用xna的控制。当发生这种情况时,cpu使用率会上升到50%或更多,并保持不变。但是,如果xna控件的一小部分可见,则cpu使用率下降到正常(1-10%或多或少,但不会更多)。
下面是xna参数配置
parameters = new PresentationParameters();
parameters.BackBufferWidth = Math.Max(width, 1);
parameters.BackBufferHeight = Math.Max(height, 1);
parameters.BackBufferFormat = SurfaceFormat.Color;
parameters.DepthStencilFormat = DepthFormat.Depth24;
parameters.DeviceWindowHandle = windowHandle;
parameters.PresentationInterval = PresentInterval.Default;
parameters.IsFullScreen = false;
graphicsDevice = new GraphicsDevice(GraphicsAdapter.DefaultAdapter,
GraphicsProfile.Reach,
parameters);
提前感谢。
pd:这只发生在Windows xp上。对于windows 7,我没有问题。
你需要把
Thread.Sleep(1);
在你的Draw()函数中,如果你不使用sleep命令,XNA将自动尝试以最大速率运行Draw,这意味着它将占用你的一个核心。这有效地充当了帧限制步骤。现在你的电脑不可能以超过1000fps的速度渲染。使用Thread.Sleep(10)将您的计算机限制为100fps,但如果您的代码正常运行需要2ms,使用Sleep(10)将把它降低到80帧。
好吧。我解决了这个问题。不知道为什么,但它确实有效。
在你的自定义绘图代码xna最后我只是写:
Thread.sleep(10);