Files
doom-dm/Engine/Engine.cs
2024-12-04 22:35:04 +03:00

65 lines
1.9 KiB
C#

using System.Runtime.InteropServices;
using System.Text;
using Engine.Renderer.Buffer;
using Engine.Renderer.Buffer.Vertex;
using Engine.Renderer.Shader;
using OpenTK.Graphics.OpenGL;
using OpenTK.Mathematics;
using OpenTK.Windowing.Common;
using OpenTK.Windowing.Desktop;
using Serilog;
using Serilog.Events;
using Serilog.Sinks.SystemConsole.Themes;
namespace Engine;
public sealed class Engine
{
public Renderer.Renderer Renderer => _renderer;
private readonly Window _window;
private readonly Renderer.Renderer _renderer;
private readonly ILogger _logger;
public Engine(int width, int height, bool headless = false, string title = "")
{
var settings = new NativeWindowSettings
{
ClientSize = headless ? new Vector2i(1, 1) : new Vector2i(width, height),
Title = title,
StartVisible = !headless,
APIVersion = new Version(4, 5),
Profile = ContextProfile.Compatability
};
_window = new Window(this, new NativeWindow(settings), headless);
_renderer = new Renderer.Renderer(width, height);
Thread.CurrentThread.Name = "RendererThread";
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Verbose()
.Enrich.WithThreadName()
.Enrich.WithThreadId()
.Enrich.FromLogContext()
.WriteTo.Console(
outputTemplate:
"[{Timestamp:yyyy-MM-dd HH:mm:ss.fff}] [{Level:u3}] [{ThreadName,-15:l}:{ThreadId,-4:d4}] [{SourceContext:l}] {Message:lj}{NewLine}{Exception}",
theme: AnsiConsoleTheme.Literate)
.CreateLogger();
_logger = Log.ForContext<Engine>();
}
public void Run()
{
GL.ClearColor(0.2f, 0.3f, 0.3f, 1.0f);
GL.Viewport(0, 0, _window.Width, _window.Height);
while (!_window.IsExiting)
{
}
}
}