public Engine(Windowing.IWindowProvider windowProvider, SharpFileSystem.IFileSystem fileSystem) { WindowProvider = windowProvider; // Initialize file system and resource manager FileSystem = new Common.IO.FileSystem(fileSystem); ResourceGroupManager = new Common.ResourceGroupManager(FileSystem); CoreResources = ResourceGroupManager.Add("core", 100); GameResources = ResourceGroupManager.Add("game", 10); // Setup graphics core GraphicsBackend = new Graphics.Backend(CoreResources, WindowProvider.Width, WindowProvider.Height, WindowProvider.WindowInfo); // Init resource loaders RegisterResourceLoaders(CoreResources); RegisterResourceLoaders(GameResources); // High level renderer (deferred + hdr) Renderer = new RendererImplementation(FileSystem, CoreResources, GraphicsBackend); // The input stuff InputManager = new Input.InputManager(WindowProvider.Bounds); // Setup game world GameWorld = new GameWorld(GameResources, GraphicsBackend); }
private void RenderLoop() { var graphicsMode = new GraphicsMode(new ColorFormat(32), 24, 0, 0); Window = new NativeWindow(RequestedWidth, RequestedHeight, Name, GameWindowFlags.Default, graphicsMode, DisplayDevice.Default); Window.Visible = true; Window.CursorVisible = false; using (GraphicsBackend = new Triton.Graphics.Backend(CoreResources, Window.Width, Window.Height, Window.WindowInfo)) { Triton.Graphics.Resources.ResourceLoaders.Init(CoreResources, GraphicsBackend, FileSystem); Triton.Graphics.Resources.ResourceLoaders.Init(GameResources, GraphicsBackend, FileSystem); RendererReady.Set(); while (Running) { Window.ProcessEvents(); if (!Window.Exists) break; CoreResources.TickResourceLoading(100); GameResources.TickResourceLoading(10); if (!GraphicsBackend.Process()) break; Thread.Sleep(1); } Running = false; } }