예제 #1
0
        public static void Main(string[] args)
        {
            Engine.AddLogAppender(new ConsoleLogAppender());

            var settings = new ApplicationSettings()
            {
                DisplayStyle = DisplayStyle.ResizeableWithTitle,
                //VerticalSynchronization = true
            };

            #if DEBUG
            //settings.Debug = true;
            #endif

            Engine.Run(new Program(), settings);
        }
예제 #2
0
 public Application(IApplicationLogic logic, ApplicationSettings settings)
 {
     m_keys = new bool[0xFF];
     m_thread = Thread.CurrentThread;
     m_actions = new Queue<Action>();
     m_logic = logic;
     m_display = new Display(this, WindowProc, settings.DisplayStyle);
     GL.Initialize(
         m_display,
         settings.DisplayColorBits,
         settings.DisplayDepthBits,
         settings.Debug
     );
     GL.SwapInterval(settings.VerticalSynchronization ? 1 : 0);
     m_synchronizationContext = new ApplicationSynchronizationContext(m_display.Handle);
     m_stopwatch = new Stopwatch();
 }
예제 #3
0
        public static void Run(IApplicationLogic logic, ApplicationSettings settings)
        {
            if (m_currentApplication == null)
            {
                if (logic == null) throw new ArgumentException("logic");
                if (settings == null) throw new ArgumentException("settings");

                try
                {
                    using (m_currentApplication = new Application(logic, settings))
                    {
                        m_currentApplication.Run();
                    }
                }
                finally
                {
                    m_currentApplication = null;
                }
            }
        }