Hello, I was wondering if someone could help fix a fatal error I receive with my shader program. It is a run-time error that is thrown by the glValidateProgram method. Here is my code:
public class ShaderProgram
{
int objectID;
int vertexShaderID;
int fragmentShaderID;
public void initialise()
{
loadShader("shaders/vertex.shader", GL_VERTEX_SHADER);
loadShader("shaders/fragment.shader", GL_FRAGMENT_SHADER);
objectID = glCreateProgram();
glAttachShader(objectID, vertexShaderID);
glAttachShader(objectID, fragmentShaderID);
glLinkProgram(objectID);
glBindAttribLocation(objectID, 0, "in_Position");
glBindAttribLocation(objectID, 1, "in_Color");
glBindAttribLocation(objectID, 2, "in_TextureCoord");
glValidateProgram(objectID);
}
public void terminate()
{
glUseProgram(0);
glDetachShader(objectID, vertexShaderID);
glDetachShader(objectID, fragmentShaderID);
glDeleteShader(vertexShaderID);
glDeleteShader(fragmentShaderID);
glDeleteProgram(objectID);
}
public void select()
{
glUseProgram(objectID);
}
public void deselect()
{
glUseProgram(0);
}
public int loadShader(String fileLocation, int type)
{
StringBuilder stringBuilder = new StringBuilder();
int shaderID = 0;
try
{
BufferedReader bufferedReader = new BufferedReader(new FileReader(fileLocation));
String line;
while((line = bufferedReader.readLine()) != null)
{
stringBuilder.append(line);
stringBuilder.append("\n");
}
bufferedReader.close();
}
catch(IOException exception)
{
exception.printStackTrace();
}
shaderID = glCreateShader(type);
glShaderSource(shaderID, stringBuilder);
glCompileShader(shaderID);
return shaderID;
}
}