Шейдеры не компилируются, выходит пустая ошибка

Вот код vertex шейдера:

#version 430 core

layout (location = 0) in vec3 attrib_Position;
layout (location = 1) in vec4 attrib_Colour;

out vec4 colour;
out vec3 position;

void main()
{
    position = attrib_Position;
    colour   = attrib_Colour;
    gl_Position = vec4(attrib_Position, 1.0f);
}

Код fragment шейдера:

#version 430 core

layout (location = 0) out vec4 out_Colour;

in vec3 position;
in vec4 colour;

void main()
{
    out_Colour = colour;
}

Вот код Shader.java:

public int id;
public void error303(String l) {
    JFrame frame = new JFrame();
    JOptionPane.showMessageDialog(frame, "[Error 303]: Failed to compile Vertex Shader or Fragment. : " + l, "Error 303", JOptionPane.ERROR_MESSAGE);
}
public void error304(String l) {
    JFrame frame = new JFrame();
    JOptionPane.showMessageDialog(frame, "[Error 304]: Cannot link shader program! : " + l, "Error 304", JOptionPane.ERROR_MESSAGE);
}

public Shader(String vsSrc, String fsSrc) {
    Map<Integer, String> shaderSrc = new HashMap<Integer, String>(2);
    shaderSrc.put(1, this.readfile(vsSrc));
    shaderSrc.put(2, this.readfile(fsSrc));
    this.compile(shaderSrc);
}
public void compile(Map<Integer, String> shaderSrc) {
    int prog = glCreateBuffers();
    List<Integer> shaderIds = new ArrayList<Integer>();
    int shaderididxs = 1;
    
    for(int i = 0; i < shaderSrc.size(); i++) {
        int type = i == 0 ? GL_VERTEX_SHADER : i == 1 ? GL_FRAGMENT_SHADER : -1;
        String source = shaderSrc.get(shaderididxs);
        
        int shader = glCreateShader(type);
        glShaderSource(shader, source);
        glCompileShader(shader);
        
        int isCompiled = 0;
        isCompiled = glGetShaderi(shader, GL_COMPILE_STATUS);
        if(isCompiled == GL_FALSE) {
            int maxLength = 0;
            maxLength = glGetShaderi(shader, GL_INFO_LOG_LENGTH);
            
            String info_log = "";
            info_log = glGetShaderInfoLog(shader, maxLength);
            glDeleteShader(shader);
            
            error303(info_log);
            System.out.println(info_log);
            System.exit(-1);
        }
        glAttachShader(prog, shader);
        shaderididxs++;
    }
    glLinkProgram(prog);
    
    int isLinked = 0;
    isLinked = glGetProgrami(prog, GL_LINK_STATUS);
    if(isLinked == GL_FALSE) {      
        int maxLength = 0;
        maxLength = glGetProgrami(prog, GL_INFO_LOG_LENGTH);
        
        String info_log = "";
        info_log = glGetProgramInfoLog(prog, maxLength);
        
        for(int shaderId : shaderIds) {
            glDetachShader(prog, shaderId);
        }
        for(int shaderId : shaderIds) {
            glDeleteShader(shaderId);
        }
            
        error304(info_log);
        System.exit(-1);
    }
    
    for(int shaderId : shaderIds) {
        glDetachShader(prog, shaderId);
    }
    
    this.id = prog;
}

public String readfile(String file) {
    boolean appendSlashes = false;
    boolean returnInOneLine = false;
    StringBuilder shaderSource = new StringBuilder();
    try {
        InputStream in = getResourceAsStream(file);
        BufferedReader reader = new BufferedReader(new InputStreamReader(in));
        String line;
        while((line = reader.readLine())!=null) {
            shaderSource.append(line);
            
            if(appendSlashes)    shaderSource.append("//");
            if(!returnInOneLine) shaderSource.append("\n");
        }
        reader.close();
        
        return shaderSource.toString();
    }
    catch(IOException e) {
        System.out.println("[Error 305]: This file '" + file + "' cound be read.");
        e.printStackTrace();
        Runtime.getRuntime().exit(-1);
    }
    
    return "[Error 305]: This file '" + file + "' cound be read.";
}
public void bind() {
    glUseProgram(this.id);
}
public void unbind() {
    glUseProgram(0);
}

}

Когда я компилирую шейдеры, у меня всплывает диалоговое окно с пустой ошибкой:

public void error304(String l) { JFrame frame = new JFrame(); JOptionPane.showMessageDialog(frame, "[Error 304]: Cannot link shader program! : " + l, "Error 304", JOptionPane.ERROR_MESSAGE); }

Вот это пустая ошибка

Подскажите, что делать, умоляю!!


Ответы (0 шт):