private boolean initProgram(GL4 gl4) { boolean validated = true; // Create program if (validated) { ShaderCode vertShaderCode = ShaderCode.create( gl4, GL_VERTEX_SHADER, this.getClass(), SHADERS_ROOT, null, SHADERS_SOURCE, "vert", null, true); ShaderCode fragShaderCode = ShaderCode.create( gl4, GL_FRAGMENT_SHADER, this.getClass(), SHADERS_ROOT, null, SHADERS_SOURCE, "frag", null, true); ShaderProgram shaderProgram = new ShaderProgram(); shaderProgram.init(gl4); programName[Program.VERTEX] = shaderProgram.program(); gl4.glProgramParameteri(programName[Program.VERTEX], GL_PROGRAM_SEPARABLE, GL_TRUE); shaderProgram.add(vertShaderCode); shaderProgram.link(gl4, System.out); shaderProgram = new ShaderProgram(); shaderProgram.init(gl4); programName[Program.FRAGMENT] = shaderProgram.program(); gl4.glProgramParameteri(programName[Program.FRAGMENT], GL_PROGRAM_SEPARABLE, GL_TRUE); shaderProgram.add(fragShaderCode); shaderProgram.link(gl4, System.out); } if (validated) { gl4.glGenProgramPipelines(1, pipelineName); gl4.glUseProgramStages( pipelineName.get(0), GL_VERTEX_SHADER_BIT, programName[Program.VERTEX]); gl4.glUseProgramStages( pipelineName.get(0), GL_FRAGMENT_SHADER_BIT, programName[Program.FRAGMENT]); } return validated & checkError(gl4, "initProgram"); }