zoukankan      html  css  js  c++  java
  • C#游戏开发中快速的游戏循环

    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);
            }
    
        }
    
    }

    ---恢复内容结束---

  • 相关阅读:
    谷歌机器学习
    Pycharm使用conda安装的环境
    HAN模型理解2
    HAN模型理解1
    RCNN
    深度CNN
    多通道CNN
    TextCNN
    词向量2
    词向量1.md
  • 原文地址:https://www.cnblogs.com/rainbow70626/p/4553661.html
Copyright © 2011-2022 走看看