2021-26-03

+ Texture compression

~ General spring cleaning
This commit is contained in:
Michel Fedde 2021-03-26 14:23:59 +01:00
parent bf1118c261
commit 7afec9c9ef
8 changed files with 42 additions and 32 deletions

View file

@ -13,8 +13,8 @@ namespace SM.Base.Controls
/// </summary>
public static class Keyboard
{
internal static KeyboardState? _keyboardState;
internal static List<Key> _lastPressedKeys = new List<Key>();
private static KeyboardState? _keyboardState;
private static List<Key> _lastPressedKeys = new List<Key>();
/// <summary>
/// True, when ANY key pressed.

View file

@ -15,8 +15,8 @@ namespace SM.Base.Controls
/// </summary>
public class Mouse
{
internal static MouseState? _mouseState;
internal static List<MouseButton> _lastButtonsPressed = new List<MouseButton>();
private static MouseState? _mouseState;
private static List<MouseButton> _lastButtonsPressed = new List<MouseButton>();
/// <summary>
/// The current position of the mouse in the screen.

View file

@ -31,7 +31,7 @@ namespace SM.Base.Drawing.Particles
/// <summary>
/// The maximum speed of the particles
/// </summary>
public float MaxSpeed = 1;
public float MaxSpeed = 50;
/// <summary>
/// This contains all important information for each particle.
@ -67,13 +67,14 @@ namespace SM.Base.Drawing.Particles
public abstract Func<TDirection, ParticleContext, TDirection> MovementCalculation { get; set; }
/// <inheritdoc />
public bool UpdateActive { get; set; }
public bool UpdateActive {
get => timer.Active;
set { return; }
}
/// <inheritdoc />
public void Update(UpdateContext context)
{
if (!timer.Running) return;
ParticleContext particleContext = new ParticleContext
{
Timer = timer

View file

@ -15,6 +15,21 @@ namespace SM.Base.Textures
/// </summary>
public class Texture : TextureBase
{
static HintMode _hintMode;
/// <summary>
/// Defines the texture quailty.
/// <para>It won't change already compiled textures!</para>
/// </summary>
public static HintMode TextureQuality
{
get => _hintMode;
set
{
_hintMode = value;
GL.Hint(HintTarget.TextureCompressionHint, value);
}
}
private int? _height;
private int? _width;
@ -116,7 +131,7 @@ namespace SM.Base.Textures
var transparenz = map.PixelFormat == PixelFormat.Format32bppArgb;
GL.TexImage2D(TextureTarget.Texture2D, 0,
transparenz ? PixelInternalFormat.Rgba : PixelInternalFormat.Rgb,
transparenz ? PixelInternalFormat.CompressedRgba : PixelInternalFormat.CompressedRgb,
data.Width, data.Height, 0,
transparenz ? OpenTK.Graphics.OpenGL4.PixelFormat.Bgra : OpenTK.Graphics.OpenGL4.PixelFormat.Bgr,
PixelType.UnsignedByte, data.Scan0);

View file

@ -66,7 +66,7 @@ namespace SM.OGL
/// <summary>
/// Checks for OpenGL errors, while allowing to put stuff before and behind it.
/// </summary>
/// <param name="formating"></param>
/// <param name="formating">To decided where to put the error code into, just enter "%code%" to that specific place.</param>
/// <returns></returns>
public static bool CheckGLErrors(string formating)
{

View file

@ -97,7 +97,7 @@ namespace SM.OGL.Shaders
foreach (ShaderFile file in Fragment)
GL.DetachShader(shader, file);
GLDebugging.CheckGLErrors($"Error at detaching '{shader.GetType()}'");
GLDebugging.CheckGLErrors($"Error at detaching '{shader.GetType()}': %code%");
}
}
}

View file

@ -14,6 +14,11 @@ namespace SM2D.Drawing
/// <inheritdoc />
public override Func<Vector2, ParticleContext, Vector2> MovementCalculation { get; set; } = ParticleMovement.Default2D;
/// <summary>
/// The direction the particles should travel.
/// </summary>
public Vector2? Direction;
/// <inheritdoc />
public DrawParticles(TimeSpan duration) : base(duration)
{
@ -25,7 +30,7 @@ namespace SM2D.Drawing
return new ParticleStruct<Vector2>()
{
Matrix = Matrix4.CreateScale(1),
Direction = new Vector2(Randomize.GetFloat(-1, 1), Randomize.GetFloat(-1, 1)),
Direction = Direction.GetValueOrDefault(new Vector2(Randomize.GetFloat(-1, 1), Randomize.GetFloat(-1, 1))),
Speed = Randomize.GetFloat(MaxSpeed)
};
}

View file

@ -1,19 +1,13 @@
using System;
using System.Diagnostics;
using OpenTK;
using OpenTK.Graphics;
using OpenTK.Input;
using SM.Base;
using SM.Base.Controls;
using SM.Base.Time;
using SM.Base.Window;
using SM2D;
using SM2D.Controls;
using SM2D.Drawing;
using SM2D.Object;
using SM2D.Pipelines;
using SM2D.Scene;
using Font = SM.Base.Drawing.Text.Font;
using Vector2 = OpenTK.Vector2;
namespace SM_TEST
{
@ -22,6 +16,7 @@ namespace SM_TEST
static Scene scene;
private static GLWindow window;
private static PolyLine line;
private static DrawParticles particles;
static void Main(string[] args)
{
window = new GLWindow(1280, 720, "0ms", WindowFlags.Window, VSyncMode.Off);
@ -30,14 +25,13 @@ namespace SM_TEST
window.SetScene(scene = new Scene());
line = new PolyLine(new Vector2[] { Vector2.Zero, Vector2.One }, PolyLineType.Connected);
var display = new DrawObject2D()
particles = new DrawParticles(TimeSpan.FromSeconds(5))
{
Mesh = line
MaxSpeed = 50,
};
display.Transform.Size.Set(1);
scene.Objects.Add(display);
particles.Transform.Size.Set(20);
scene.Objects.Add(particles);
window.UpdateFrame += WindowOnUpdateFrame;
window.RenderFrame += Window_RenderFrame;
window.Run();
@ -52,13 +46,8 @@ namespace SM_TEST
private static void WindowOnUpdateFrame(object sender, FrameEventArgs e)
{
if (SM.Base.Controls.Mouse.LeftClick)
line.Vertex.Add(Vector3.Zero);
line.Vertex[1] = new Vector3(Mouse2D.InWorld(window.ViewportCamera as Camera));
line.Update();
if (Mouse.LeftClick)
particles.Trigger();
}
}
}