Example #1
0
  // Creates program object, attaches shaders, and links into pipeline
  protected int createProgram(String vertexSource, String fragmentSource) {
    // Load the vertex and fragment shaders
    int vertexShader = loadShader(GL_VERTEX_SHADER, vertexSource);
    int fragmentShader = loadShader(GL_FRAGMENT_SHADER, fragmentSource);
    // Create the program object
    int program = glCreateProgram();
    if (vertexShader == 0 || fragmentShader == 0 || program == 0) return 0;

    if (program != 0) {
      glAttachShader(program, vertexShader);
      ctx.checkGLError("createProgram Attaching vertex shader");
      glAttachShader(program, fragmentShader);
      ctx.checkGLError("createProgram Attaching fragment shader");
      glLinkProgram(program);

      int linkStatus = glGetProgram(program, GL_LINK_STATUS);
      if (linkStatus != GL_TRUE) {
        log().error("Could not link program: ");
        log().error(glGetProgramInfoLog(program, SHADER_INFO_LOG_LEN));
        glDeleteProgram(program);
        program = 0;
      }
    }
    return program;
  }