Class PostProcessor
- java.lang.Object
-
- gaiasky.util.gdx.contrib.postprocess.PostProcessor
-
- All Implemented Interfaces:
com.badlogic.gdx.utils.Disposable
public final class PostProcessor extends java.lang.Object implements com.badlogic.gdx.utils.DisposableProvides a way to capture the rendered scene to an off-screen buffer and to apply a chain of effects on it before rendering to screen.Effects can be added or removed via
addEffect(PostProcessorEffect)andremoveEffect(PostProcessorEffect).
-
-
Field Summary
Fields Modifier and Type Field Description static PostProcessorcurrentPostProcessorstatic booleanEnableQueryStatesEnable pipeline state queries: beware the pipeline can stall!
-
Constructor Summary
Constructors Constructor Description PostProcessor(IPostProcessor.RenderType rt, boolean useDepth, boolean useAlphaChannel, boolean use32Bits)Construct a new PostProcessor with FBO dimensions set to the size of the screenPostProcessor(IPostProcessor.RenderType rt, int fboWidth, int fboHeight, boolean useDepth, boolean useAlphaChannel, boolean use32Bits)Construct a new PostProcessor with the given parameters, defaulting to TextureWrap.ClampToEdge as texture wrap modePostProcessor(IPostProcessor.RenderType rt, int fboWidth, int fboHeight, boolean useDepth, boolean useAlphaChannel, boolean use32Bits, com.badlogic.gdx.graphics.Texture.TextureWrap u, com.badlogic.gdx.graphics.Texture.TextureWrap v)Construct a new PostProcessor with the given parameters and the specified texture wrap modePostProcessor(IPostProcessor.RenderType rt, com.badlogic.gdx.math.Rectangle viewport, boolean useDepth, boolean useAlphaChannel, boolean use32Bits)Construct a new PostProcessor with the given parameters and viewport, defaulting to TextureWrap.ClampToEdge as texture wrap modePostProcessor(IPostProcessor.RenderType rt, com.badlogic.gdx.math.Rectangle viewport, boolean useDepth, boolean useAlphaChannel, boolean use32Bits, com.badlogic.gdx.graphics.Texture.TextureWrap u, com.badlogic.gdx.graphics.Texture.TextureWrap v)Construct a new PostProcessor with the given parameters, viewport and the specified texture wrap mode
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddEffect(PostProcessorEffect effect)Adds the specified effect to the effect chain and transfer ownership to the PostProcessor, it will manage cleaning it up for you.intbuildEnabledEffectsList()booleancapture()Starts capturing the scene, clears the buffer with the clear color specified bysetClearColor(Color)orsetClearColor(float r, float g, float b, float a).GaiaSkyFrameBuffercaptured()After a capture/captureEnd action, returns the just captured bufferGaiaSkyFrameBuffercaptureEnd()Stops capturing the scene and returns the result, or null if nothing was captured.booleancaptureNoClear()Starts capturing the scene ascapture(), but without clearing the screen.voiddispose()Frees owned resources.voiddispose(boolean cleanAllBuffers)PingPongBuffergetCombinedBuffer()intgetEnabledEffectsCount()Returns the number of the currently enabled effectsstatic com.badlogic.gdx.graphics.Pixmap.FormatgetFramebufferFormat()Returns the internal framebuffer format, computed from the parameters specified during construction.booleanisEnabled()Whether or not the post-processor is enabledbooleanisReady()If called before capturing it will indicate if the next capture call will succeed or not.static booleanisStateEnabled(int pname)Provides a way to query the pipeline for the most used statesstatic PingPongBuffernewPingPongBuffer(int width, int height, com.badlogic.gdx.graphics.Pixmap.Format frameBufferFormat, boolean hasDepth)Creates and returns a managed PingPongBuffer buffer, just create and forget.static PingPongBuffernewPingPongBuffer(int width, int height, com.badlogic.gdx.graphics.Pixmap.Format frameBufferFormat, boolean hasDepth, boolean preventFloatBuffer)Creates and returns a managed PingPongBuffer buffer, just create and forget.voidrebind()Regenerates and/or rebinds owned resources when needed, eg.voidremoveEffect(PostProcessorEffect effect)Removes the specified effect from the effect chain.voidrender()Convenience method to render to screen.voidrender(com.badlogic.gdx.graphics.glutils.FrameBuffer dest)Stops capturing the scene and apply the effect chain, if there is one.protected voidrestoreViewport(com.badlogic.gdx.graphics.glutils.FrameBuffer dest)Restores the previously set viewport if one was specified earlier and the destination buffer is the screenvoidsetBufferTextureWrap(com.badlogic.gdx.graphics.Texture.TextureWrap u, com.badlogic.gdx.graphics.Texture.TextureWrap v)voidsetClearBits(int bits)Sets the clear bit for when glClear is invoked.voidsetClearColor(float r, float g, float b, float a)Sets the color that will be used to clear the buffer.voidsetClearColor(com.badlogic.gdx.graphics.Color color)Sets the color that will be used to clear the buffer.voidsetClearDepth(float depth)Sets the depth value with which to clear the depth buffer when needed.voidsetEnabled(boolean enabled)Sets whether or not the post-processor should be enabledvoidsetListener(PostProcessorListener listener)Sets the listener that will receive events triggered by the PostProcessor rendering pipeline.voidsetViewport(com.badlogic.gdx.math.Rectangle viewport)Sets the viewport to be restored, if null is specified then the viewport will NOT be restored at all.
-
-
-
Field Detail
-
EnableQueryStates
public static boolean EnableQueryStates
Enable pipeline state queries: beware the pipeline can stall!
-
currentPostProcessor
public static PostProcessor currentPostProcessor
-
-
Constructor Detail
-
PostProcessor
public PostProcessor(IPostProcessor.RenderType rt, boolean useDepth, boolean useAlphaChannel, boolean use32Bits)
Construct a new PostProcessor with FBO dimensions set to the size of the screen
-
PostProcessor
public PostProcessor(IPostProcessor.RenderType rt, int fboWidth, int fboHeight, boolean useDepth, boolean useAlphaChannel, boolean use32Bits)
Construct a new PostProcessor with the given parameters, defaulting to TextureWrap.ClampToEdge as texture wrap mode
-
PostProcessor
public PostProcessor(IPostProcessor.RenderType rt, com.badlogic.gdx.math.Rectangle viewport, boolean useDepth, boolean useAlphaChannel, boolean use32Bits)
Construct a new PostProcessor with the given parameters and viewport, defaulting to TextureWrap.ClampToEdge as texture wrap mode
-
PostProcessor
public PostProcessor(IPostProcessor.RenderType rt, com.badlogic.gdx.math.Rectangle viewport, boolean useDepth, boolean useAlphaChannel, boolean use32Bits, com.badlogic.gdx.graphics.Texture.TextureWrap u, com.badlogic.gdx.graphics.Texture.TextureWrap v)
Construct a new PostProcessor with the given parameters, viewport and the specified texture wrap mode
-
PostProcessor
public PostProcessor(IPostProcessor.RenderType rt, int fboWidth, int fboHeight, boolean useDepth, boolean useAlphaChannel, boolean use32Bits, com.badlogic.gdx.graphics.Texture.TextureWrap u, com.badlogic.gdx.graphics.Texture.TextureWrap v)
Construct a new PostProcessor with the given parameters and the specified texture wrap mode
-
-
Method Detail
-
newPingPongBuffer
public static PingPongBuffer newPingPongBuffer(int width, int height, com.badlogic.gdx.graphics.Pixmap.Format frameBufferFormat, boolean hasDepth)
Creates and returns a managed PingPongBuffer buffer, just create and forget. If rebind() is called on context loss, managed PingPongBuffers will be rebound for you.This is a drop-in replacement for the same-signature PingPongBuffer's constructor.
-
newPingPongBuffer
public static PingPongBuffer newPingPongBuffer(int width, int height, com.badlogic.gdx.graphics.Pixmap.Format frameBufferFormat, boolean hasDepth, boolean preventFloatBuffer)
Creates and returns a managed PingPongBuffer buffer, just create and forget. If rebind() is called on context loss, managed PingPongBuffers will be rebound for you.This is a drop-in replacement for the same-signature PingPongBuffer's constructor.
-
isStateEnabled
public static boolean isStateEnabled(int pname)
Provides a way to query the pipeline for the most used states
-
setViewport
public void setViewport(com.badlogic.gdx.math.Rectangle viewport)
Sets the viewport to be restored, if null is specified then the viewport will NOT be restored at all.The predefined effects will restore the viewport settings at the final blitting stage (render to screen) by invoking the restoreViewport static method.
-
dispose
public void dispose()
Frees owned resources.- Specified by:
disposein interfacecom.badlogic.gdx.utils.Disposable
-
dispose
public void dispose(boolean cleanAllBuffers)
-
isEnabled
public boolean isEnabled()
Whether or not the post-processor is enabled
-
isReady
public boolean isReady()
If called before capturing it will indicate if the next capture call will succeed or not.
-
setEnabled
public void setEnabled(boolean enabled)
Sets whether or not the post-processor should be enabled
-
getEnabledEffectsCount
public int getEnabledEffectsCount()
Returns the number of the currently enabled effects
-
setListener
public void setListener(PostProcessorListener listener)
Sets the listener that will receive events triggered by the PostProcessor rendering pipeline.
-
addEffect
public void addEffect(PostProcessorEffect effect)
Adds the specified effect to the effect chain and transfer ownership to the PostProcessor, it will manage cleaning it up for you. The order of the inserted effects IS important, since effects will be applied in a FIFO fashion, the first added is the first being applied.
-
removeEffect
public void removeEffect(PostProcessorEffect effect)
Removes the specified effect from the effect chain.
-
getFramebufferFormat
public static com.badlogic.gdx.graphics.Pixmap.Format getFramebufferFormat()
Returns the internal framebuffer format, computed from the parameters specified during construction. NOTE: the returned Format will be valid after construction and NOT early!
-
setClearColor
public void setClearColor(com.badlogic.gdx.graphics.Color color)
Sets the color that will be used to clear the buffer.
-
setClearColor
public void setClearColor(float r, float g, float b, float a)Sets the color that will be used to clear the buffer.
-
setClearBits
public void setClearBits(int bits)
Sets the clear bit for when glClear is invoked.
-
setClearDepth
public void setClearDepth(float depth)
Sets the depth value with which to clear the depth buffer when needed.
-
setBufferTextureWrap
public void setBufferTextureWrap(com.badlogic.gdx.graphics.Texture.TextureWrap u, com.badlogic.gdx.graphics.Texture.TextureWrap v)
-
capture
public boolean capture()
Starts capturing the scene, clears the buffer with the clear color specified bysetClearColor(Color)orsetClearColor(float r, float g, float b, float a).- Returns:
- true or false, whether or not capturing has been initiated. Capturing will fail in case there are no enabled effects in the chain or this instance is not enabled or capturing is already started.
-
captureNoClear
public boolean captureNoClear()
Starts capturing the scene ascapture(), but without clearing the screen.- Returns:
- true or false, whether or not capturing has been initiated.
-
captureEnd
public GaiaSkyFrameBuffer captureEnd()
Stops capturing the scene and returns the result, or null if nothing was captured.
-
getCombinedBuffer
public PingPongBuffer getCombinedBuffer()
-
captured
public GaiaSkyFrameBuffer captured()
After a capture/captureEnd action, returns the just captured buffer
-
rebind
public void rebind()
Regenerates and/or rebinds owned resources when needed, eg. when the OpenGL context is lost.
-
render
public void render(com.badlogic.gdx.graphics.glutils.FrameBuffer dest)
Stops capturing the scene and apply the effect chain, if there is one. If the specified output FrameBuffer is NULL, then the rendering will be performed to screen.
-
render
public void render()
Convenience method to render to screen.
-
buildEnabledEffectsList
public int buildEnabledEffectsList()
-
restoreViewport
protected void restoreViewport(com.badlogic.gdx.graphics.glutils.FrameBuffer dest)
Restores the previously set viewport if one was specified earlier and the destination buffer is the screen
-
-