0
Я пытаюсь загрузить VBO с проекцией, следуя руководству «Квадрат с проекцией» на веб-сайте LWJGL.LWJGL не удалось скомпилировать шейдеры
Вот моя функция загрузки шейдеров.
private int loadShader(String filename, int type) {
StringBuilder shaderSource = new StringBuilder();
int shaderID = 0;
try {
try (BufferedReader reader = new BufferedReader(new FileReader(filename))) {
String line;
while ((line = reader.readLine()) != null) {
shaderSource.append(line).append("\n");
}
}
} catch (IOException e) {
System.err.println("Could not read file.");
e.printStackTrace();
System.exit(-1);
}
shaderID = GL20.glCreateShader(type);
GL20.glShaderSource(shaderID, shaderSource);
GL20.glCompileShader(shaderID);
if (GL20.glGetShader(shaderID, GL20.GL_COMPILE_STATUS) == GL11.GL_FALSE) {
System.err.println("Could not compile shader.");
System.exit(-1);
}
this.exitOnGLError("loadShader");
return shaderID;
}
При запуске программы эта ошибка возникает.
if (GL20.glGetShader(shaderID, GL20.GL_COMPILE_STATUS) == GL11.GL_FALSE) {
System.err.println("Could not compile shader.");
System.exit(-1);
}
Вот мой код шейдера:
Vertex:
#version 150 core
uniform mat4 projectionMatrix;
uniform mat4 viewMatrix;
uniform mat4 modelMatrix;
in vec4 in_Position;
in vec4 in_Color;
in vec2 in_TextureCoord;
out vec4 pass_Color;
out vec2 pass_TextureCoord;
void main(void) {
gl_Position = in_Position;
// Override gl_Position with our new calculated position
gl_Position = projectionMatrix * viewMatrix * modelMatrix * in_Position;
pass_Color = in_Color;
pass_TextureCoord = in_TextureCoord;
}
Фрагмент:
#version 150 core
uniform sampler2D texture_diffuse;
in vec4 pass_Color;
in vec2 pass_TextureCoord;
out vec4 out_Color;
void main(void) {
out_Color = pass_Color;
// Override out_Color with our texture pixel
out_Color = texture2D(texture_diffuse, pass_TextureCoord);
}
Спасибо за вашу помощь.
Ну, если шейдер не компилируется, вы должны проверить журнал компиляции шейдеров. Кроме того, вы должны опубликовать шейдерный код. – derhass
Как я могу получить журнал компиляции шейдеров? – irishpatrick
Для этого используйте ['glGetShaderInfoLog()'] (https://www.opengl.org/sdk/docs/man/html/glGetShaderInfoLog.xhtml). – derhass