budnhead/ShaderProgram.cs

56 lines
1.2 KiB
C#

using System;
using System.IO;
using OpenTK.Graphics.OpenGL;
namespace nhengine
{
public class ShaderProgram
{
Shader vertexShader;
Shader fragmentShader;
int id;
public ShaderProgram(Shader vertexShader, Shader fragmentShader)
{
init(vertexShader, fragmentShader);
}
public ShaderProgram(String vertexShader, String fragmentShader)
{
init(
new Shader(ShaderType.VertexShader, vertexShader),
new Shader(ShaderType.FragmentShader, fragmentShader)
);
}
public ShaderProgram(Stream vertexShader, Stream fragmentShader)
{
init(
new Shader(ShaderType.VertexShader, new StreamReader(vertexShader).ReadToEnd()),
new Shader(ShaderType.FragmentShader, new StreamReader(fragmentShader).ReadToEnd())
);
}
private void init(Shader vertexShader, Shader fragmentShader){
this.vertexShader = vertexShader;
this.fragmentShader = fragmentShader;
this.id = GL.CreateProgram();
GL.AttachShader(this.id, vertexShader.ID);
GL.AttachShader(this.id, fragmentShader.ID);
GL.LinkProgram(this.id);
Console.WriteLine("Shader Program Result: {0}", GL.GetProgramInfoLog(this.id));
}
public int ID
{
get { return this.id; }
}
}
}