private ProgramData loadProgram(String vertexShaderFilename, String fragmentShaderFilename) {
    ArrayList<Integer> shaderList = new ArrayList<>();
    shaderList.add(Framework.loadShader(GL_VERTEX_SHADER, vertexShaderFilename));
    shaderList.add(Framework.loadShader(GL_FRAGMENT_SHADER, fragmentShaderFilename));

    ProgramData data = new ProgramData();
    data.theProgram = Framework.createProgram(shaderList);
    data.cameraToClipMatrixUnif = glGetUniformLocation(data.theProgram, "cameraToClipMatrix");

    return data;
  }