Shader - Add link and validate functions

This commit is contained in:
miku-666
2024-01-31 19:59:37 +01:00
parent 9bc448e317
commit 7b94f02f55

View File

@@ -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;
}
}