2021-15-03

+ GenericTransformation.InWorldSpace (Merges the object transformation and the last master transformation)
+ Ray class for Raycasting (may not work correctly)
+ Util.CallGarbageCollector() can call the garbage collector.
+ GLWindow.WindowFlags allow to easly switch between Window <-> Borderless Window (this will cause the window to fill the entire screen) <-> Exclusive Fullscreen.

~ Made the bloom-texture scale a constructor-parameter.

SM.OGL:
+ OpenGL-GarbageCollector integration.
+ BoundingBox.GetBounds(Matrix4, out Vector3,out Vector3) allows for easy transformation of the bounding box.
+ GLObjects can now marked as not compiled. Where it always returns false at WasCompiled.

SM2D:
~ Improved the Mouse2D.MouseOver Algorithm.
This commit is contained in:
Michel Fedde 2021-03-15 18:11:58 +01:00
parent 4efc47d75a
commit 5bb690e45f
18 changed files with 224 additions and 20 deletions

View file

@ -1,6 +1,9 @@
#region usings
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Runtime.InteropServices;
using OpenTK.Graphics.OpenGL4;
#endregion
@ -12,11 +15,15 @@ namespace SM.OGL
/// </summary>
public abstract class GLObject
{
private static List<GLObject> _disposableObjects = new List<GLObject>();
protected bool ReportAsNotCompiled;
/// <summary>
/// Contains the OpenGL ID
/// </summary>
protected int _id = -1;
/// <summary>
/// If true, the system will call "Compile()", when "ID" is tried to get, but the id is still -1.
/// </summary>
@ -25,7 +32,7 @@ namespace SM.OGL
/// <summary>
/// Checks if the object was compiled.
/// </summary>
public bool WasCompiled => _id > 0;
public bool WasCompiled => _id > 0 && !ReportAsNotCompiled;
/// <summary>
/// Returns the id for this object.
@ -64,7 +71,7 @@ namespace SM.OGL
/// </summary>
public virtual void Dispose()
{
_id = -1;
}
/// <summary>
@ -87,6 +94,15 @@ namespace SM.OGL
if (GLSystem.Debugging) GL.ObjectLabel(TypeIdentifier, _id, name.Length, name);
}
public static void DisposeMarkedObjects()
{
foreach (GLObject o in _disposableObjects)
{
o.Dispose();
}
_disposableObjects.Clear();
}
/// <summary>
/// Returns the ID for the object.
/// </summary>
@ -95,5 +111,10 @@ namespace SM.OGL
{
return glo.ID;
}
~GLObject()
{
if (WasCompiled) _disposableObjects.Add(this);
}
}
}