Class ParallelBatch

java.lang.Object
com.prineside.tdi2.utils.ParallelBatch
All Implemented Interfaces:
Batch, Disposable

public final class ParallelBatch extends Object implements Batch
Implementation of Batch which does not draw anything. Instead it caches every call into its internal buffers and can replay all of the method calls into a regular Batch. Can be used on a separate (not-rendering) thread. Should only be used from a single thread. Not blocking.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    Deprecated.
    boolean
     
    static final float[]
     
    int
    The maximum number of sprites rendered in one batch so far.
    int
    Number of render calls since the last begin().
    int
    Number of rendering calls, ever.

    Fields inherited from interface com.badlogic.gdx.graphics.g2d.Batch

    C1, C2, C3, C4, U1, U2, U3, U4, V1, V2, V3, V4, X1, X2, X3, X4, Y1, Y2, Y3, Y4
  • Constructor Summary

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

    Modifier and Type
    Method
    Description
    void
    Sets up the Batch for drawing.
    void
    Disables blending for drawing sprites.
    void
    Releases all resources of this object.
    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, Affine2 transform)
    Draws a rectangle transformed by the given matrix.
    void
    draw(Texture texture, float[] spriteVertices, int offset, int count)
    Draws a rectangle using the given vertices.
    void
    draw(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(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(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(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(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(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
    Enables blending for drawing sprites.
    void
    end()
    Finishes off rendering.
    void
    Causes any pending sprites to be rendered, without ending the Batch.
    int
     
    int
     
    int
     
    int
     
     
    float
     
    Returns the current projection matrix.
     
    Returns the current transform matrix.
    boolean
     
    boolean
     
    void
    render(Mesh mesh)
     
    void
     
    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
    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
    Sets the projection matrix to be used by this Batch.
    void
    Sets the shader to be used in a GLES 2.0 environment.
    void
    Sets the transform matrix to be used by this Batch.

    Methods inherited from class java.lang.Object

    equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • defaultVertexDataType

      @Deprecated public static Mesh.VertexDataType defaultVertexDataType
      Deprecated.
    • FLUSH_VERTICES

      public static final float[] FLUSH_VERTICES
    • drawing

      public boolean drawing
    • 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 Details

    • ParallelBatch

      public ParallelBatch()
      Constructs a new SpriteBatch with a size of 1000, one buffer, and the default shader.
      See Also:
    • ParallelBatch

      public ParallelBatch(int size)
      Constructs a SpriteBatch with one buffer and the default shader.
      See Also:
    • ParallelBatch

      public ParallelBatch(int size, ShaderProgram 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(ShaderProgram). 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 Details

    • reset

      public void reset()
    • render

      public void render(Mesh mesh)
    • begin

      public void begin()
      Description copied from interface: com.badlogic.gdx.graphics.g2d.Batch
      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 Batch.setProjectionMatrix(Matrix4) and Batch.setTransformMatrix(Matrix4).
      Specified by:
      begin in interface Batch
    • end

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

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

      public void setColor(float r, float g, float b, float a)
      Specified by:
      setColor in interface Batch
      See Also:
    • getColor

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

      public void setPackedColor(float packedColor)
      Description copied from interface: com.badlogic.gdx.graphics.g2d.Batch
      Sets the rendering color of this Batch, expanding the alpha from 0-254 to 0-255.
      Specified by:
      setPackedColor in interface Batch
      See Also:
    • getPackedColor

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

      public void draw(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: com.badlogic.gdx.graphics.g2d.Batch
      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 Batch
      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, in degrees
      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(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: com.badlogic.gdx.graphics.g2d.Batch
      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 Batch
      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(Texture texture, float x, float y, int srcX, int srcY, int srcWidth, int srcHeight)
      Description copied from interface: com.badlogic.gdx.graphics.g2d.Batch
      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 Batch
      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(Texture texture, float x, float y, float width, float height, float u, float v, float u2, float v2)
      Description copied from interface: com.badlogic.gdx.graphics.g2d.Batch
      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 Batch
      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(Texture texture, float x, float y)
      Description copied from interface: com.badlogic.gdx.graphics.g2d.Batch
      Draws a rectangle with the bottom left corner at x,y having the width and height of the texture.
      Specified by:
      draw in interface Batch
      x - the x-coordinate in screen space
      y - the y-coordinate in screen space
    • draw

      public void draw(Texture texture, float x, float y, float width, float height)
      Description copied from interface: com.badlogic.gdx.graphics.g2d.Batch
      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 Batch
    • draw

      public void draw(Texture texture, float[] spriteVertices, int offset, int count)
      Description copied from interface: com.badlogic.gdx.graphics.g2d.Batch
      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 Batch.getColor() from the Batch is not applied.
      Specified by:
      draw in interface Batch
    • draw

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

      public void draw(TextureRegion region, float x, float y, float width, float height)
      Description copied from interface: com.badlogic.gdx.graphics.g2d.Batch
      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 Batch
    • 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: com.badlogic.gdx.graphics.g2d.Batch
      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 Batch
      rotation - rotation in degrees
    • 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: com.badlogic.gdx.graphics.g2d.Batch
      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 Batch
      rotation - rotation in degrees
      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, Affine2 transform)
      Description copied from interface: com.badlogic.gdx.graphics.g2d.Batch
      Draws a rectangle transformed by the given matrix.
      Specified by:
      draw in interface Batch
    • flush

      public void flush()
      Description copied from interface: com.badlogic.gdx.graphics.g2d.Batch
      Causes any pending sprites to be rendered, without ending the Batch.
      Specified by:
      flush in interface Batch
    • disableBlending

      public void disableBlending()
      Description copied from interface: com.badlogic.gdx.graphics.g2d.Batch
      Disables blending for drawing sprites. Calling this within Batch.begin()/Batch.end() will flush the batch.
      Specified by:
      disableBlending in interface Batch
    • enableBlending

      public void enableBlending()
      Description copied from interface: com.badlogic.gdx.graphics.g2d.Batch
      Enables blending for drawing sprites. Calling this within Batch.begin()/Batch.end() will flush the batch.
      Specified by:
      enableBlending in interface Batch
    • setBlendFunction

      public void setBlendFunction(int srcFunc, int dstFunc)
      Description copied from interface: com.badlogic.gdx.graphics.g2d.Batch
      Sets the blending function to be used when rendering sprites.
      Specified by:
      setBlendFunction in interface Batch
      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: com.badlogic.gdx.graphics.g2d.Batch
      Sets separate (color/alpha) blending function to be used when rendering sprites.
      Specified by:
      setBlendFunctionSeparate in interface Batch
      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.
    • getBlendSrcFunc

      public int getBlendSrcFunc()
      Specified by:
      getBlendSrcFunc in interface Batch
    • getBlendDstFunc

      public int getBlendDstFunc()
      Specified by:
      getBlendDstFunc in interface Batch
    • getBlendSrcFuncAlpha

      public int getBlendSrcFuncAlpha()
      Specified by:
      getBlendSrcFuncAlpha in interface Batch
    • getBlendDstFuncAlpha

      public int getBlendDstFuncAlpha()
      Specified by:
      getBlendDstFuncAlpha in interface Batch
    • dispose

      public void dispose()
      Description copied from interface: com.badlogic.gdx.utils.Disposable
      Releases all resources of this object.
      Specified by:
      dispose in interface Disposable
    • getProjectionMatrix

      public Matrix4 getProjectionMatrix()
      Description copied from interface: com.badlogic.gdx.graphics.g2d.Batch
      Returns the current projection matrix. Changing this within Batch.begin()/Batch.end() results in undefined behaviour.
      Specified by:
      getProjectionMatrix in interface Batch
    • getTransformMatrix

      public Matrix4 getTransformMatrix()
      Description copied from interface: com.badlogic.gdx.graphics.g2d.Batch
      Returns the current transform matrix. Changing this within Batch.begin()/Batch.end() results in undefined behaviour.
      Specified by:
      getTransformMatrix in interface Batch
    • setProjectionMatrix

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

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

      public void setShader(ShaderProgram shader)
      Description copied from interface: com.badlogic.gdx.graphics.g2d.Batch
      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 ShaderProgram.POSITION_ATTRIBUTE, ShaderProgram.COLOR_ATTRIBUTE and ShaderProgram.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 Batch.begin() and Batch.end().

      Specified by:
      setShader in interface Batch
      Parameters:
      shader - the ShaderProgram or null to use the default shader.
    • getShader

      public ShaderProgram getShader()
      Specified by:
      getShader in interface Batch
      Returns:
      the current ShaderProgram set by Batch.setShader(ShaderProgram) or the defaultShader
    • isBlendingEnabled

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

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