56 lines
1.2 KiB
C#
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; }
|
|||
|
}
|
|||
|
}
|
|||
|
}
|