Ejemplo n.º 1
0
  @Override
  public void display() {
    gl.glClear(GL3.GL_COLOR_BUFFER_BIT | GL3.GL_DEPTH_BUFFER_BIT);

    // Calculate the model matrix ...
    modelMatrix.loadIdentity();
    // ... by rotating the cube.
    modelMatrix.rotate(Maths.degToRad(15), new float[] {1, 0, 0});
    modelMatrix.rotate(Maths.degToRad(angle), new float[] {0, 1, 0});

    // MV = V * M
    modelViewMatrix.multiply(viewMatrix, modelMatrix);
    modelViewMatrix.bind();

    // Again, extract the normal matrix.
    // Remember, so far the model view matrix (rotation part) is orthogonal.
    normalMatrix.extract(modelViewMatrix);
    normalMatrix.bind();

    // Extract the rotation part of the view matrix.
    inverseViewMatrix.extract(viewMatrix);

    // Pass this matrix to the shader with the transpose flag.
    // As the view matrix is orthogonal, the transposed is the inverse view matrix.
    inverseViewMatrix.bind(true);

    cubeMap.bind();

    model.bind();
    model.draw(GL3.GL_TRIANGLES);

    gl.glFlush();

    update();
  }