65 lines
1.9 KiB
C#
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)
|
|
{
|
|
|
|
}
|
|
}
|
|
} |