Class CameraGroupStrategy

  • All Implemented Interfaces:
    GroupStrategy, Disposable

    public class CameraGroupStrategy
    extends java.lang.Object
    implements GroupStrategy, Disposable

    Minimalistic grouping strategy that splits decals into opaque and transparent ones enabling and disabling blending as needed. Opaque decals are rendered first (decal color is ignored in opacity check).
    Use this strategy only if the vast majority of your decals are opaque and the few transparent ones are unlikely to overlap.

    Can produce invisible artifacts when transparent decals overlap each other.

    Needs to be explicitly disposed as it might allocate a ShaderProgram when GLSL 2.0 is used.

    States (* = any, EV = entry value - same as value before flush):

    expects exits on
    glDepthMask true EV
    GL_DEPTH_TEST enabled EV
    glDepthFunc GL_LESS | GL_LEQUAL EV
    GL_BLEND disabled EV | disabled
    glBlendFunc * *
    GL_TEXTURE_2D * disabled

    • Constructor Detail

      • CameraGroupStrategy

        public CameraGroupStrategy​(Camera camera)
      • CameraGroupStrategy

        public CameraGroupStrategy​(Camera camera,
                                   java.util.Comparator<Decal> sorter)
    • Method Detail

      • setCamera

        public void setCamera​(Camera camera)
      • getCamera

        public Camera getCamera()
      • decideGroup

        public int decideGroup​(Decal decal)
        Description copied from interface: GroupStrategy
        Assigns a group to a decal
        Specified by:
        decideGroup in interface GroupStrategy
        Parameters:
        decal - Decal to assign group to
        Returns:
        group assigned
      • beforeGroup

        public void beforeGroup​(int group,
                                Array<Decal> contents)
        Description copied from interface: GroupStrategy
        Invoked directly before rendering the contents of a group
        Specified by:
        beforeGroup in interface GroupStrategy
        Parameters:
        group - Group that will be rendered
        contents - Array of entries of arrays containing all the decals in the group
      • afterGroup

        public void afterGroup​(int group)
        Description copied from interface: GroupStrategy
        Invoked directly after rendering of a group has completed
        Specified by:
        afterGroup in interface GroupStrategy
        Parameters:
        group - Group which completed rendering
      • afterGroups

        public void afterGroups()
        Description copied from interface: GroupStrategy
        Invoked after having rendered all groups
        Specified by:
        afterGroups in interface GroupStrategy
      • getGroupShader

        public ShaderProgram getGroupShader​(int group)
        Description copied from interface: GroupStrategy
        Returns the shader to be used for the group. Can be null in which case the GroupStrategy doesn't support GLES 2.0
        Specified by:
        getGroupShader in interface GroupStrategy
        Parameters:
        group - the group
        Returns:
        the ShaderProgram
      • dispose

        public void dispose()
        Description copied from interface: Disposable
        Releases all resources of this object.
        Specified by:
        dispose in interface Disposable