Ошибки языка затенения GLSL / OpenGL, Неверные квалификаторы хранения - PullRequest
0 голосов
/ 30 августа 2018

Я получил ошибку при компиляции моего шейдера на языке шейдеров GLSL,

ERROR: 0:4: Invalid storage qualifiers 'attribute' in global 
variablecontext
ERROR: 0:7: Use of undeclared identifier 'gl_Position'
ERROR: 0:7: Use of undeclared identifier 'position'
ERROR: 0:8: Use of undeclared identifier 'position'
ERROR: 0:8: Use of undeclared identifier 'position'

Не удалось скомпилировать шейдер!

Мой код:

#version 120

varying vec3 colour;
attribute vec3 position;

void main(void){
    gl_Position = vec4(position, 1.0);
    colour = vec3(position.x + 0.5, 1.0, position.y + 0.5);
}

Кстати, это вершинный шейдер.

Редактировать: так загружается шейдер

protected void bindAtrribute(int attribute){
    GL20.glBindAttribLocation(programID, attribute, "position");
}

private static int loadShader(String file, int type){
    StringBuilder shaderSource = new StringBuilder();
    try{
        BufferedReader reader = new BufferedReader(new FileReader(file));
        String line;
        while((line = reader.readLine())!=null){
            shaderSource.append(line).append("\n");
        }
        reader.close();
    }catch(IOException e){
        e.printStackTrace();
        System.exit(-1);
    }
    int shaderID = GL20.glCreateShader(type);
    GL20.glShaderSource(shaderID, shaderSource);
    GL20.glCompileShader(shaderID);
    if(GL20.glGetShaderi(shaderID, GL20.GL_COMPILE_STATUS )== GL11.GL_FALSE){
        System.out.println(GL20.glGetShaderInfoLog(shaderID, 500));
        System.err.println("Could not compile shader!");
        System.exit(-1);
    }
    return shaderID;
}

Это не весь класс

...