Example #1
0
 /// <summary>
 /// Links a vertex shader and a fragment shader to this program.
 /// </summary>
 /// <param name="vShader">The VertexShader.</param>
 /// <param name="fShader">The FragmentShader.</param>
 public void Link(VertexShader vShader, FragmentShader fShader)
 {
     OpenGLInterops.AttachShader(Id, vShader.Id);
     OpenGLInterops.AttachShader(Id, fShader.Id);
     OpenGLInterops.BindFragDataLocation(Id, 0, "outColor");
     OpenGLInterops.LinkProgram(Id);
 }
Example #2
0
        /// <summary>
        /// Sets an uniform.
        /// </summary>
        /// <param name="name">The Name.</param>
        /// <param name="data">The Data.</param>
        public void SetUniform(string name, params float[] data)
        {
            int propertyLoc = OpenGLInterops.GetUniformLocation(Id, name);

            switch (data.Length)
            {
            case 1:
                OpenGLInterops.Uniform1(propertyLoc, data[0]);
                break;

            case 2:
                OpenGLInterops.Uniform2(propertyLoc, data[0], data[1]);
                break;

            case 3:
                OpenGLInterops.Uniform3(propertyLoc, data[0], data[1], data[2]);
                break;

            case 4:
                OpenGLInterops.Uniform4(propertyLoc, data[0], data[1], data[2], data[3]);
                break;

            default:
                throw new InvalidOperationException("Invalid argument length.");
            }
        }
Example #3
0
 /// <summary>
 /// Deletes the shader program.
 /// </summary>
 public void Delete()
 {
     try
     {
         OpenGLInterops.DeleteProgram(Id);
     }
     catch
     {
         LogManager.GetClassLogger().Warn("Unable to dispose.");
     }
 }
Example #4
0
 /// <summary>
 /// Deletes the shader.
 /// </summary>
 public void Delete()
 {
     OpenGLInterops.DeleteShader(Id);
 }
Example #5
0
 /// <summary>
 /// Compiles the shader.
 /// </summary>
 /// <param name="sourceCode">The SourceCode.</param>
 public void Compile(string sourceCode)
 {
     OpenGLInterops.ShaderSource(Id, sourceCode);
     OpenGLInterops.CompileShader(Id);
 }
Example #6
0
 /// <summary>
 /// Initializes a new VertexShader class.
 /// </summary>
 public VertexShader()
 {
     Id = OpenGLInterops.CreateShader(OpenGLInterops.GL_VERTEX_SHADER);
 }
Example #7
0
 /// <summary>
 /// Initializes a new FragmentShader class.
 /// </summary>
 public FragmentShader()
 {
     Id = OpenGLInterops.CreateShader(OpenGLInterops.GL_FRAGMENT_SHADER);
 }
Example #8
0
        /// <summary>
        /// Sets an Uniform matrix.
        /// </summary>
        /// <param name="name">The Name.</param>
        /// <param name="data">The Data.</param>
        public void SetUniformMatrix(string name, float[] data)
        {
            int propertyLoc = OpenGLInterops.GetUniformLocation(Id, name);

            OpenGLInterops.UniformMatrix4(propertyLoc, 1, false, data);
        }
Example #9
0
 /// <summary>
 /// Initializes a new ShaderProgram class.
 /// </summary>
 public ShaderProgram()
 {
     Id = OpenGLInterops.CreateProgram();
 }
Example #10
0
 /// <summary>
 /// Unbinds the shader program.
 /// </summary>
 public void Unbind()
 {
     OpenGLInterops.UseProgram(0);
 }
Example #11
0
 /// <summary>
 /// Binds the shader program.
 /// </summary>
 public void Bind()
 {
     OpenGLInterops.UseProgram(Id);
 }
Example #12
0
 /// <summary>
 /// Gets the attribute location.
 /// </summary>
 /// <param name="name">The Name.</param>
 /// <returns>UInt.</returns>
 public uint GetAttribLocation(string name)
 {
     return((uint)OpenGLInterops.GetAttribLocation(Id, name));
 }