c# windows窗体和xna -高CPU使用率



我有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);

最新更新