我正在使用 C# 中的 GDI+ 创建一个简单的游戏。
首先我需要一个游戏循环和一个渲染循环。我决定将它们分成两个单独的线程。它似乎工作,并且运行得非常快,但我在这里问的原因是因为我看到人们在他们的游戏循环中使用计时器来让它们以特定的帧速率运行。
这显然具有优势,您可以确定演员移动的速度。但我的游戏循环只是尽可能快地运行,就像 Unity3D 中的更新功能一样。现在为了确保演员总是以相同的速度移动,我所要做的就是将移动速度乘以帧增量时间(每帧之间的时间)。
我的渲染循环也尽可能快地运行。这是一个很好的游戏循环,为什么或为什么不?
// Constructor
public FormDisplay()
{
// Create a thread object, passing in the GameLoop method
var gameThread = new Thread(this.GameLoop);
// Start the game thread
gameThread.Start();
// Create a thread object, passing in the GameLoop method
var renderThread = new Thread(this.RenderLoop);
// Start the render thread
renderThread.Start();
}
private void GameLoop()
{
while (true)
{
// TODO: Insert Game Logic
}
}
private void RenderLoop()
{
while (true)
{
// TODO: Insert Render Logic
}
}