From 7b94f02f55bee062ca46ea49da1aedef437da749 Mon Sep 17 00:00:00 2001 From: miku-666 <74728189+NessieHax@users.noreply.github.com> Date: Wed, 31 Jan 2024 19:59:37 +0100 Subject: [PATCH] Shader - Add link and validate functions --- PCK-Studio/Rendering/Shader.cs | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/PCK-Studio/Rendering/Shader.cs b/PCK-Studio/Rendering/Shader.cs index e8b526fa..906924cb 100644 --- a/PCK-Studio/Rendering/Shader.cs +++ b/PCK-Studio/Rendering/Shader.cs @@ -103,6 +103,22 @@ namespace PckStudio.Rendering ); } + private bool Link() + { + GL.LinkProgram(_programId); + GL.GetProgram(_programId, GetProgramParameterName.LinkStatus, out int status); + return status != 0; + } + + public bool Validate() + { + GL.ValidateProgram(_programId); + GL.GetProgram(_programId, GetProgramParameterName.ValidateStatus, out int status); + if (status == 0) + Debug.WriteLine(GL.GetProgramInfoLog(_programId), category: nameof(Shader)); + return status != 0; + } + public static Shader Create(params ShaderSource[] shaderSources) { int programId = GL.CreateProgram(); @@ -115,16 +131,15 @@ namespace PckStudio.Rendering GL.AttachShader(programId, shaderId); shaderIds.Add(shaderId); } - GL.LinkProgram(programId); - GL.ValidateProgram(programId); - - Debug.WriteLine(GL.GetProgramInfoLog(programId), category: nameof(Shader)); + var shader = new Shader(programId); + shader.Link(); + foreach (var shaderId in shaderIds) { GL.DeleteShader(shaderId); } - return new Shader(programId); + return shader; } }