@Override public void resize (int width, int height) { super.resize(width, height); camera.setToOrtho(true, width, height); spriteBatch.setTransformMatrix(camera.view); spriteBatch.setProjectionMatrix(camera.projection); }
/** <p> * Flushes the batch and realigns the real matrix on the GPU. Subsequent draws won't need adjustment and will be slightly * faster as long as the transform matrix is not {@link #setTransformMatrix(Matrix4) changed}. * </p> * <p> * Note: The real transform matrix <em>must</em> be invertible. If a singular matrix is detected, GdxRuntimeException will be * thrown. * </p> * @see SpriteBatch#flush() */ public void flushAndSyncTransformMatrix () { flush(); if (adjustNeeded) { // vertices flushed, safe now to replace matrix haveIdentityRealMatrix = checkIdt(virtualMatrix); if (!haveIdentityRealMatrix && virtualMatrix.det() == 0) throw new GdxRuntimeException("Transform matrix is singular, can't sync"); adjustNeeded = false; super.setTransformMatrix(virtualMatrix); } }
/** <p> * Flushes the batch and realigns the real matrix on the GPU. Subsequent draws won't need adjustment and will be slightly * faster as long as the transform matrix is not {@link #setTransformMatrix(Matrix4) changed}. * </p> * <p> * Note: The real transform matrix <em>must</em> be invertible. If a singular matrix is detected, GdxRuntimeException will be * thrown. * </p> * @see SpriteBatch#flush() */ public void flushAndSyncTransformMatrix () { flush(); if (adjustNeeded) { // vertices flushed, safe now to replace matrix haveIdentityRealMatrix = checkIdt(virtualMatrix); if (!haveIdentityRealMatrix && virtualMatrix.det() == 0) throw new GdxRuntimeException("Transform matrix is singular, can't sync"); adjustNeeded = false; super.setTransformMatrix(virtualMatrix); } }
public void render () { batch.setProjectionMatrix(camera.projection); batch.setTransformMatrix(camera.view);
@Override public void create () { if (spriteBatch != null) return; spriteBatch = new SpriteBatch(); Matrix4 transform = new Matrix4(); transform.setToTranslation(0, Gdx.graphics.getHeight(), 0); transform.mul(new Matrix4().setToScaling(1, -1, 1)); spriteBatch.setTransformMatrix(transform); pixS1 = new Pixmap(Gdx.files.getFileHandle("data/test4.png", Files.FileType.Internal)); pixS2 = new Pixmap(Gdx.files.getFileHandle("data/test3.png", Files.FileType.Internal)); pixD = new Pixmap(512, 1024, Pixmap.Format.RGBA8888); pixD.setBlending(Pixmap.Blending.SourceOver); pixD.setFilter(Pixmap.Filter.NearestNeighbour); pixD.drawPixmap(pixS1, 0, 0, 38, 76, 0, 0, 512, 1024); pixD.drawPixmap(pixS2, 0, 0, 38, 76, 0, 0, 512, 1024); logoSprite = new Sprite(new Texture(pixD)); logoSprite.flip(false, true); pixS1.dispose(); pixS2.dispose(); pixD.dispose(); }
public void debugRender () { if (debug) { SpriteBatch batch = batchRenderer.beginTopLeft(); batch.setTransformMatrix(xform); batch.disableBlending(); GameEvents.gameRenderer.batch = batch; GameEvents.gameRenderer.trigger(this, GameRendererEvent.Type.BatchDebug); batchRenderer.end(); batch.setTransformMatrix(identity); GameEvents.gameRenderer.batch = null; GameEvents.gameRenderer.trigger(this, GameRendererEvent.Type.Debug); } }
private void batchAfterPostProcessing () { SpriteBatch batch = batchRenderer.beginTopLeft(); batch.setTransformMatrix(xform); GameEvents.gameRenderer.batch = batch; GameEvents.gameRenderer.trigger(this, GameRendererEvent.Type.BatchAfterPostProcessing); batchRenderer.end(); }
public SpriteBatch begin (Matrix4 proj, Matrix4 viewxform) { if (!begin) { begin = true; gl.glActiveTexture(GL20.GL_TEXTURE0); batch.setProjectionMatrix(proj); batch.setTransformMatrix(viewxform); batch.begin(); return batch; } return null; }
@Override public void handle (Object source, Type type, Order order) { if (!isEnabled()) return; SpriteBatch batch = GameEvents.gameRenderer.batch; if (type == GameRendererEvent.Type.BatchDebug) { // render everything scaled for (DebugRenderable r : renderables) { if (renderFlags.contains(r.getFlag())) r.renderBatch(batch); } // save original transform matrix xform = batch.getTransformMatrix(); batch.setTransformMatrix(idt); // render static debug information unscaled render(batch); // restore original matrix batch.setTransformMatrix(xform); } else if (type == GameRendererEvent.Type.Debug) { if (renderFlags.contains(RenderFlags.BoundingBoxes3D)) { renderBoundingBoxes(GameEvents.gameRenderer.camPersp); } if (renderFlags.contains(RenderFlags.Box2DWireframe)) { b2drenderer.render(box2dWorld, GameEvents.gameRenderer.mtxOrthographicMvpMt); } for (DebugRenderable r : renderables) { if (renderFlags.contains(r.getFlag())) r.render(); } } } };
public SpriteBatch spriteBatch; private int posX = 100; private int posY = 100; private float angle = 45; private String text = "Hello, World!"; private BitmapFont font; private Matrix4 oldTransformMatrix; Matrix4 mx4Font = new Matrix4(); @Override public void show() { font = new BitmapFont(Gdx.files.internal("someFont.ttf")); oldTransformMatrix = spriteBatch.getTransformMatrix().cpy(); mx4Font.rotate(new Vector3(0, 0, 1), angle); mx4Font.trn(posX, posY, 0); } @Override public void render() { Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); spriteBatch.setTransformMatrix(mx4Font); spriteBatch.begin(); font.draw(spriteBatch, text, 0, 0); spriteBatch.end(); spriteBatch.setTransformMatrix(oldTransformMatrix); }
Matrix4 mx4Font = new Matrix4(); BitmapFont font; SpriteBatch spriteFont; font = new BitmapFont(Gdx.files.internal("data/font/agencyFB.fnt"), Gdx.files.internal("data/font/agencyFB.png"), true); //must be set true to be flipped mx4Font.setToRotation(new Vector3(200, 200, 0), 180); spriteFont.setTransformMatrix(mx4Font); spriteFont.begin(); font.setColor(1.0f, 1.0f, 1.0f, 1.0f); font.draw(spriteFont, "The quick brown fox jumped over the lazy dog", 100, 110); spriteFont.end();
public void init() { if (!initialized) { camera = new OrthographicCamera(); batch = new SpriteBatch(); batch.setTransformMatrix(RadixClient.getInstance().getHudCamera().combined); batch.setTransformMatrix(camera.combined); mmButtonTexture = new Texture(Gdx.files.internal("textures/gui/mmBtn.png")); buttonFont = new BitmapFont(); resize(); rerender(); initialized = true; } }
/** <p> * Flushes the batch and realigns the real matrix on the GPU. Subsequent draws won't need adjustment and will be slightly * faster as long as the transform matrix is not {@link #setTransformMatrix(Matrix4) changed}. * </p> * <p> * Note: The real transform matrix <em>must</em> be invertible. If a singular matrix is detected, GdxRuntimeException will be * thrown. * </p> * @see SpriteBatch#flush() */ public void flushAndSyncTransformMatrix () { flush(); if (adjustNeeded) { // vertices flushed, safe now to replace matrix haveIdentityRealMatrix = checkIdt(virtualMatrix); if (!haveIdentityRealMatrix && virtualMatrix.det() == 0) throw new GdxRuntimeException("Transform matrix is singular, can't sync"); adjustNeeded = false; super.setTransformMatrix(virtualMatrix); } }
batch.setTransformMatrix(tm); batch.setTransformMatrix(tmp); } else { RectangleRenderer.draw(batch, x + dx * scaleX, y + dy * scaleY, getWidth() * scaleX, getHeight() * scaleY,
@Override public void draw(SpriteBatch batch, float x, float y, float scaleX, float scaleY, float rotation, Color tint) { float finalScaleX = EngineAssetManager.getInstance().getScale() * scaleX; float finalScaleY = EngineAssetManager.getInstance().getScale() * scaleY; if (effect.getEmitters().size > 0) { Matrix4 tm = batch.getTransformMatrix(); tmp.set(tm); if (tmpPosX != x / finalScaleX || tmpPosY != y / finalScaleY) { tmpPosX = x / finalScaleX; tmpPosY = y / finalScaleY; effect.setPosition(tmpPosX, tmpPosY); } tm.rotate(0, 0, 1, rotation).scale(finalScaleX, finalScaleY, 1); batch.setTransformMatrix(tm); if (tint != null) batch.setColor(tint); effect.draw(batch); if (tint != null) batch.setColor(Color.WHITE); batch.setTransformMatrix(tmp); } else { x = x - getWidth() / 2 * finalScaleX; RectangleRenderer.draw(batch, x, y, getWidth() * finalScaleX, getHeight() * finalScaleY, Color.RED); } }
private void drawNavMeshIndices(SpriteBatch spriteBatch, Camera camera, BitmapFont font) { // TODO: Get rid of all the transform matrix setting if (spriteBatch.isDrawing()) { spriteBatch.end(); } spriteBatch.begin(); spriteBatch.setProjectionMatrix(camera.combined); for (int i = 0; i < navMesh.graph.getNodeCount(); i++) { Triangle t = navMesh.graph.getTriangleFromGraphIndex(i); if (triangleIsVisible(t)) { tmpMatrix.set(camera.view).inv().getRotation(tmpQuat); tmpMatrix.setToTranslation(t.centroid).rotate(tmpQuat); spriteBatch.setTransformMatrix(tmpMatrix); font.draw(spriteBatch, Integer.toString(t.triIndex), 0, 0); } } spriteBatch.end(); }
@Override public void draw(SpriteBatch batch, float x, float y, float scaleX, float scaleY, float rotation, Color tint) { SkeletonCacheEntry cs = (SkeletonCacheEntry) currentSource; if (cs != null && cs.skeleton != null) { Matrix4 tm = batch.getTransformMatrix(); tmp.set(tm); float originX = cs.skeleton.getRootBone().getX(); float originY = cs.skeleton.getRootBone().getY(); tm.translate(x, y, 0).rotate(0, 0, 1, rotation).scale(scaleX, scaleY, 1).translate(originX, originY, 0); // cs.skeleton.setX(x / scale); // cs.skeleton.setY(y / scale); batch.setTransformMatrix(tm); if (tint != null) cs.skeleton.setColor(tint); renderer.draw(batch, cs.skeleton); if (tint != null) batch.setColor(Color.WHITE); batch.setTransformMatrix(tmp); } else { float dx = getAlignDx(getWidth(), orgAlign); float dy = getAlignDy(getHeight(), orgAlign); RectangleRenderer.draw(batch, x + dx * scaleX, y + dy * scaleY, getWidth() * scaleX, getHeight() * scaleY, Color.RED); } }
@Override public void draw (float delta) { Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); viewMatrix.setToOrtho2D(0, 0, 480, 320); spriteBatch.setProjectionMatrix(viewMatrix); spriteBatch.setTransformMatrix(transformMatrix); spriteBatch.begin(); spriteBatch.disableBlending(); spriteBatch.setColor(Color.WHITE); spriteBatch.draw(background, 0, 0, 480, 320, 0, 0, 512, 512, false, false); spriteBatch.enableBlending(); spriteBatch.draw(logo, 0, 320 - 128, 480, 128, 0, 256, 512, 256, false, false); String text = "It is the end my friend.\nTouch to continue!"; TextBounds bounds = font.getMultiLineBounds(text); spriteBatch.setBlendFunction(GL20.GL_ONE, GL20.GL_ONE_MINUS_SRC_ALPHA); font.drawMultiLine(spriteBatch, text, 0, 160 + bounds.height / 2, 480, HAlignment.CENTER); spriteBatch.end(); }
@Override public void draw (float delta) { Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); viewMatrix.setToOrtho2D(0, 0, 480, 320); spriteBatch.setProjectionMatrix(viewMatrix); spriteBatch.setTransformMatrix(transformMatrix); spriteBatch.begin(); spriteBatch.disableBlending(); spriteBatch.setColor(Color.WHITE); spriteBatch.draw(background, 0, 0, 480, 320, 0, 0, 512, 512, false, false); spriteBatch.enableBlending(); spriteBatch.draw(logo, 0, 320 - 128, 480, 128, 0, 0, 512, 256, false, false); spriteBatch.setBlendFunction(GL20.GL_ONE, GL20.GL_ONE_MINUS_SRC_ALPHA); String text = "Touch screen to start!"; float width = font.getBounds(text).width; font.draw(spriteBatch, text, 240 - width / 2, 128); if (Gdx.app.getType() == ApplicationType.WebGL) { text = "Press Enter for Fullscreen Mode"; width = font.getBounds(text).width; font.draw(spriteBatch, "Press Enter for Fullscreen Mode", 240 - width / 2, 128 - font.getLineHeight()); } spriteBatch.end(); }
batch.setTransformMatrix(aux1); batch.setProjectionMatrix(aux2);