private void buildProgram(GL2 gl){
        int[] success = new int[1];
        programID = gl.glCreateProgram();
        gl.glAttachShader(programID, vertexID);
        gl.glAttachShader(programID, fragmentID);

        gl.glLinkProgram(programID);
        gl.glGetProgramiv(programID, GL2.GL_LINK_STATUS, success,0);
        if(success[0] == 0)
        {
            IntBuffer intValue = IntBuffer.allocate(1);
            gl.glGetProgramiv(programID, GL2.GL_OBJECT_INFO_LOG_LENGTH_ARB, intValue);

            int lengthWithNull = intValue.get();

            if (lengthWithNull <= 1) {
                return;
            }

            java.nio.ByteBuffer infoLog = java.nio.ByteBuffer.allocate(lengthWithNull);

            intValue.flip();
            gl.glGetProgramInfoLog(programID, lengthWithNull, intValue, infoLog);

            int actualLength = intValue.get();

            byte[] infoBytes = new byte[actualLength];
            infoLog.get(infoBytes);
            System.out.println("GLSL Validation >> " + new String(infoBytes));
        }

        gl.glValidateProgram(programID);
    }