Class ExtSpriteBatch

  • All Implemented Interfaces:
    ExtBatch

    public class ExtSpriteBatch
    extends java.lang.Object
    implements ExtBatch
    Draws batched quads using indices.
    See Also:
    Batch
    • Constructor Summary

      Constructors 
      Constructor Description
      ExtSpriteBatch()
      Constructs a new SpriteBatch with a size of 1000, one buffer, and the default shader.
      ExtSpriteBatch​(int size)
      Constructs a SpriteBatch with one buffer and the default shader.
      ExtSpriteBatch​(int size, ExtShaderProgram defaultShader)
      Constructs a new SpriteBatch.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void begin()
      Sets up the Batch for drawing.
      static ExtShaderProgram createDefaultShader()
      Returns a new instance of the default shader used by SpriteBatch for GL2 when no shader is specified.
      void disableBlending()
      Disables blending for drawing sprites.
      void dispose()  
      void draw​(com.badlogic.gdx.graphics.Texture texture, float[] spriteVertices, int offset, int count)
      Draws a rectangle using the given vertices.
      void draw​(com.badlogic.gdx.graphics.Texture texture, float x, float y)
      Draws a rectangle with the bottom left corner at x,y having the width and height of the texture.
      void draw​(com.badlogic.gdx.graphics.Texture texture, float x, float y, float width, float height)
      Draws a rectangle with the bottom left corner at x,y and stretching the region to cover the given width and height.
      void draw​(com.badlogic.gdx.graphics.Texture texture, float x, float y, float width, float height, float u, float v, float u2, float v2)
      Draws a rectangle with the bottom left corner at x,y having the given width and height in pixels.
      void draw​(com.badlogic.gdx.graphics.Texture texture, float x, float y, float originX, float originY, float width, float height, float scaleX, float scaleY, float rotation, int srcX, int srcY, int srcWidth, int srcHeight, boolean flipX, boolean flipY)
      Draws a rectangle with the bottom left corner at x,y having the given width and height in pixels.
      void draw​(com.badlogic.gdx.graphics.Texture texture, float x, float y, float width, float height, int srcX, int srcY, int srcWidth, int srcHeight, boolean flipX, boolean flipY)
      Draws a rectangle with the bottom left corner at x,y having the given width and height in pixels.
      void draw​(com.badlogic.gdx.graphics.Texture texture, float x, float y, int srcX, int srcY, int srcWidth, int srcHeight)
      Draws a rectangle with the bottom left corner at x,y having the given width and height in pixels.
      void draw​(TextureRegion region, float x, float y)
      Draws a rectangle with the bottom left corner at x,y having the width and height of the region.
      void draw​(TextureRegion region, float x, float y, float width, float height)
      Draws a rectangle with the bottom left corner at x,y and stretching the region to cover the given width and height.
      void draw​(TextureRegion region, float x, float y, float originX, float originY, float width, float height, float scaleX, float scaleY, float rotation)
      Draws a rectangle with the bottom left corner at x,y and stretching the region to cover the given width and height.
      void draw​(TextureRegion region, float x, float y, float originX, float originY, float width, float height, float scaleX, float scaleY, float rotation, boolean clockwise)
      Draws a rectangle with the texture coordinates rotated 90 degrees.
      void draw​(TextureRegion region, float width, float height, com.badlogic.gdx.math.Affine2 transform)
      Draws a rectangle transformed by the given matrix.
      void enableBlending()
      Enables blending for drawing sprites.
      void end()
      Finishes off rendering.
      void flush()
      Causes any pending sprites to be rendered, without ending the Batch.
      int getBlendDstFunc()  
      int getBlendDstFuncAlpha()  
      int getBlendSrcFunc()  
      int getBlendSrcFuncAlpha()  
      com.badlogic.gdx.graphics.Color getColor()  
      float getPackedColor()  
      com.badlogic.gdx.math.Matrix4 getProjectionMatrix()
      Returns the current projection matrix.
      ExtShaderProgram getShader()  
      com.badlogic.gdx.math.Matrix4 getTransformMatrix()
      Returns the current transform matrix.
      boolean isBlendingEnabled()  
      boolean isDrawing()  
      void setBlendFunction​(int srcFunc, int dstFunc)
      Sets the blending function to be used when rendering sprites.
      void setBlendFunctionSeparate​(int srcFuncColor, int dstFuncColor, int srcFuncAlpha, int dstFuncAlpha)
      Sets separate (color/alpha) blending function to be used when rendering sprites.
      void setColor​(float r, float g, float b, float a)  
      void setColor​(com.badlogic.gdx.graphics.Color tint)
      Sets the color used to tint images when they are added to the Batch.
      void setPackedColor​(float packedColor)
      Sets the rendering color of this Batch, expanding the alpha from 0-254 to 0-255.
      void setProjectionMatrix​(com.badlogic.gdx.math.Matrix4 projection)
      Sets the projection matrix to be used by this Batch.
      void setShader​(ExtShaderProgram shader)
      Sets the shader to be used in a GLES 2.0 environment.
      void setTransformMatrix​(com.badlogic.gdx.math.Matrix4 transform)
      Sets the transform matrix to be used by this Batch.
      protected void switchTexture​(com.badlogic.gdx.graphics.Texture texture)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • renderCalls

        public int renderCalls
        Number of render calls since the last begin().
      • totalRenderCalls

        public int totalRenderCalls
        Number of rendering calls, ever. Will not be reset unless set manually.
      • maxSpritesInBatch

        public int maxSpritesInBatch
        The maximum number of sprites rendered in one batch so far.
    • Constructor Detail

      • ExtSpriteBatch

        public ExtSpriteBatch​(int size,
                              ExtShaderProgram defaultShader)
        Constructs a new SpriteBatch. Sets the projection matrix to an orthographic projection with y-axis point upwards, x-axis point to the right and the origin being in the bottom left corner of the screen. The projection will be pixel perfect with respect to the current screen resolution.

        The defaultShader specifies the shader to use. Note that the names for uniforms for this default shader are different than the ones expect for shaders set with setShader(ExtShaderProgram). See createDefaultShader().

        Parameters:
        size - The max number of sprites in a single batch. Max of 8191.
        defaultShader - The default shader to use. This is not owned by the SpriteBatch and must be disposed separately.
    • Method Detail

      • createDefaultShader

        public static ExtShaderProgram createDefaultShader()
        Returns a new instance of the default shader used by SpriteBatch for GL2 when no shader is specified.
      • begin

        public void begin()
        Description copied from interface: ExtBatch
        Sets up the Batch for drawing. This will disable depth buffer writing. It enables blending and texturing. If you have more texture units enabled than the first one you have to disable them before calling this. Uses a screen coordinate system by default where everything is given in pixels. You can specify your own projection and modelview matrices via ExtBatch.setProjectionMatrix(Matrix4) and ExtBatch.setTransformMatrix(Matrix4).
        Specified by:
        begin in interface ExtBatch
      • end

        public void end()
        Description copied from interface: ExtBatch
        Finishes off rendering. Enables depth writes, disables blending and texturing. Must always be called after a call to ExtBatch.begin()
        Specified by:
        end in interface ExtBatch
      • setColor

        public void setColor​(com.badlogic.gdx.graphics.Color tint)
        Description copied from interface: ExtBatch
        Sets the color used to tint images when they are added to the Batch. Default is Color.WHITE.
        Specified by:
        setColor in interface ExtBatch
      • getColor

        public com.badlogic.gdx.graphics.Color getColor()
        Specified by:
        getColor in interface ExtBatch
        Returns:
        the rendering color of this Batch. If the returned instance is manipulated, ExtBatch.setColor(Color) must be called afterward.
      • setPackedColor

        public void setPackedColor​(float packedColor)
        Description copied from interface: ExtBatch
        Sets the rendering color of this Batch, expanding the alpha from 0-254 to 0-255.
        Specified by:
        setPackedColor in interface ExtBatch
        See Also:
        ExtBatch.setColor(Color), Color.toFloatBits()
      • getPackedColor

        public float getPackedColor()
        Specified by:
        getPackedColor in interface ExtBatch
        Returns:
        the rendering color of this Batch in vertex format (alpha compressed to 0-254)
        See Also:
        Color.toFloatBits()
      • draw

        public void draw​(com.badlogic.gdx.graphics.Texture texture,
                         float x,
                         float y,
                         float originX,
                         float originY,
                         float width,
                         float height,
                         float scaleX,
                         float scaleY,
                         float rotation,
                         int srcX,
                         int srcY,
                         int srcWidth,
                         int srcHeight,
                         boolean flipX,
                         boolean flipY)
        Description copied from interface: ExtBatch
        Draws a rectangle with the bottom left corner at x,y having the given width and height in pixels. The rectangle is offset by originX, originY relative to the origin. Scale specifies the scaling factor by which the rectangle should be scaled around originX, originY. Rotation specifies the angle of counter clockwise rotation of the rectangle around originX, originY. The portion of the Texture given by srcX, srcY and srcWidth, srcHeight is used. These coordinates and sizes are given in texels. FlipX and flipY specify whether the texture portion should be flipped horizontally or vertically.
        Specified by:
        draw in interface ExtBatch
        x - the x-coordinate in screen space
        y - the y-coordinate in screen space
        originX - the x-coordinate of the scaling and rotation origin relative to the screen space coordinates
        originY - the y-coordinate of the scaling and rotation origin relative to the screen space coordinates
        width - the width in pixels
        height - the height in pixels
        scaleX - the scale of the rectangle around originX/originY in x
        scaleY - the scale of the rectangle around originX/originY in y
        rotation - the angle of counter clockwise rotation of the rectangle around originX/originY
        srcX - the x-coordinate in texel space
        srcY - the y-coordinate in texel space
        srcWidth - the source with in texels
        srcHeight - the source height in texels
        flipX - whether to flip the sprite horizontally
        flipY - whether to flip the sprite vertically
      • draw

        public void draw​(com.badlogic.gdx.graphics.Texture texture,
                         float x,
                         float y,
                         float width,
                         float height,
                         int srcX,
                         int srcY,
                         int srcWidth,
                         int srcHeight,
                         boolean flipX,
                         boolean flipY)
        Description copied from interface: ExtBatch
        Draws a rectangle with the bottom left corner at x,y having the given width and height in pixels. The portion of the Texture given by srcX, srcY and srcWidth, srcHeight is used. These coordinates and sizes are given in texels. FlipX and flipY specify whether the texture portion should be flipped horizontally or vertically.
        Specified by:
        draw in interface ExtBatch
        x - the x-coordinate in screen space
        y - the y-coordinate in screen space
        width - the width in pixels
        height - the height in pixels
        srcX - the x-coordinate in texel space
        srcY - the y-coordinate in texel space
        srcWidth - the source with in texels
        srcHeight - the source height in texels
        flipX - whether to flip the sprite horizontally
        flipY - whether to flip the sprite vertically
      • draw

        public void draw​(com.badlogic.gdx.graphics.Texture texture,
                         float x,
                         float y,
                         int srcX,
                         int srcY,
                         int srcWidth,
                         int srcHeight)
        Description copied from interface: ExtBatch
        Draws a rectangle with the bottom left corner at x,y having the given width and height in pixels. The portion of the Texture given by srcX, srcY and srcWidth, srcHeight are used. These coordinates and sizes are given in texels.
        Specified by:
        draw in interface ExtBatch
        x - the x-coordinate in screen space
        y - the y-coordinate in screen space
        srcX - the x-coordinate in texel space
        srcY - the y-coordinate in texel space
        srcWidth - the source with in texels
        srcHeight - the source height in texels
      • draw

        public void draw​(com.badlogic.gdx.graphics.Texture texture,
                         float x,
                         float y,
                         float width,
                         float height,
                         float u,
                         float v,
                         float u2,
                         float v2)
        Description copied from interface: ExtBatch
        Draws a rectangle with the bottom left corner at x,y having the given width and height in pixels. The portion of the Texture given by u, v and u2, v2 are used. These coordinates and sizes are given in texture size percentage. The rectangle will have the given tint Color.
        Specified by:
        draw in interface ExtBatch
        x - the x-coordinate in screen space
        y - the y-coordinate in screen space
        width - the width in pixels
        height - the height in pixels
      • draw

        public void draw​(com.badlogic.gdx.graphics.Texture texture,
                         float x,
                         float y)
        Description copied from interface: ExtBatch
        Draws a rectangle with the bottom left corner at x,y having the width and height of the texture.
        Specified by:
        draw in interface ExtBatch
        x - the x-coordinate in screen space
        y - the y-coordinate in screen space
      • draw

        public void draw​(com.badlogic.gdx.graphics.Texture texture,
                         float x,
                         float y,
                         float width,
                         float height)
        Description copied from interface: ExtBatch
        Draws a rectangle with the bottom left corner at x,y and stretching the region to cover the given width and height.
        Specified by:
        draw in interface ExtBatch
      • draw

        public void draw​(com.badlogic.gdx.graphics.Texture texture,
                         float[] spriteVertices,
                         int offset,
                         int count)
        Description copied from interface: ExtBatch
        Draws a rectangle using the given vertices. There must be 4 vertices, each made up of 5 elements in this order: x, y, color, u, v. The ExtBatch.getColor() from the Batch is not applied.
        Specified by:
        draw in interface ExtBatch
      • draw

        public void draw​(TextureRegion region,
                         float x,
                         float y)
        Description copied from interface: ExtBatch
        Draws a rectangle with the bottom left corner at x,y having the width and height of the region.
        Specified by:
        draw in interface ExtBatch
      • draw

        public void draw​(TextureRegion region,
                         float x,
                         float y,
                         float width,
                         float height)
        Description copied from interface: ExtBatch
        Draws a rectangle with the bottom left corner at x,y and stretching the region to cover the given width and height.
        Specified by:
        draw in interface ExtBatch
      • draw

        public void draw​(TextureRegion region,
                         float x,
                         float y,
                         float originX,
                         float originY,
                         float width,
                         float height,
                         float scaleX,
                         float scaleY,
                         float rotation)
        Description copied from interface: ExtBatch
        Draws a rectangle with the bottom left corner at x,y and stretching the region to cover the given width and height. The rectangle is offset by originX, originY relative to the origin. Scale specifies the scaling factor by which the rectangle should be scaled around originX, originY. Rotation specifies the angle of counter clockwise rotation of the rectangle around originX, originY.
        Specified by:
        draw in interface ExtBatch
      • draw

        public void draw​(TextureRegion region,
                         float x,
                         float y,
                         float originX,
                         float originY,
                         float width,
                         float height,
                         float scaleX,
                         float scaleY,
                         float rotation,
                         boolean clockwise)
        Description copied from interface: ExtBatch
        Draws a rectangle with the texture coordinates rotated 90 degrees. The bottom left corner at x,y and stretching the region to cover the given width and height. The rectangle is offset by originX, originY relative to the origin. Scale specifies the scaling factor by which the rectangle should be scaled around originX, originY. Rotation specifies the angle of counter clockwise rotation of the rectangle around originX, originY.
        Specified by:
        draw in interface ExtBatch
        clockwise - If true, the texture coordinates are rotated 90 degrees clockwise. If false, they are rotated 90 degrees counter clockwise.
      • draw

        public void draw​(TextureRegion region,
                         float width,
                         float height,
                         com.badlogic.gdx.math.Affine2 transform)
        Description copied from interface: ExtBatch
        Draws a rectangle transformed by the given matrix.
        Specified by:
        draw in interface ExtBatch
      • flush

        public void flush()
        Description copied from interface: ExtBatch
        Causes any pending sprites to be rendered, without ending the Batch.
        Specified by:
        flush in interface ExtBatch
      • setBlendFunction

        public void setBlendFunction​(int srcFunc,
                                     int dstFunc)
        Description copied from interface: ExtBatch
        Sets the blending function to be used when rendering sprites.
        Specified by:
        setBlendFunction in interface ExtBatch
        Parameters:
        srcFunc - the source function, e.g. GL20.GL_SRC_ALPHA. If set to -1, Batch won't change the blending function.
        dstFunc - the destination function, e.g. GL20.GL_ONE_MINUS_SRC_ALPHA
      • setBlendFunctionSeparate

        public void setBlendFunctionSeparate​(int srcFuncColor,
                                             int dstFuncColor,
                                             int srcFuncAlpha,
                                             int dstFuncAlpha)
        Description copied from interface: ExtBatch
        Sets separate (color/alpha) blending function to be used when rendering sprites.
        Specified by:
        setBlendFunctionSeparate in interface ExtBatch
        Parameters:
        srcFuncColor - the source color function, e.g. GL20.GL_SRC_ALPHA. If set to -1, Batch won't change the blending function.
        dstFuncColor - the destination color function, e.g. GL20.GL_ONE_MINUS_SRC_ALPHA.
        srcFuncAlpha - the source alpha function, e.g. GL20.GL_SRC_ALPHA.
        dstFuncAlpha - the destination alpha function, e.g. GL20.GL_ONE_MINUS_SRC_ALPHA.
      • dispose

        public void dispose()
      • setProjectionMatrix

        public void setProjectionMatrix​(com.badlogic.gdx.math.Matrix4 projection)
        Description copied from interface: ExtBatch
        Sets the projection matrix to be used by this Batch. If this is called inside a ExtBatch.begin()/ExtBatch.end() block, the current batch is flushed to the gpu.
        Specified by:
        setProjectionMatrix in interface ExtBatch
      • setTransformMatrix

        public void setTransformMatrix​(com.badlogic.gdx.math.Matrix4 transform)
        Description copied from interface: ExtBatch
        Sets the transform matrix to be used by this Batch.
        Specified by:
        setTransformMatrix in interface ExtBatch
      • switchTexture

        protected void switchTexture​(com.badlogic.gdx.graphics.Texture texture)
      • setShader

        public void setShader​(ExtShaderProgram shader)
        Description copied from interface: ExtBatch
        Sets the shader to be used in a GLES 2.0 environment. Vertex position attribute is called "a_position", the texture coordinates attribute is called "a_texCoord0", the color attribute is called "a_color". See ExtShaderProgram.POSITION_ATTRIBUTE, ExtShaderProgram.COLOR_ATTRIBUTE and ExtShaderProgram.TEXCOORD_ATTRIBUTE which gets "0" appended to indicate the use of the first texture unit. The combined transform and projection matrx is uploaded via a mat4 uniform called "u_projTrans". The texture sampler is passed via a uniform called "u_texture".

        Call this method with a null argument to use the default shader.

        This method will flush the batch before setting the new shader, you can call it in between ExtBatch.begin() and ExtBatch.end().

        Specified by:
        setShader in interface ExtBatch
        Parameters:
        shader - the ExtShaderProgram or null to use the default shader.
      • isBlendingEnabled

        public boolean isBlendingEnabled()
        Specified by:
        isBlendingEnabled in interface ExtBatch
        Returns:
        true if blending for sprites is enabled
      • isDrawing

        public boolean isDrawing()
        Specified by:
        isDrawing in interface ExtBatch
        Returns:
        true if currently between begin and end.