【发布时间】:2017-07-23 15:10:57
【问题描述】:
我正在使用 SlimDX (DirectX 9) 制作 2D 游戏引擎,但是我面临两个相互关联的问题,即帧速率波动(尽管帧速率很高)和 CPU 使用率高。帧速率本质上是所有动画运行的游戏计时器。 CPU使用率也很高(20%),我想限制SlimDX绘制帧的速度以降低CPU使用率,并稳定动画和游戏速度,我该怎么做?
p.s 我确信有更好的方法来制作一个独立于帧速率的游戏“计时器”,任何信息都将不胜感激。
循环和初始化:
var form = new RenderForm(World.WindowTitle);
form.ClientSize = new Size(World.WindowWidth, World.WindowHeight);
var device = new Device(new Direct3D(), 0, DeviceType.Hardware, form.Handle, CreateFlags.HardwareVertexProcessing, new PresentParameters()
{
BackBufferWidth = form.ClientSize.Width,
BackBufferHeight = form.ClientSize.Height
});
//Some stuff here, irrelevant to DirectX
MessagePump.Run(form, () =>
{
device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.Black, 1.0f, 0);
device.BeginScene();
sprite.Begin(SlimDX.Direct3D9.SpriteFlags.AlphaBlend);
//Stuff here
sprite.End();
device.EndScene();
device.Present();
//Thread.Sleep(1); <-- this didnt work using 0 or 1, it actually increased cpu ussage
});
【问题讨论】: