I have been trying to learn OpenTk so that i can easily use OpenGl in c#. My problem now is that when i try to get the location of my two uniforms it returns -1 for both.
Vertex Shader:
#version 440 core
uniform vec3 position
void main(void)
{
gl_Position = position;
}
Fragment Shader:
#version 440 core
uniform vec4 frag_Color;
out vec4 color;
void main(void)
{
color = frag_Color;
}
Code:
GL.BindVertexArray(pointVertexArray);
GL.UseProgram(program);
int a = GL.GetUniformLocation(program, "position");
int b = GL.GetUniformLocation(program, "frag_Color");
Debug.WriteLine(a + ", " + b);
GL.DrawArrays(PrimitiveType.Points, 0, 1);
GL.PointSize(size);
Edit: Here is where i created the program:
public int CreateShader(string path) {
var vertexShader = GL.CreateShader(ShaderType.VertexShader);
GL.ShaderSource(vertexShader, File.ReadAllText(".\\shaders\\" + path + ".vert"));
GL.CompileShader(vertexShader);
var fragmentShader = GL.CreateShader(ShaderType.FragmentShader);
GL.ShaderSource(fragmentShader, File.ReadAllText(".\\shaders\\" + path + ".frag"));
GL.CompileShader(fragmentShader);
var program = GL.CreateProgram();
GL.AttachShader(program, vertexShader);
GL.AttachShader(program, fragmentShader);
GL.LinkProgram(program);
GL.DetachShader(program, vertexShader);
GL.DetachShader(program, fragmentShader);
GL.DeleteShader(vertexShader);
GL.DeleteShader(fragmentShader);
programs.Add(program);
return program;
}