Cleaned up code and added some parameter checks.

Removed some unused code fragments from older plans.
This commit is contained in:
Harrison Deng 2020-05-29 00:00:39 -05:00
parent 51cfc84cc7
commit 5e85eb5de1
8 changed files with 12 additions and 7 deletions

View File

@ -4,7 +4,6 @@ namespace SlatedGameToolkit.Framework.Exceptions
{
public class OpenGLException : Exception {
public OpenGLException() : base() {
}
public OpenGLException(string message) : base(message) {

View File

@ -23,4 +23,5 @@ namespace SlatedGameToolkit.Framework.Graphics.OpenGL
internal delegate void GLDeleteProgramPipelines(uint size, UIntPtr[] pipelines);
internal delegate void GLBindProgramPipeline(UIntPtr pipeline);
internal delegate void GLUseProgramStages(UIntPtr pipeline, GLEnums bitField, UIntPtr program);
internal delegate uint GLGetError();
}

View File

@ -19,7 +19,6 @@ namespace SlatedGameToolkit.Framework.Graphics.OpenGL.Programs
public GLProgram(bool separable = true) {
this.context = WindowContextsManager.CurrentWindowContext();
context.MakeCurrent();
createProgram = Marshal.GetDelegateForFunctionPointer<GLCreateProgram>(SDL.SDL_GL_GetProcAddress("glCreateProgram"));
if (createProgram == null) throw new FrameworkSDLException();
deleteProgram = Marshal.GetDelegateForFunctionPointer<GLDeleteProgram>(SDL.SDL_GL_GetProcAddress("glDeleteProgram"));
@ -39,7 +38,7 @@ namespace SlatedGameToolkit.Framework.Graphics.OpenGL.Programs
}
}
public void Use() {
public virtual void Use() {
useProgram(handle);
}

View File

@ -13,7 +13,8 @@ namespace SlatedGameToolkit.Framework.Graphics.OpenGL.Programs
private readonly GLAttachShader attachShader;
private readonly GLDetachShader detachShader;
private GLBindAttribLocation bindAttribLocation;
public GLShaderProgram(WindowContext context, bool separable = true, params GLShader[] shaders) : base(separable) {
public GLShaderProgram(bool separable = true, params GLShader[] shaders) : base(separable) {
if (shaders.Length == 0) throw new ArgumentException("Requires at least one shader for shader program.");
this.shaders = shaders;
attachShader = Marshal.GetDelegateForFunctionPointer<GLAttachShader>(SDL.SDL_GL_GetProcAddress("glAttachShader"));
if (attachShader == null) throw new FrameworkSDLException();

View File

@ -7,7 +7,7 @@ using SlatedGameToolkit.Framework.Graphics.Window;
namespace SlatedGameToolkit.Framework.Graphics.OpenGL.Shaders
{
public class GLFragmentShader : GLShader {
public GLFragmentShader(WindowContext context, string shader) : base() {
public GLFragmentShader(string shader) : base() {
Handle = createShader(GLEnums.GL_FRAGMENT_SHADER);
shaderSource(Handle, 1, shader, null);
compileShader(Handle);

View File

@ -7,7 +7,7 @@ using SlatedGameToolkit.Framework.Graphics.Window;
namespace SlatedGameToolkit.Framework.Graphics.OpenGL.Shaders
{
public class GLVertexShader : GLShader {
public GLVertexShader(WindowContext context, string shader) : base() {
public GLVertexShader(string shader) : base() {
Handle = createShader(GLEnums.GL_VERTEX_SHADER);
shaderSource(Handle, 1, shader, null);
compileShader(Handle);

View File

@ -25,6 +25,10 @@ namespace SlatedGameToolkit.Framework.StateSystem
/// <param name="initialState">The name of the initial state.</param>
/// <param name="states">The initial set of game states to be added.</param>
internal Manager(IState initialState) {
backgroundColour.r = 0.5f;
backgroundColour.g = 0.5f;
backgroundColour.b = 0.5f;
if (initialState == null) throw new ArgumentNullException("initialState");
thread = Thread.CurrentThread;
this.states = new Dictionary<string, IState>();

View File

@ -1,6 +1,6 @@
using System;
using SlatedGameToolkit.Framework;
using SlatedGameToolkit.Framework.Graphics.OpenGL.Programs;
using SlatedGameToolkit.Framework.Graphics.OpenGL.Shaders;
using SlatedGameToolkit.Framework.Graphics.Window;
using SlatedGameToolkit.Framework.StateSystem;
using SlatedGameToolkit.Framework.StateSystem.States;
@ -37,6 +37,7 @@ namespace SlatedGameToolkit.Tools.Utilities.GraphicalPlayground
public void Initialize(Manager manager)
{
window = new WindowContext("SlatedGameToolkit Playground");
shader = new GLShaderProgram();
window.RaiseToTop();
}