Package com.bitfire.postprocessing.utils

Source Code of com.bitfire.postprocessing.utils.FullscreenQuad

/*******************************************************************************
* Copyright 2012 bmanuel
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*   http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
******************************************************************************/

package com.bitfire.postprocessing.utils;

import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Mesh;
import com.badlogic.gdx.graphics.Mesh.VertexDataType;
import com.badlogic.gdx.graphics.VertexAttribute;
import com.badlogic.gdx.graphics.VertexAttributes.Usage;
import com.badlogic.gdx.graphics.glutils.ShaderProgram;

/** Encapsulates a fullscreen quad, geometry is aligned to the screen corners.
*
* @author bmanuel */
public class FullscreenQuad {
  private Mesh quad;

  public FullscreenQuad () {
    quad = createFullscreenQuad();
  }

  public void dispose () {
    quad.dispose();
  }

  /** Renders the quad with the specified shader program. */
  public void render (ShaderProgram program) {
    quad.render(program, GL20.GL_TRIANGLE_FAN, 0, 4);
  }

  private Mesh createFullscreenQuad () {
    // vertex coord
    verts[X1] = -1;
    verts[Y1] = -1;

    verts[X2] = 1;
    verts[Y2] = -1;

    verts[X3] = 1;
    verts[Y3] = 1;

    verts[X4] = -1;
    verts[Y4] = 1;

    // tex coords
    verts[U1] = 0f;
    verts[V1] = 0f;

    verts[U2] = 1f;
    verts[V2] = 0f;

    verts[U3] = 1f;
    verts[V3] = 1f;

    verts[U4] = 0f;
    verts[V4] = 1f;

    Mesh tmpMesh = new Mesh(VertexDataType.VertexArray, true, 4, 0, new VertexAttribute(Usage.Position, 2, "a_position"),
      new VertexAttribute(Usage.TextureCoordinates, 2, "a_texCoord0"));

    tmpMesh.setVertices(verts);
    return tmpMesh;
  }

  private static final int VERT_SIZE = 16;
  private static float[] verts = new float[VERT_SIZE];
  private static final int X1 = 0;
  private static final int Y1 = 1;
  private static final int U1 = 2;
  private static final int V1 = 3;
  private static final int X2 = 4;
  private static final int Y2 = 5;
  private static final int U2 = 6;
  private static final int V2 = 7;
  private static final int X3 = 8;
  private static final int Y3 = 9;
  private static final int U3 = 10;
  private static final int V3 = 11;
  private static final int X4 = 12;
  private static final int Y4 = 13;
  private static final int U4 = 14;
  private static final int V4 = 15;
}
TOP

Related Classes of com.bitfire.postprocessing.utils.FullscreenQuad

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.