Example usage for com.badlogic.gdx.graphics.glutils FrameBuffer end

List of usage examples for com.badlogic.gdx.graphics.glutils FrameBuffer end

Introduction

In this page you can find the example usage for com.badlogic.gdx.graphics.glutils FrameBuffer end.

Prototype

public void end() 

Source Link

Document

Unbinds the framebuffer, all drawing will be performed to the normal framebuffer from here on.

Usage

From source file:com.badlogic.gdx.tests.PremultiplyAlpha.java

private void gpuPremultiplyAlpha(String in, String out) {
    Texture texture = new Texture(Gdx.files.absolute(in));
    texture.setFilter(TextureFilter.Nearest, TextureFilter.Nearest);
    FrameBuffer buffer = new FrameBuffer(Format.RGBA8888, texture.getWidth(), texture.getHeight(), false);
    buffer.getColorBufferTexture().setFilter(TextureFilter.Nearest, TextureFilter.Nearest);
    ShaderProgram shader = new ShaderProgram(VERTEX_SHADER, FRAG_SHADER);
    Gdx.app.log("Log", shader.getLog());
    SpriteBatch batch = new SpriteBatch(10);
    batch.getProjectionMatrix().setToOrtho2D(0, 0, texture.getWidth(), texture.getHeight());
    batch.disableBlending();/*w  ww. jav a 2  s .c o  m*/
    batch.setShader(shader);

    //Premultiply
    buffer.begin();
    Gdx.gl.glClearColor(0, 0, 0, 0);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    batch.begin();
    batch.draw(texture, 0, 0);
    batch.end();
    Pixmap pixmap = ScreenUtils.getFrameBufferPixmap(0, 0, texture.getWidth(), texture.getHeight());
    buffer.end();

    //Save
    PixmapIO.writePNG(Gdx.files.absolute(out), pixmap);
    buffer.dispose();
    texture.dispose();
    pixmap.dispose();
    Gdx.app.exit();
}

From source file:com.bladecoder.engine.model.World.java

License:Apache License

public void takeScreenshot(String filename, int w) {

    int h = (int) (w * getSceneCamera().viewportHeight / getSceneCamera().viewportWidth);

    FrameBuffer fbo = new FrameBuffer(Format.RGB565, w, h, false);

    fbo.begin();/*from www .  j a v a 2s. c o m*/
    draw();
    Pixmap pixmap = ScreenUtils.getFrameBufferPixmap(0, 0, w, h);
    fbo.end();

    // Flip the pixmap upside down
    ByteBuffer pixels = pixmap.getPixels();
    int numBytes = w * h * 4;
    byte[] lines = new byte[numBytes];
    int numBytesPerLine = w * 4;
    for (int i = 0; i < h; i++) {
        pixels.position((h - i - 1) * numBytesPerLine);
        pixels.get(lines, i * numBytesPerLine, numBytesPerLine);
    }
    pixels.clear();
    pixels.put(lines);

    PixmapIO.writePNG(EngineAssetManager.getInstance().getUserFile(filename), pixmap);
}

From source file:com.bladecoder.engineeditor.ui.SceneList.java

License:Apache License

private TextureRegion createBgIcon(String atlas, String region) {
    TextureAtlas a = new TextureAtlas(Gdx.files
            .absolute(Ctx.project.getProjectPath() + "/" + Project.ATLASES_PATH + "/1/" + atlas + ".atlas"));
    AtlasRegion r = a.findRegion(region);

    if (r == null) {
        a.dispose();/*from  w w  w  .  j  av a 2  s.co m*/
        return null;
    }

    FrameBuffer fbo = new FrameBuffer(Format.RGBA8888, 200,
            (int) (r.getRegionHeight() * 200f / r.getRegionWidth()), false);

    SpriteBatch fboBatch = new SpriteBatch();
    fboBatch.setColor(Color.WHITE);
    OrthographicCamera camera = new OrthographicCamera();
    camera.setToOrtho(false, fbo.getWidth(), fbo.getHeight());
    fboBatch.setProjectionMatrix(camera.combined);

    Gdx.gl.glDisable(GL20.GL_SCISSOR_TEST);
    fbo.begin();
    fboBatch.begin();
    fboBatch.draw(r, 0, 0, fbo.getWidth(), fbo.getHeight());
    fboBatch.end();

    TextureRegion tex = ScreenUtils.getFrameBufferTexture(0, 0, fbo.getWidth(), fbo.getHeight());
    // tex.flip(false, true);

    fbo.end();
    Gdx.gl.glEnable(GL20.GL_SCISSOR_TEST);

    fbo.dispose();
    a.dispose();
    fboBatch.dispose();

    return tex;
}

From source file:com.cyphercove.lwptools.core.GaussianBlur.java

License:Apache License

/**Disables depth testing. Must re-enable it if 3D API is expecting it in its RenderContext
 *
 */// w  w  w .j  av  a2  s . c  o  m
public void end() {
    FrameBuffer initialTargetBuffer;
    if (useInverseTarget)
        initialTargetBuffer = fboInitialTargetInverted;
    else
        initialTargetBuffer = fboInitialTargetStandard;
    initialTargetBuffer.end();

    if (shouldBlur()) {
        spriteBatch.disableBlending();
        Gdx.gl.glDisable(GL20.GL_DEPTH_TEST);

        //rotate if using the inverse target
        if (useInverseTarget) {
            spriteBatch.setProjectionMatrix(fboToSceneProjectionMatrixRight);
        } else {
            spriteBatch.setProjectionMatrix(fboToSceneProjectionMatrix);
        }
        fboPass1.begin();
        doBlurPass(initialTargetBuffer, false);
        fboPass1.end();
        if (useInverseTarget) { //don't rotate the second pass
            spriteBatch.setProjectionMatrix(fboToSceneProjectionMatrix);
        }
        fboPass2.begin();
        doBlurPass(fboPass1, true);
        fboPass2.end();
    }
}

From source file:com.github.skittishSloth.openSkies.maps.PlanetScreen.java

public PlanetScreen() {
    //        final ElevationParameters elevParams = ElevationParameters.buildEvenRanges();
    //        final ElevationParameters elevParams = ElevationParameters.buildByPercent(75, 5, 15, 5, 5);
    final ElevationParameters elevParams = ElevationParameters.buildByEnumValues();
    final LatitudeParameters latParams = LatitudeParameters.getEvenPercentages();
    final TerrainParameters terrainParams = new TerrainParameters(elevParams, latParams, 10, 9, 9);

    final MapGenerator mg = new MapGenerator(terrainParams);
    tileSize = 1;//from w w w .  java  2 s . c om
    width = Gdx.graphics.getWidth() / tileSize;
    height = Gdx.graphics.getHeight() / tileSize;
    tiles = mg.generateTiles(width, height);
    elevationTexture = mg.generateElevationTexture(tiles, width, height, tileSize);
    rawElevationTexture = mg.generateRawElevationTexture(tiles, width, height, tileSize);
    temperatureTexture = mg.generateTemperatureTexture(tiles, width, height, tileSize);
    rainfallTexture = mg.generateRainfallTexture(tiles, width, height, tileSize);
    mineralTexture = mg.generateMineralsTexture(tiles, width, height, tileSize);
    elevationGrayScaleTexture = mg.generateElevationGrayscaleTexture(tiles, width, height, tileSize);

    batch = new SpriteBatch();

    final Texture latColorTexture = mg.generateLatitudeTexture(tiles, width, height, tileSize);
    final FrameBuffer frameBuffer = new FrameBuffer(Pixmap.Format.RGBA8888, width, height, false);
    final OrthographicCamera camera = new OrthographicCamera();
    camera.setToOrtho(true);
    final Matrix4 oldBatchMatrix = batch.getProjectionMatrix();
    batch.setProjectionMatrix(camera.combined);
    frameBuffer.begin();
    batch.begin();
    batch.draw(elevationTexture, 0, 0);
    final Sprite latColorSprite = new Sprite(latColorTexture);
    latColorSprite.setAlpha(0.5f);
    latColorSprite.draw(batch);
    batch.end();
    frameBuffer.end();

    batch.setProjectionMatrix(oldBatchMatrix);
    latitudeTexture = frameBuffer.getColorBufferTexture();
    currentTextureIdx = 0;

    textures.add(elevationTexture);
    textures.add(rawElevationTexture);
    textures.add(elevationGrayScaleTexture);
    textures.add(temperatureTexture);
    textures.add(rainfallTexture);
    textures.add(mineralTexture);
    textures.add(latitudeTexture);
    //        textures.add(zoomedElevationTexture);

    numTextures = textures.size();
}

From source file:com.lyeeedar.Roguelike3D.Game.Level.LevelGraphics.java

License:Open Source License

public void createMap(Tile[][] levelArray) {
    BitmapFont font = new BitmapFont();
    SpriteBatch sB = new SpriteBatch();
    FrameBuffer fB = new FrameBuffer(Format.RGBA4444, width * STEP, height * STEP, false);

    fB.begin();//from  ww w  . ja  v a  2s. c  o m
    sB.begin();
    for (int x = 0; x < width; x++) {
        for (int y = 0; y < height; y++) {
            char c = levelArray[x][y].character;
            if (c == ' ')
                continue;
            font.setColor(colours.get(c));
            font.draw(sB, "" + c, x * STEP, y * STEP);

        }
    }
    sB.end();
    fB.end();

    map = fB.getColorBufferTexture();
}

From source file:com.lyeeedar.Roguelike3D.Graphics.TextureDrawer.java

License:Open Source License

public static Texture drawText(BitmapFont font, int xSpacing, int ySpacing, String... text) {
    int height = ySpacing * (text.length + 2);

    int width = 0;

    int temp;//from   w  w  w  .j  ava 2s .  c o  m
    for (int i = 0; i < text.length; i++) {
        temp = xSpacing * (text[i].length() + 2);

        if (temp > width)
            width = temp;
    }

    FrameBuffer fB = new FrameBuffer(format, width, height, false);
    fB.begin();

    Gdx.graphics.getGL20().glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
    Gdx.graphics.getGL20().glClear(GL20.GL_COLOR_BUFFER_BIT);

    font.setColor(Color.BLACK);

    sB.begin();
    for (int line = 0; line < text.length; line++) {
        for (int c = 0; c < text[line].length(); c++) {
            font.draw(sB, "" + text[line].charAt(c), c * xSpacing, (line - 1) * ySpacing);
        }
    }
    sB.end();

    fB.end();
    return fB.getColorBufferTexture();
}

From source file:com.lyeeedar.Roguelike3D.Graphics.TextureDrawer.java

License:Open Source License

public static Texture combineTextures(Texture texture1, Color colour1, Texture texture2, Color colour2) {
    int width = texture1.getWidth();
    int height = texture1.getHeight();

    FrameBuffer buffer = new FrameBuffer(format, width, height, false);
    buffer.begin();/*from ww  w  . j a v a 2  s . c o m*/
    Gdx.graphics.getGL20().glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
    Gdx.graphics.getGL20().glClear(GL20.GL_COLOR_BUFFER_BIT);

    sB.begin();
    sB.setColor(colour1);
    sB.draw(texture1, 0, 0, GameData.resolution[0], GameData.resolution[1]);
    sB.end();

    if (texture2 != null) {
        sB.begin();
        sB.setColor(colour2);
        sB.draw(texture2, 0, 0, GameData.resolution[0], GameData.resolution[1]);
        sB.end();
    }

    buffer.end();

    Texture merged = buffer.getColorBufferTexture();

    return merged;

}

From source file:com.mob.dao.objects.Map.java

License:Open Source License

/**
 * Renders a map layer to it's internal FrameBuffer Object
 *
 * @param layer// ww w .ja  v  a  2s  . c  om
 * @return void
 */
public void renderLayerToBuffer(int layer) {

    int width = (int) (Map.MAX_MAP_SIZE_WIDTH * Map.TILE_PIXEL_WIDTH);
    int height = (int) (Map.MAX_MAP_SIZE_HEIGHT * Map.TILE_PIXEL_HEIGHT);

    OrthographicCamera camera = new OrthographicCamera(width, height);
    camera.setToOrtho(true, width, height);

    FrameBuffer fbo = new FrameBuffer(Pixmap.Format.RGBA8888, width, height, false);
    SpriteBatch sb = new SpriteBatch();
    sb.setProjectionMatrix(camera.combined);
    fbo.begin();

    sb.enableBlending();
    Gdx.gl.glBlendFuncSeparate(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA, GL20.GL_ONE,
            GL20.GL_ONE_MINUS_SRC_ALPHA);
    Gdx.gl.glViewport(0, 0, width, height);
    Gdx.gl.glClearColor(0, 0, 0, 0);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    sb.begin();
    this.renderLayer(sb, layer);
    sb.end();

    fbo.end();
    this.bufferedLayer = fbo.getColorBufferTexture();
}

From source file:es.eucm.ead.editor.control.actions.editor.CreateSceneThumbnail.java

License:Open Source License

private FrameBuffer drawActor(Actor actor) {
    root.addActor(actor);//from ww w  .  j  a  v a  2 s  . co  m

    int width = (int) (Gdx.graphics.getHeight() - Gdx.graphics.getDensity() * 56);
    int height = (int) (Gdx.graphics.getHeight() / 2.15f);

    FrameBuffer frameBuffer = new FrameBuffer(Format.RGB888, width, height, false);
    frameBuffer.begin();

    Gdx.gl.glClearColor(1f, 1f, 1f, 1f);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    batch.begin();
    root.draw(batch, 1.0f);
    batch.end();
    frameBuffer.end();
    batch.setColor(Color.WHITE);
    return frameBuffer;
}