Java tutorial
/******************************************************************************* * Copyright (c) 2013 Philip Collin. * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html * * Contributors: * Philip Collin - initial API and implementation ******************************************************************************/ package com.lyeeedar.Roguelike3D.Graphics; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.Pixmap.Format; import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.BitmapFont; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.graphics.glutils.FrameBuffer; import com.lyeeedar.Roguelike3D.Game.GameData; public class TextureDrawer { public static final Format format = Format.RGBA4444; private static final SpriteBatch sB = new SpriteBatch(); public static Texture drawText(BitmapFont font, int xSpacing, int ySpacing, String... text) { int height = ySpacing * (text.length + 2); int width = 0; int temp; 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(); } 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(); 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; } }