您的位置:首页 > 编程语言 > C#

C#游戏开发中快速的游戏循环

2015-06-05 07:59 543 查看
C#游戏开发中快速的游戏循环的实现。参考《精通C#游戏编程》一书。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace GameLoop
{
[StructLayout(LayoutKind.Sequential)]
public struct Message
{
public IntPtr hWnd;
public Int32 msg;
public IntPtr wParam;
public IntPtr lParam;
public uint time;
public System.Drawing.Point p;
}

public class FastLoop
{
[System.Security.SuppressUnmanagedCodeSecurity]
[DllImport("User32.dll", CharSet = CharSet.Auto)]
public static extern bool PeekMessage(
out Message msg,
IntPtr hWnd,
uint messageFilterMin,
uint messageFilterMax,
uint flags);

PreciseTimer _timer = new PreciseTimer();
public delegate void LoopCallback();
LoopCallback _callback;

public FastLoop(LoopCallback callback)
{
_callback = callback;
Application.Idle += new EventHandler(OnApplicationEnterIdle);
}

void OnApplicationEnterIdle(object sender, EventArgs e)
{
while (IsAppStillIdle())
{
_callback();
}
}

private bool IsAppStillIdle()
{
Message msg;
return !PeekMessage(out msg, IntPtr.Zero, 0, 0, 0);
}

}

}


---恢复内容结束---
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: