我正在尝试在 LWJGL 应用程序中实现着色器。如果我尝试附加着色器,则会出现“无效枚举”异常。好吧,代码说话更多......
private void attach(int progID) {
GL20.glAttachShader(progID, vertShaderID);
GL20.glAttachShader(progID, fragShaderID);
System.out.println("Tester: " + GLU.gluErrorString(GL11.glGetError()));
GL20.glLinkProgram(progID);
System.out.println("Tester: " + GLU.gluErrorString(GL11.glGetError()));
if(GL20.glGetShader(progID, GL20.GL_LINK_STATUS) == GL11.GL_FALSE) {
System.err.println("error during linking shaders! " + GL20.glGetProgramInfoLog(progID, 1000) + " " + GLU.gluErrorString(GL11.glGetError()));
}
GL20.glValidateProgram(progID);
System.out.println(GL20.glGetProgramInfoLog(progID, 1000));
System.out.println("Tester: " + GLU.gluErrorString(GL11.glGetError()));
System.out.println(GL20.glGetProgramInfoLog(progID, 1000));
if(GL20.glGetShader(progID, GL20.GL_VALIDATE_STATUS) == GL11.GL_FALSE) {
System.err.println("error during validating shaders! " + GL20.glGetProgramInfoLog(progID, 1000) + " " + GLU.gluErrorString(GL11.glGetError()));
}
}
产生输出:
测试人员:没有错误
测试人员:没有错误
验证成功
测试人员:无效的枚举
验证成功
所以我遵循这个函数的异常来源。这个验证功能是什么?如果程序日志是“验证成功”,是什么产生了这个错误?还是从我在应用程序中使用 GL 函数的任何其他情况调用该错误?Invlaid 枚举错误是什么意思?这意味着我使用了错误的 GL 类型?