LWJGL アプリケーションにシェーダーを実装しようとしています。シェーダーをアタッチしようとすると、「無効な Enum」例外が発生します。オーケー、コードの話もっと....
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 Enum エラーとは何を意味するのでしょうか? GL Type を間違って使用したということですか?