aboutsummaryrefslogtreecommitdiff
path: root/Unicity.Renderer/RenderWindow.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Unicity.Renderer/RenderWindow.cs')
-rw-r--r--Unicity.Renderer/RenderWindow.cs89
1 files changed, 30 insertions, 59 deletions
diff --git a/Unicity.Renderer/RenderWindow.cs b/Unicity.Renderer/RenderWindow.cs
index 2026780..4566295 100644
--- a/Unicity.Renderer/RenderWindow.cs
+++ b/Unicity.Renderer/RenderWindow.cs
@@ -1,6 +1,4 @@
using System;
-using System.Diagnostics;
-using System.Drawing;
using OpenTK;
using OpenTK.Graphics;
using OpenTK.Graphics.OpenGL4;
@@ -9,93 +7,67 @@ namespace Unicity.Renderer
{
public class RenderWindow : IDisposable
{
- const int UPS = 60;
-
- internal GameWindow window = null;
-
- Stopwatch loopTimer = new Stopwatch();
-
- public event EventHandler Init;
public event EventHandler Update;
public event EventHandler Render;
- public event EventHandler Destroy;
- public int Width
- {
- get => window.ClientSize.Width;
- set => window.ClientSize = new Size(value, window.ClientSize.Height);
- }
+ GameWindow window = null;
- public int Height
- {
- get => window.ClientSize.Height;
- set => window.ClientSize = new Size(window.ClientSize.Width, value);
- }
+ public int Width { get => window.Width; set => window.Width = value; }
+ public int Height { get => window.Height; set => window.Height = value; }
- public string Title
- {
- get => window.Title;
- set => window.Title = value;
- }
+ public string Title { get => window.Title; set => window.Title = value; }
- bool running = false;
+ bool disposed = false;
public RenderWindow(int width, int height, string title)
{
- window = new GameWindow(width, height, GraphicsMode.Default, title, GameWindowFlags.Default);
-
+ window = new GameWindow(width, height, GraphicsMode.Default, title, GameWindowFlags.Default, DisplayDevice.Default, 4, 0, GraphicsContextFlags.ForwardCompatible);
+ window.Load += Window_Load;
+ window.Resize += Window_Resize;
window.UpdateFrame += Window_UpdateFrame;
window.RenderFrame += Window_RenderFrame;
- window.Unload += Window_Unload;
- window.Resize += Window_Resize;
}
-
- private void Window_UpdateFrame(object sender, FrameEventArgs e)
+ private void Window_Load(object sender, EventArgs e)
{
- Update?.Invoke(this, EventArgs.Empty);
+ GL.Viewport(0, 0, Width, Height);
+ GL.ClearColor(1.0f, 0.0f, 0.0f, 1.0f);
}
- private void Window_RenderFrame(object sender, FrameEventArgs e)
+ private void Window_Resize(object sender, EventArgs e)
{
- Render?.Invoke(this, EventArgs.Empty);
- window.SwapBuffers();
+ GL.Viewport(0, 0, Width, Height);
}
- private void Window_Unload(object sender, EventArgs e)
+ private void Window_UpdateFrame(object sender, FrameEventArgs e)
{
- Destroy?.Invoke(this, EventArgs.Empty);
+ Update?.Invoke(this, EventArgs.Empty);
}
- private void Window_Resize(object sender, EventArgs e)
+ private void Window_RenderFrame(object sender, FrameEventArgs e)
{
- GL.Viewport(0, 0, Width, Height);
- Render?.Invoke(this, EventArgs.Empty);
+ GL.Clear(ClearBufferMask.ColorBufferBit);
+
+ Update?.Invoke(this, EventArgs.Empty);
+
window.SwapBuffers();
}
+
+ public void Open(double ups, double fps)
+ {
+ window.Run(ups, fps);
+ }
- public void Open()
+ public void MakeCurrent()
{
- if (running)
+ if (window.IsExiting)
{
return;
}
-
- Init?.Invoke(this, EventArgs.Empty);
- window.VSync = VSyncMode.Off;
- window.Run(UPS, 0);
-
- running = true;
+ window.MakeCurrent();
}
- public double GetFPS()
- {
- return window.RenderFrequency;
- }
-
- bool disposed = false;
protected virtual void Dispose(bool disposing)
{
- // Return of already disposed
if (disposed)
{
return;
@@ -103,13 +75,12 @@ namespace Unicity.Renderer
if (disposing)
{
- // Free managed objects here
+ // Dispose of managed resources
}
- // Dispose of any unmanaged resources
+ // Dispose of unmanaged resources
window?.Dispose();
- // Set disposed flag to true
disposed = true;
}