com.badlogic.gdx.graphics.g2d
Class PolygonSpriteBatch

java.lang.Object
  extended by com.badlogic.gdx.graphics.g2d.PolygonSpriteBatch
All Implemented Interfaces:
Batch, Disposable

public class PolygonSpriteBatch
extends Object
implements Batch

A PolygonSpriteBatch is used to draw 2D polygons that reference a texture (region). The class will batch the drawing commands and optimize them for processing by the GPU.

To draw something with a PolygonSpriteBatch one has to first call the begin() method which will setup appropriate render states. When you are done with drawing you have to call end() which will actually draw the things you specified.

All drawing commands of the PolygonSpriteBatch operate in screen coordinates. The screen coordinate system has an x-axis pointing to the right, an y-axis pointing upwards and the origin is in the lower left corner of the screen. You can also provide your own transformation and projection matrices if you so wish.

A PolygonSpriteBatch is managed. In case the OpenGL context is lost all OpenGL resources a PolygonSpriteBatch uses internally get invalidated. A context is lost when a user switches to another application or receives an incoming call on Android. A SpritPolygonSpriteBatcheBatch will be automatically reloaded after the OpenGL context is restored.

A PolygonSpriteBatch is a pretty heavy object so you should only ever have one in your program.

A PolygonSpriteBatch works with OpenGL ES 1.x and 2.0. In the case of a 2.0 context it will use its own custom shader to draw all provided sprites. You can set your own custom shader via setShader(ShaderProgram).

A PolygonSpriteBatch has to be disposed if it is no longer used.

Author:
mzechner, Stefan Bachmann, Nathan Sweet

Field Summary
 int maxTrianglesInBatch
          The maximum number of triangles rendered in one batch so far.
 int renderCalls
          Number of render calls since the last begin().
 int totalRenderCalls
          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
PolygonSpriteBatch()
          Constructs a new PolygonSpriteBatch with a size of 2000, the default shader, and one buffer.
PolygonSpriteBatch(int size)
          Constructs a PolygonSpriteBatch with the default shader and one buffer.
PolygonSpriteBatch(int size, ShaderProgram defaultShader)
          Constructs a new PolygonSpriteBatch.
 
Method Summary
 void begin()
          Sets up the PolygonSpriteBatch for drawing.
 void disableBlending()
          Disables blending for drawing sprites.
 void dispose()
          Disposes all resources associated with this PolygonSpriteBatch.
 void draw(PolygonRegion region, float x, float y)
          Draws a polygon region with the bottom left corner at x,y having the width and height of the region.
 void draw(PolygonRegion region, float x, float y, float width, float height)
          Draws a polygon region with the bottom left corner at x,y and stretching the region to cover the given width and height.
 void draw(PolygonRegion region, float x, float y, float originX, float originY, float width, float height, float scaleX, float scaleY, float rotation)
          Draws the polygon region with the bottom left corner at x,y and stretching the region to cover the given width and height.
 void draw(Texture texture, float[] spriteVertices, int offset, int count)
          Draws a rectangle using the given vertices.
 void draw(Texture texture, float[] polygonVertices, int verticesOffset, int verticesCount, short[] polygonTriangles, int trianglesOffset, int trianglesCount)
          Draws the polygon using the given vertices and triangles.
 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 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 enableBlending()
          Enables blending for sprites.
 void end()
          Finishes off rendering.
 void flush()
          Causes any pending sprites to be rendered, without ending the PolygonSpriteBatch.
 int getBlendDstFunc()
           
 int getBlendSrcFunc()
           
 Color getColor()
           
 Matrix4 getProjectionMatrix()
          Returns the current projection matrix.
 Matrix4 getTransformMatrix()
          Returns the current transform matrix.
 boolean isBlendingEnabled()
           
 void setBlendFunction(int srcFunc, int dstFunc)
          Sets the blending function to be used when rendering sprites.
 void setColor(Color tint)
          Sets the color used to tint images when they are added to the PolygonSpriteBatch.
 void setColor(float color)
           
 void setColor(float r, float g, float b, float a)
           
 void setProjectionMatrix(Matrix4 projection)
          Sets the projection matrix to be used by this PolygonSpriteBatch.
 void setShader(ShaderProgram shader)
          Sets the shader to be used in a GLES 2.0 environment.
 void setTransformMatrix(Matrix4 transform)
          Sets the transform matrix to be used by this PolygonSpriteBatch.
 
Methods inherited from class java.lang.Object
equals, 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.


maxTrianglesInBatch

public int maxTrianglesInBatch
The maximum number of triangles rendered in one batch so far.

Constructor Detail

PolygonSpriteBatch

public PolygonSpriteBatch()
Constructs a new PolygonSpriteBatch with a size of 2000, the default shader, and one buffer.

See Also:
PolygonSpriteBatch(int, ShaderProgram)

PolygonSpriteBatch

public PolygonSpriteBatch(int size)
Constructs a PolygonSpriteBatch with the default shader and one buffer.

See Also:
PolygonSpriteBatch(int, ShaderProgram)

PolygonSpriteBatch

public PolygonSpriteBatch(int size,
                          ShaderProgram defaultShader)
Constructs a new PolygonSpriteBatch. 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 SpriteBatch.createDefaultShader().

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

begin

public void begin()
Sets up the PolygonSpriteBatch 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 setProjectionMatrix(Matrix4) and setTransformMatrix(Matrix4).

Specified by:
begin in interface Batch

end

public void end()
Finishes off rendering. Enables depth writes, disables blending and texturing. Must always be called after a call to begin()

Specified by:
end in interface Batch

setColor

public void setColor(Color tint)
Sets the color used to tint images when they are added to the PolygonSpriteBatch. 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:
setColor(Color)

setColor

public void setColor(float color)
Specified by:
setColor in interface Batch
See Also:
setColor(Color), Color.toFloatBits()

getColor

public Color getColor()
Specified by:
getColor in interface Batch
Returns:
the rendering color of this PolygonSpriteBatch. Manipulating the returned instance has no effect.

draw

public void draw(PolygonRegion region,
                 float x,
                 float y)
Draws a polygon region with the bottom left corner at x,y having the width and height of the region.


draw

public void draw(PolygonRegion region,
                 float x,
                 float y,
                 float width,
                 float height)
Draws a polygon region with the bottom left corner at x,y and stretching the region to cover the given width and height.


draw

public void draw(PolygonRegion region,
                 float x,
                 float y,
                 float originX,
                 float originY,
                 float width,
                 float height,
                 float scaleX,
                 float scaleY,
                 float rotation)
Draws the polygon region with the bottom left corner at x,y and stretching the region to cover the given width and height. The polygon region is offset by originX, originY relative to the origin. Scale specifies the scaling factor by which the polygon region should be scaled around originX, originY. Rotation specifies the angle of counter clockwise rotation of the rectangle around originX, originY.


draw

public void draw(Texture texture,
                 float[] polygonVertices,
                 int verticesOffset,
                 int verticesCount,
                 short[] polygonTriangles,
                 int trianglesOffset,
                 int trianglesCount)
Draws the polygon using the given vertices and triangles. Each vertices must be made up of 5 elements in this order: x, y, color, u, v.


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: 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
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: 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: 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: 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: 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: 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: 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: 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: 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: 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

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: 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
clockwise - If true, the texture coordinates are rotated 90 degrees clockwise. If false, they are rotated 90 degrees counter clockwise.

flush

public void flush()
Causes any pending sprites to be rendered, without ending the PolygonSpriteBatch.

Specified by:
flush in interface Batch

disableBlending

public void disableBlending()
Disables blending for drawing sprites. Calling this within begin()/end() will flush the batch.

Specified by:
disableBlending in interface Batch

enableBlending

public void enableBlending()
Enables blending for sprites. Calling this within begin()/end() will flush the batch.

Specified by:
enableBlending in interface Batch

setBlendFunction

public void setBlendFunction(int srcFunc,
                             int dstFunc)
Sets the blending function to be used when rendering sprites.

Specified by:
setBlendFunction in interface Batch
Parameters:
srcFunc - the source function, e.g. GL11.GL_SRC_ALPHA. If set to -1, PolygonSpriteBatch won't change the blending function.
dstFunc - the destination function, e.g. GL11.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

dispose

public void dispose()
Disposes all resources associated with this PolygonSpriteBatch.

Specified by:
dispose in interface Disposable

getProjectionMatrix

public Matrix4 getProjectionMatrix()
Returns the current projection matrix. Changing this within begin()/end() results in undefined behaviour.

Specified by:
getProjectionMatrix in interface Batch

getTransformMatrix

public Matrix4 getTransformMatrix()
Returns the current transform matrix. Changing this within begin()/end() results in undefined behaviour.

Specified by:
getTransformMatrix in interface Batch

setProjectionMatrix

public void setProjectionMatrix(Matrix4 projection)
Sets the projection matrix to be used by this PolygonSpriteBatch. If this is called inside a begin()/end() block, the current batch is flushed to the gpu.

Specified by:
setProjectionMatrix in interface Batch

setTransformMatrix

public void setTransformMatrix(Matrix4 transform)
Sets the transform matrix to be used by this PolygonSpriteBatch. If this is called inside a begin()/end() block, the current batch is flushed to the gpu.

Specified by:
setTransformMatrix in interface Batch

setShader

public void setShader(ShaderProgram shader)
Description copied from interface: 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.
See Also:
Batch.setShader(ShaderProgram)

isBlendingEnabled

public boolean isBlendingEnabled()
Specified by:
isBlendingEnabled in interface Batch
Returns:
whether blending for sprites is enabled


Copyright © 2014. All Rights Reserved.