60 lines
1.0 KiB
C#
60 lines
1.0 KiB
C#
|
using System;
|
|||
|
using System.IO;
|
|||
|
|
|||
|
using OpenTK.Graphics.OpenGL;
|
|||
|
|
|||
|
namespace nhengine
|
|||
|
{
|
|||
|
public class Shader
|
|||
|
{
|
|||
|
private int id;
|
|||
|
|
|||
|
private ShaderType shaderType;
|
|||
|
private String source;
|
|||
|
|
|||
|
public Shader(ShaderType shaderType, String source)
|
|||
|
{
|
|||
|
this.id = GL.CreateShader(shaderType);
|
|||
|
|
|||
|
this.shaderType = shaderType;
|
|||
|
this.source = source;
|
|||
|
|
|||
|
compile();
|
|||
|
}
|
|||
|
|
|||
|
public int ID
|
|||
|
{
|
|||
|
get { return this.id; }
|
|||
|
}
|
|||
|
|
|||
|
public Shader(ShaderType shaderType, FileStream file)
|
|||
|
{
|
|||
|
this.id = GL.CreateShader(shaderType);
|
|||
|
this.shaderType = shaderType;
|
|||
|
|
|||
|
StreamReader sr = new StreamReader(file);
|
|||
|
this.source = sr.ReadToEnd();
|
|||
|
|
|||
|
|
|||
|
compile();
|
|||
|
}
|
|||
|
|
|||
|
private void compile()
|
|||
|
{
|
|||
|
GL.ShaderSource(this.id, source);
|
|||
|
GL.CompileShader(this.id);
|
|||
|
|
|||
|
string msg = GL.GetShaderInfoLog((int)this.id);
|
|||
|
|
|||
|
Console.WriteLine("Supported Shader Version: {0}", GL.GetString(StringName.ShadingLanguageVersion));
|
|||
|
Console.WriteLine("Shader Compiled: {0}", msg);
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
public ShaderType ShaderType
|
|||
|
{
|
|||
|
get { return this.shaderType; }
|
|||
|
}
|
|||
|
}
|
|||
|
}
|