Class FrameBuffer

All Implemented Interfaces:
Disposable
Direct Known Subclasses:
FloatFrameBuffer

public class FrameBuffer extends GLFrameBuffer<Texture>

Encapsulates OpenGL ES 2.0 frame buffer objects. This is a simple helper class which should cover most FBO uses. It will automatically create a texture for the color attachment and a renderbuffer for the depth buffer. You can get a hold of the texture by GLFrameBuffer.getTexture(). This class will only work with OpenGL ES 2.0.

FrameBuffers are managed. In case of an OpenGL context loss, which only happens on Android when a user switches to another application or receives an incoming call, the framebuffer will be automatically recreated.

A FrameBuffer must be disposed if it is no longer needed

  • Constructor Details

    • FrameBuffer

      protected FrameBuffer(GLFrameBuffer.GLFrameBufferBuilder<? extends GLFrameBuffer<Texture>> bufferBuilder)
      Creates a GLFrameBuffer from the specifications provided by bufferBuilder
    • FrameBuffer

      public FrameBuffer()
      Creates a new 2x2 buffer. Resize before use.
    • FrameBuffer

      public FrameBuffer(int width, int height)
      Creates a new FrameBuffer having the given dimensions in the format RGBA8888 and no depth buffer.
    • FrameBuffer

      public FrameBuffer(Pixmap.Format format, int width, int height)
      Creates a new FrameBuffer having the given dimensions and no depth buffer.
    • FrameBuffer

      public FrameBuffer(Pixmap.Format format, int width, int height, boolean hasDepth)
      Creates a new FrameBuffer having the given dimensions and potentially a depth buffer attached.
    • FrameBuffer

      public FrameBuffer(int width, int height, boolean hasDepth)
      Creates a new FrameBuffer having the given dimensions and potentially a depth buffer attached.
    • FrameBuffer

      public FrameBuffer(Pixmap.Format format, int width, int height, boolean hasDepth, boolean hasStencil)
      Creates a new FrameBuffer having the given dimensions and potentially a depth and a stencil buffer attached.
      Parameters:
      format - the format of the color buffer; according to the OpenGL ES 2.0 spec, only RGB565, RGBA4444 and RGB5_A1 are color-renderable
      width - the width of the framebuffer in pixels
      height - the height of the framebuffer in pixels
      hasDepth - whether to attach a depth buffer
      Throws:
      ArcRuntimeException - in case the FrameBuffer could not be created
  • Method Details

    • create

      protected void create(Pixmap.Format format, int width, int height, boolean hasDepth, boolean hasStencil)
    • blit

      public void blit(Shader shader)
      Blits this buffer onto the screen using the specified shader.
    • resizeCheck

      public boolean resizeCheck(int width, int height)
    • resize

      public void resize(int width, int height)
      Note that this does nothing if the width and height are the same.
    • unbind

      public static void unbind()
    • createTexture

      protected Texture createTexture(GLFrameBuffer.FrameBufferTextureAttachmentSpec attachmentSpec)
      Description copied from class: GLFrameBuffer
      Override this method in a derived class to set up the backing texture as you like.
      Specified by:
      createTexture in class GLFrameBuffer<Texture>
    • disposeColorTexture

      protected void disposeColorTexture(Texture colorTexture)
      Description copied from class: GLFrameBuffer
      Override this method in a derived class to dispose the backing texture as you like.
      Specified by:
      disposeColorTexture in class GLFrameBuffer<Texture>
    • attachFrameBufferColorTexture

      protected void attachFrameBufferColorTexture(Texture texture)
      Description copied from class: GLFrameBuffer
      Override this method in a derived class to attach the backing texture to the GL framebuffer object.
      Specified by:
      attachFrameBufferColorTexture in class GLFrameBuffer<Texture>