В моем методе createShaderProgram после glLinkProgram (pID) и glValidateProgram (pID) i есть простая проверка ошибок.Ошибка LWJGL Opengl Shader
int errorCheckValue = glGetError();
if(errorCheckValue != GL_NO_ERROR)
{
System.err.println("Could not create shaders " + GLU.gluErrorString(errorCheckValue));
//System.exit(-1);
}
В этом покое кода выдается сообщение об ошибке -> Не удалось создать шейдеры Неверная операция. Поскольку я прокомментировал System.exit (-1), все работает нормально, но я не знаю, почему эта ошибка возникает. Есть ли какой-либо способ кода для обработки ошибок, что более специфично в отношении ошибки - что-то более конкретное, чем просто неправильная операция?
EDIT: Вот остальная часть кода
private static int createShader(String source, int shaderType)
{
int shaderID = 0;
shaderID = glCreateShader(shaderType);
glShaderSource(shaderID, source);
glCompileShader(shaderID);
if(glGetShaderi(shaderID, GL_COMPILE_STATUS) == GL_FALSE)
{
System.err.println("Shader failed to compile!");
System.err.println(glGetShaderInfoLog(shaderID, 2048));
System.exit(-1);
}
return shaderID;
}
public static int[] createShaderProgram(String vertFilename, String fragFilename, Attribute locations[])
{
int pID, vertID, fragID = 0;
pID = glCreateProgram();
vertID = createShader(FileUtils.loadFileAsString(vertFilename), GL_VERTEX_SHADER);
fragID = createShader(FileUtils.loadFileAsString(fragFilename), GL_FRAGMENT_SHADER);
glAttachShader(pID, vertID);
glAttachShader(pID, fragID);
for(int i = 0; i < locations.length; i++){locations[i].bindAttribute(pID);}
glLinkProgram(pID);
glValidateProgram(pID);
int errorCheckValue = glGetError();
if(errorCheckValue != GL_NO_ERROR)
{
System.err.println("Could not create shaders " + GLU.gluErrorString(errorCheckValue));
//System.exit(-1);
}
int[] result = new int[] {pID, vertID, fragID};
return result;
}
Hi javac. Спасибо за Ваш ответ. Он всегда отвечает на мой вопрос, но, к сожалению, не разрешает мою проблему. Эти функции не запускают никаких ошибок, но функция статуса компиляции срабатывает. Неверная ошибка работы. Но я собираюсь принять ваш ответ, потому что снова он отвечает на мой вопрос. – Bogdan