package com.igorcrevar.rolloverchuck.utils; import java.util.ArrayList; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.glutils.ShaderProgram; import com.badlogic.gdx.math.Matrix4; import com.badlogic.gdx.utils.Disposable; public class MyFontDrawerBatch implements Disposable { private IMyFontDrawerFont myFont; private ArrayList<MyFontDrawer> fonts = new ArrayList<MyFontDrawer>(8); private Matrix4 projectionMatrix = new Matrix4(); private float width; private float height; public MyFontDrawerBatch(IMyFontDrawerFont myFont, float width, float height) { this.myFont = myFont; this.width = width; this.height = height; } public MyFontDrawer addNew(MyFontDrawer drawer) { fonts.add(drawer); drawer.init(myFont); return drawer; } public void draw(ShaderProgram sp, Texture txt) { Gdx.gl.glEnable(GL20.GL_BLEND); Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA); Gdx.gl.glEnable(GL20.GL_TEXTURE_2D); Gdx.gl.glActiveTexture(GL20.GL_TEXTURE0); txt.bind(); sp.begin(); sp.setUniformi("u_texture", 0); for (MyFontDrawer fd : fonts) { if (fd.getIsEnabled()) { projectionMatrix.setToOrtho2D(0, 0, width, height); sp.setUniformMatrix("u_projTrans", projectionMatrix.mul(fd.getViewModelMatrix())); fd.draw(sp); } } sp.end(); } @Override public void dispose() { for (MyFontDrawer fd : fonts) { fd.dispose(); } } }