feat: OpenTK 4.x OpenGL backend — replaces Silk.NET, default renderer

- Deleted Engine.Graphics.OpenGL (Silk.NET) project
- Created Engine.Graphics.OpenTK with OpenTK 4.9.4
- OpenTKWindow: GameWindow + ProcessEvents() (non-blocking), SwapBuffers()
- OpenTKInputState: KeyboardState/MouseState → Engine.Core.Key
- OpenTKRenderer: raw OpenGL 3.3 Core, managed arrays (no unsafe),
  OpenTK.Mathematics.Matrix4 (column-major, no transpose needed),
  shadow FBO with depth texture, PCF 3x3, full PBR shader
- OpenTKRenderContext + OpenTKBackendRegistrar ('opentk')
- Program.cs: default backend is 'opentk'
- 66/66 tests, 0 errors, 1600 FPS (VSync off)
This commit is contained in:
emil28092005
2026-06-17 21:24:33 +03:00
parent 5687e97a09
commit 270806a189
14 changed files with 684 additions and 737 deletions
+5 -5
View File
@@ -11,7 +11,7 @@ using Engine.Core;
using Engine.Core.Components;
using Engine.Graphics;
using Engine.Graphics.Loaders;
using Engine.Graphics.OpenGL;
using Engine.Graphics.OpenTK;
using Engine.Graphics.RaylibBackend;
using Engine.Graphics.Vulkan;
using Engine.Physics;
@@ -44,8 +44,8 @@ class Program
RaylibBackendRegistrar.EnsureRegistered();
VulkanBackendRegistrar.EnsureRegistered();
OpenGLBackendRegistrar.EnsureRegistered();
using var renderContext = RenderBackendFactory.Create("raylib", 1280, 720, enableValidation: false);
OpenTKBackendRegistrar.EnsureRegistered();
using var renderContext = RenderBackendFactory.Create("opentk", 1280, 720, enableValidation: false);
var window = renderContext.Window;
var input = window.Input;
using var renderer = renderContext.CreateRenderer();
@@ -296,8 +296,8 @@ class Program
queue.CompletePendingScreenshots();
// Swap buffers for OpenGL backend
if (renderContext is OpenGLRenderContext glCtx2)
glCtx2.SwapBuffers();
if (renderContext is OpenTKRenderContext otkCtx)
otkCtx.SwapBuffers();
frames++;
if (timing.TotalTime - lastFpsTime >= 1.0)