com.jogamp.opengl
Class FBObject

java.lang.Object
  extended by com.jogamp.opengl.FBObject

public class FBObject
extends Object

Core utility class simplifying usage of framebuffer objects (FBO) with all GLProfiles.

Supports on-the-fly reconfiguration of dimension and multisample buffers via reset(GL, int, int, int) while preserving the FBObject.Attachment references.

Integrates default read/write framebuffers via GLContext.getDefaultReadFramebuffer() and GLContext.getDefaultReadFramebuffer(), which is being hooked at GL.glBindFramebuffer(int, int) when the default (zero) framebuffer is selected.

FIXME: Implement support for FBObject.Attachment.Type.DEPTH_TEXTURE, FBObject.Attachment.Type.STENCIL_TEXTURE .


Nested Class Summary
static class FBObject.Attachment
          Common super class of all attachments
static class FBObject.ColorAttachment
          Color render buffer attachment
static interface FBObject.Colorbuffer
          Marker interface, denotes a color buffer attachment.
static class FBObject.RenderAttachment
          Other renderbuffer attachment which maybe a colorbuffer, depth or stencil.
static class FBObject.TextureAttachment
          Texture attachment
 
Constructor Summary
FBObject()
          Creates an uninitialized FBObject instance.
 
Method Summary
 FBObject.ColorAttachment attachColorbuffer(GL gl, int attachmentPoint, boolean alpha)
          Attaches a Color Buffer to this FBO's instance at the given attachment point, selecting the format automatically.
 FBObject.ColorAttachment attachColorbuffer(GL gl, int attachmentPoint, FBObject.ColorAttachment colA)
          Attaches a Color Buffer to this FBO's instance at the given attachment point.
 FBObject.ColorAttachment attachColorbuffer(GL gl, int attachmentPoint, int internalFormat)
          Attaches a Color Buffer to this FBO's instance at the given attachment point.
 void attachRenderbuffer(GL gl, FBObject.Attachment.Type atype, int reqBits)
          Attaches one depth, stencil or packed-depth-stencil buffer to this FBO's instance, selecting the internalFormat automatically.
 void attachRenderbuffer(GL gl, int internalFormat)
          Attaches one depth, stencil or packed-depth-stencil buffer to this FBO's instance, depending on the internalFormat.
 FBObject.TextureAttachment attachTexture2D(GL gl, int attachmentPoint, boolean alpha)
          Attaches a Texture2D Color Buffer to this FBO's instance at the given attachment point, selecting the texture data type and format automatically.
 FBObject.TextureAttachment attachTexture2D(GL gl, int attachmentPoint, boolean alpha, int magFilter, int minFilter, int wrapS, int wrapT)
          Attaches a Texture2D Color Buffer to this FBO's instance at the given attachment point, selecting the texture data type and format automatically.
 FBObject.TextureAttachment attachTexture2D(GL gl, int attachmentPoint, FBObject.TextureAttachment texA)
          Attaches a Texture2D Color Buffer to this FBO's instance at the given attachment point.
 FBObject.TextureAttachment attachTexture2D(GL gl, int attachmentPoint, int internalFormat, int dataFormat, int dataType, int magFilter, int minFilter, int wrapS, int wrapT)
          Attaches a Texture2D Color Buffer to this FBO's instance at the given attachment point.
 void bind(GL gl)
          Bind this FBO, i.e.
 void destroy(GL gl)
           
 void detachAll(GL gl)
          Detaches all FBObject.ColorAttachments, FBObject.TextureAttachments and FBObject.RenderAttachments.
 void detachAllColorbuffer(GL gl)
          Detaches all FBObject.ColorAttachments and FBObject.TextureAttachments.
 void detachAllRenderbuffer(GL gl)
           
 void detachAllTexturebuffer(GL gl)
          Detaches all FBObject.TextureAttachments
 void detachColorbuffer(GL gl, int attachmentPoint)
          Leaves the FBO bound!
 void detachRenderbuffer(GL gl, FBObject.Attachment.Type atype)
           
 int getColorAttachmentCount()
          Return the number of color/texture attachments
 FBObject.Colorbuffer getColorbuffer(FBObject.Colorbuffer ca)
          Returns the passed FBObject.Colorbuffer if it is attached to this FBO, otherwise null.
 FBObject.Colorbuffer getColorbuffer(int attachmentPoint)
          Return the FBObject.Colorbuffer attachment at attachmentPoint if it is attached to this FBO, otherwise null.
 int getColorbufferAttachmentPoint(FBObject.Colorbuffer ca)
          Finds the passed FBObject.Colorbuffer within the valid range of attachment points using reference comparison only.
 FBObject.RenderAttachment getDepthAttachment()
          Return the depth FBObject.RenderAttachment attachment.
 int getHeight()
          Returns the height
 int getMaxColorAttachments()
          Returns the maximum number of colorbuffer attachments.
 int getMaxSamples()
          Returns the maximum number of samples for multisampling.
static int getMaxSamples(GL gl)
           
 int getNumSamples()
          Returns the number of samples for multisampling (MSAA).
 int getReadFramebuffer()
          Returns the framebuffer name to read from.
 FBObject.TextureAttachment getSamplingSink()
          Return the multisampling FBObject.TextureAttachment sink, if using multisampling.
 FBObject getSamplingSinkFBO()
          Return the complete multisampling FBObject sink, if using multisampling.
 int getStatus()
          Note that the status may reflect an incomplete state during transition of attachments.
 String getStatusString()
          return the getStatus() as a string.
static String getStatusString(int fbStatus)
           
 FBObject.RenderAttachment getStencilAttachment()
          Return the stencil FBObject.RenderAttachment attachment, if exist.
 int getWidth()
          Returns the width
 int getWriteFramebuffer()
          Returns the framebuffer name to render to.
 boolean isBound()
          Returns true if framebuffer object is bound via bind(GL), otherwise false.
 boolean isBound(GL gl)
          Returns true if framebuffer object is bound via bind(GL), otherwise false.
 boolean isDepthStencilPackedFormat()
           
 boolean isInitialized()
          Returns true if this instance has been initialized with reset(GL, int, int) or reset(GL, int, int, int), otherwise false
 boolean isSamplingBufferDirty()
          Returns true if the multisampling colorbuffer (msaa-buffer) has been flagged dirty by a previous call of bind(GL), otherwise false.
 boolean isStatusValid()
          The status may even be valid if incomplete during transition of attachments.
 void reset(GL gl, int newWidth, int newHeight)
          Initializes or resets this FBO's instance.
 void reset(GL gl, int newWidth, int newHeight, int newSamples)
          Initializes or resets this FBO's instance.
static boolean supportsBasicFBO(GL gl)
          Returns true if basic FBO support is available, otherwise false.
 boolean supportsDepth(int bits)
          Returns true if GL.GL_DEPTH_COMPONENT16, GL.GL_DEPTH_COMPONENT24 or GL.GL_DEPTH_COMPONENT32 is supported, otherwise false.
 boolean supportsFBO(boolean full)
          Returns true if basic or full FBO is supported, otherwise false.
static boolean supportsFullFBO(GL gl)
          Returns true if full FBO support is available, otherwise false.
 boolean supportsPackedDepthStencil()
          Returns true if GL.GL_DEPTH24_STENCIL8 is supported, otherwise false.
 boolean supportsRGBA8()
          Returns true if renderbuffer accepts internal format GL.GL_RGB8 and GL.GL_RGBA8, otherwise false.
 boolean supportsStencil(int bits)
          Returns true if GL.GL_STENCIL_INDEX1, GL.GL_STENCIL_INDEX4, GL.GL_STENCIL_INDEX8 or GL2GL3.GL_STENCIL_INDEX16 is supported, otherwise false.
 void syncSamplingBuffer(GL gl)
          Samples the multisampling colorbuffer (msaa-buffer) to it's sink getSamplingSink().
 String toString()
           
 void unbind(GL gl)
          Unbind this FBO, i.e.
 void unuse(GL gl)
          Unbind texture, ie bind 'non' texture 0
 void use(GL gl, FBObject.TextureAttachment ta)
          Bind the given texture colorbuffer.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

FBObject

public FBObject()
Creates an uninitialized FBObject instance.

Call init(GL, int, int, int) .. etc to use it.

Method Detail

supportsBasicFBO

public static final boolean supportsBasicFBO(GL gl)
Returns true if basic FBO support is available, otherwise false.

Basic FBO is supported if the context is either GL-ES >= 2.0, GL >= core 3.0 or implements the extensions ARB_ES2_compatibility, ARB_framebuffer_object, EXT_framebuffer_object or OES_framebuffer_object.

Basic FBO support may only include one color attachment and no multisampling, as well as limited internal formats for renderbuffer.

See Also:
GLContext.hasFBO()

supportsFullFBO

public static final boolean supportsFullFBO(GL gl)
Returns true if full FBO support is available, otherwise false.

Full FBO is supported if the context is either GL >= core 3.0 or implements the extensions ARB_framebuffer_object, or all of EXT_framebuffer_object, EXT_framebuffer_multisample, EXT_framebuffer_blit, GL_EXT_packed_depth_stencil.

Full FBO support includes multiple color attachments and multisampling.


getMaxSamples

public static final int getMaxSamples(GL gl)

getColorbuffer

public final FBObject.Colorbuffer getColorbuffer(int attachmentPoint)
Return the FBObject.Colorbuffer attachment at attachmentPoint if it is attached to this FBO, otherwise null.

See Also:
#attachColorbuffer(GL, boolean), #attachColorbuffer(GL, boolean), attachTexture2D(GL, int, boolean, int, int, int, int), attachTexture2D(GL, int, int, int, int, int, int, int, int)

getColorbufferAttachmentPoint

public final int getColorbufferAttachmentPoint(FBObject.Colorbuffer ca)
Finds the passed FBObject.Colorbuffer within the valid range of attachment points using reference comparison only.

Note: Slow. Implementation uses a logN array search to save resources, i.e. not using a HashMap.

Parameters:
ca - the FBObject.Colorbuffer to look for.
Returns:
-1 if the FBObject.Colorbuffer could not be found, otherwise [0..getMaxColorAttachments()-1]

getColorbuffer

public final FBObject.Colorbuffer getColorbuffer(FBObject.Colorbuffer ca)
Returns the passed FBObject.Colorbuffer if it is attached to this FBO, otherwise null. Implementation compares the reference only.

Note: Slow. Uses getColorbufferAttachmentPoint(Colorbuffer) to determine it's attachment point to be used for getColorbuffer(int)

See Also:
#attachColorbuffer(GL, boolean), #attachColorbuffer(GL, boolean), attachTexture2D(GL, int, boolean, int, int, int, int), attachTexture2D(GL, int, int, int, int, int, int, int, int)

reset

public final void reset(GL gl,
                        int newWidth,
                        int newHeight)
Initializes or resets this FBO's instance.

In case the new parameters are compatible with the current ones no action will be performed. Otherwise all attachments will be recreated to match the new given parameters.

Currently incompatibility and hence recreation is given if the size or sample count doesn't match for subsequent calls.

Leaves the FBO bound state untouched

Parameters:
gl - the current GL context
newWidth -
newHeight -
Throws:
GLException - in case of an error

reset

public final void reset(GL gl,
                        int newWidth,
                        int newHeight,
                        int newSamples)
Initializes or resets this FBO's instance.

In case the new parameters are compatible with the current ones no action will be performed. Otherwise all attachments will be recreated to match the new given parameters.

Currently incompatibility and hence recreation is given if the size or sample count doesn't match for subsequent calls.

Leaves the FBO bound state untouched

Parameters:
gl - the current GL context
newWidth -
newHeight -
newSamples - if > 0, MSAA will be used, otherwise no multisampling. Will be capped to getMaxSamples().
Throws:
GLException - in case of an error

getStatus

public final int getStatus()
Note that the status may reflect an incomplete state during transition of attachments.

Returns:
The FB status. GL.GL_FRAMEBUFFER_COMPLETE if ok, otherwise return GL FBO error state or -1
See Also:
#validateStatus()

getStatusString

public final String getStatusString()
return the getStatus() as a string.


getStatusString

public static final String getStatusString(int fbStatus)

isStatusValid

public final boolean isStatusValid()
The status may even be valid if incomplete during transition of attachments.

See Also:
getStatus()

attachTexture2D

public final FBObject.TextureAttachment attachTexture2D(GL gl,
                                                        int attachmentPoint,
                                                        boolean alpha)
                                                 throws GLException
Attaches a Texture2D Color Buffer to this FBO's instance at the given attachment point, selecting the texture data type and format automatically.

Using default min/mag filter GL.GL_NEAREST and default wrapS/wrapT GL.GL_CLAMP_TO_EDGE.

Leaves the FBO bound.

Parameters:
gl - the current GL context
attachmentPoint - the color attachment point ranging from [0..getMaxColorAttachments()-1]
alpha - set to true if you request alpha channel, otherwise false;
Returns:
TextureAttachment instance describing the new attached texture colorbuffer if bound and configured successfully, otherwise GLException is thrown
Throws:
GLException - in case the texture colorbuffer couldn't be allocated or MSAA has been chosen

attachTexture2D

public final FBObject.TextureAttachment attachTexture2D(GL gl,
                                                        int attachmentPoint,
                                                        boolean alpha,
                                                        int magFilter,
                                                        int minFilter,
                                                        int wrapS,
                                                        int wrapT)
                                                 throws GLException
Attaches a Texture2D Color Buffer to this FBO's instance at the given attachment point, selecting the texture data type and format automatically.

Leaves the FBO bound.

Parameters:
gl - the current GL context
attachmentPoint - the color attachment point ranging from [0..getMaxColorAttachments()-1]
alpha - set to true if you request alpha channel, otherwise false;
magFilter - if > 0 value for GL.GL_TEXTURE_MAG_FILTER
minFilter - if > 0 value for GL.GL_TEXTURE_MIN_FILTER
wrapS - if > 0 value for GL.GL_TEXTURE_WRAP_S
wrapT - if > 0 value for GL.GL_TEXTURE_WRAP_T
Returns:
TextureAttachment instance describing the new attached texture colorbuffer if bound and configured successfully, otherwise GLException is thrown
Throws:
GLException - in case the texture colorbuffer couldn't be allocated or MSAA has been chosen

attachTexture2D

public final FBObject.TextureAttachment attachTexture2D(GL gl,
                                                        int attachmentPoint,
                                                        int internalFormat,
                                                        int dataFormat,
                                                        int dataType,
                                                        int magFilter,
                                                        int minFilter,
                                                        int wrapS,
                                                        int wrapT)
                                                 throws GLException
Attaches a Texture2D Color Buffer to this FBO's instance at the given attachment point.

Leaves the FBO bound.

Parameters:
gl - the current GL context
attachmentPoint - the color attachment point ranging from [0..getMaxColorAttachments()-1]
internalFormat - internalFormat parameter to GL.glTexImage2D(int, int, int, int, int, int, int, int, long)
dataFormat - format parameter to GL.glTexImage2D(int, int, int, int, int, int, int, int, long)
dataType - type parameter to GL.glTexImage2D(int, int, int, int, int, int, int, int, long)
magFilter - if > 0 value for GL.GL_TEXTURE_MAG_FILTER
minFilter - if > 0 value for GL.GL_TEXTURE_MIN_FILTER
wrapS - if > 0 value for GL.GL_TEXTURE_WRAP_S
wrapT - if > 0 value for GL.GL_TEXTURE_WRAP_T
Returns:
TextureAttachment instance describing the new attached texture colorbuffer if bound and configured successfully, otherwise GLException is thrown
Throws:
GLException - in case the texture colorbuffer couldn't be allocated or MSAA has been chosen

attachTexture2D

public final FBObject.TextureAttachment attachTexture2D(GL gl,
                                                        int attachmentPoint,
                                                        FBObject.TextureAttachment texA)
                                                 throws GLException
Attaches a Texture2D Color Buffer to this FBO's instance at the given attachment point.

In case the passed TextureAttachment texA is uninitialized, i.e. it's texture name is zero, a new texture name is generated and setup w/ the texture parameter.
Otherwise, i.e. texture name is not zero, the passed TextureAttachment texA is considered complete and assumed matching this FBO requirement. A GL error may occur is the latter is untrue.

Leaves the FBO bound.

Parameters:
gl - the current GL context
attachmentPoint - the color attachment point ranging from [0..getMaxColorAttachments()-1]
texA - the to be attached FBObject.TextureAttachment. Maybe complete or uninitialized, see above.
Returns:
the passed TextureAttachment texA instance describing the new attached texture colorbuffer if bound and configured successfully, otherwise GLException is thrown
Throws:
GLException - in case the texture colorbuffer couldn't be allocated or MSAA has been chosen

attachColorbuffer

public final FBObject.ColorAttachment attachColorbuffer(GL gl,
                                                        int attachmentPoint,
                                                        boolean alpha)
                                                 throws GLException
Attaches a Color Buffer to this FBO's instance at the given attachment point, selecting the format automatically.

Leaves the FBO bound.

Parameters:
gl - the current GL context
attachmentPoint - the color attachment point ranging from [0..getMaxColorAttachments()-1]
alpha - set to true if you request alpha channel, otherwise false;
Returns:
ColorAttachment instance describing the new attached colorbuffer if bound and configured successfully, otherwise GLException is thrown
Throws:
GLException - in case the colorbuffer couldn't be allocated

attachColorbuffer

public final FBObject.ColorAttachment attachColorbuffer(GL gl,
                                                        int attachmentPoint,
                                                        int internalFormat)
                                                 throws GLException,
                                                        IllegalArgumentException
Attaches a Color Buffer to this FBO's instance at the given attachment point.

Leaves the FBO bound.

Parameters:
gl - the current GL context
attachmentPoint - the color attachment point ranging from [0..getMaxColorAttachments()-1]
internalFormat - usually GL.GL_RGBA4, GL.GL_RGB5_A1, GL.GL_RGB565, GL.GL_RGB8 or GL.GL_RGBA8
Returns:
ColorAttachment instance describing the new attached colorbuffer if bound and configured successfully, otherwise GLException is thrown
Throws:
GLException - in case the colorbuffer couldn't be allocated
IllegalArgumentException - if internalFormat doesn't reflect a colorbuffer

attachColorbuffer

public final FBObject.ColorAttachment attachColorbuffer(GL gl,
                                                        int attachmentPoint,
                                                        FBObject.ColorAttachment colA)
                                                 throws GLException
Attaches a Color Buffer to this FBO's instance at the given attachment point.

Leaves the FBO bound.

Parameters:
gl -
attachmentPoint - the color attachment point ranging from [0..getMaxColorAttachments()-1]
colA - the template for the new FBObject.ColorAttachment
Returns:
ColorAttachment instance describing the new attached colorbuffer if bound and configured successfully, otherwise GLException is thrown
Throws:
GLException - in case the colorbuffer couldn't be allocated

attachRenderbuffer

public final void attachRenderbuffer(GL gl,
                                     FBObject.Attachment.Type atype,
                                     int reqBits)
                              throws GLException,
                                     IllegalArgumentException
Attaches one depth, stencil or packed-depth-stencil buffer to this FBO's instance, selecting the internalFormat automatically.

Stencil and depth buffer can be attached only once.

In case the desired type or bit-number is not supported, the next available one is chosen.

Use getDepthAttachment() and/or getStencilAttachment() to retrieve details about the attached buffer. The details cannot be returned, since it's possible 2 buffers are being created, depth and stencil.

Leaves the FBO bound.

Parameters:
gl -
atype - either FBObject.Attachment.Type.DEPTH, FBObject.Attachment.Type.STENCIL or FBObject.Attachment.Type.DEPTH_STENCIL
reqBits - desired bits for depth or -1 for default (24 bits)
Throws:
GLException - in case the renderbuffer couldn't be allocated or one is already attached.
IllegalArgumentException
See Also:
getDepthAttachment(), getStencilAttachment()

attachRenderbuffer

public final void attachRenderbuffer(GL gl,
                                     int internalFormat)
                              throws GLException,
                                     IllegalArgumentException
Attaches one depth, stencil or packed-depth-stencil buffer to this FBO's instance, depending on the internalFormat.

Stencil and depth buffer can be attached only once.

Use getDepthAttachment() and/or getStencilAttachment() to retrieve details about the attached buffer. The details cannot be returned, since it's possible 2 buffers are being created, depth and stencil.

Leaves the FBO bound.

Parameters:
gl - the current GL context
internalFormat - GL.GL_DEPTH_COMPONENT16, GL.GL_DEPTH_COMPONENT24, GL.GL_DEPTH_COMPONENT32, GL.GL_STENCIL_INDEX1, GL.GL_STENCIL_INDEX4, GL.GL_STENCIL_INDEX8 or GL.GL_DEPTH24_STENCIL8
Throws:
GLException - in case the renderbuffer couldn't be allocated or one is already attached.
IllegalArgumentException
See Also:
getDepthAttachment(), getStencilAttachment()

detachColorbuffer

public final void detachColorbuffer(GL gl,
                                    int attachmentPoint)
                             throws IllegalArgumentException

Leaves the FBO bound!

Parameters:
gl -
ca -
Throws:
IllegalArgumentException

detachRenderbuffer

public final void detachRenderbuffer(GL gl,
                                     FBObject.Attachment.Type atype)
                              throws IllegalArgumentException
Parameters:
gl -
reqAType - FBObject.Attachment.Type.DEPTH, FBObject.Attachment.Type.DEPTH or FBObject.Attachment.Type.DEPTH_STENCIL
Throws:
IllegalArgumentException

isDepthStencilPackedFormat

public final boolean isDepthStencilPackedFormat()

detachAll

public final void detachAll(GL gl)
Detaches all FBObject.ColorAttachments, FBObject.TextureAttachments and FBObject.RenderAttachments.

Leaves the FBO bound!

An attached sampling sink texture will be detached as well, see getSamplingSink().

Parameters:
gl - the current GL context

detachAllColorbuffer

public final void detachAllColorbuffer(GL gl)
Detaches all FBObject.ColorAttachments and FBObject.TextureAttachments.

Leaves the FBO bound!

An attached sampling sink texture will be detached as well, see getSamplingSink().

Parameters:
gl - the current GL context

detachAllTexturebuffer

public final void detachAllTexturebuffer(GL gl)
Detaches all FBObject.TextureAttachments

Leaves the FBO bound!

An attached sampling sink texture will be detached as well, see getSamplingSink().

Parameters:
gl - the current GL context

detachAllRenderbuffer

public final void detachAllRenderbuffer(GL gl)

destroy

public final void destroy(GL gl)
Parameters:
gl - the current GL context

bind

public final void bind(GL gl)
                throws GLException
Bind this FBO, i.e. bind write framebuffer to getWriteFramebuffer().

If multisampling is used, it sets the read framebuffer to the sampling sink getWriteFramebuffer(), if full FBO is supported.

In case you have attached more than one color buffer, you may want to setup GL2GL3.glDrawBuffers(int, int[], int).

Parameters:
gl - the current GL context
Throws:
GLException

unbind

public final void unbind(GL gl)
                  throws GLException
Unbind this FBO, i.e. bind read and write framebuffer to default, see GLBase.getDefaultDrawFramebuffer().

If full FBO is supported, sets the read and write framebuffer individually to default, hence not disturbing an optional operating MSAA FBO, see GLBase.getDefaultReadFramebuffer() and GLBase.getDefaultDrawFramebuffer()

Parameters:
gl - the current GL context
Throws:
GLException

isBound

public final boolean isBound(GL gl)
Returns true if framebuffer object is bound via bind(GL), otherwise false.

Method verifies the bound state via GLBase.getBoundFramebuffer(int).

Parameters:
gl - the current GL context

isBound

public final boolean isBound()
Returns true if framebuffer object is bound via bind(GL), otherwise false.


syncSamplingBuffer

public final void syncSamplingBuffer(GL gl)
Samples the multisampling colorbuffer (msaa-buffer) to it's sink getSamplingSink().

The operation is skipped, if no multisampling is used or the msaa-buffer has not been flagged dirty by a previous call of bind(GL), see isSamplingBufferDirty()

If full FBO is supported, sets the read and write framebuffer individually to default after sampling, hence not disturbing an optional operating MSAA FBO, see GLBase.getDefaultReadFramebuffer() and GLBase.getDefaultDrawFramebuffer()

In case you intend to employ glReadPixels(..) you may want to call glBindFramebuffer(GL2GL3.GL_READ_FRAMEBUFFER, getReadFramebuffer());

Leaves the FBO unbound.

Parameters:
gl - the current GL context
ta - FBObject.TextureAttachment to use, prev. attached w/ attachTexture2D(..)
Throws:
IllegalArgumentException

use

public final void use(GL gl,
                      FBObject.TextureAttachment ta)
               throws IllegalArgumentException
Bind the given texture colorbuffer.

If multisampling is being used, syncSamplingBuffer(GL) is being called.

Leaves the FBO unbound!

Parameters:
gl - the current GL context
ta - FBObject.TextureAttachment to use, prev. attached w/ attachTexture2D(..)
Throws:
IllegalArgumentException

unuse

public final void unuse(GL gl)
Unbind texture, ie bind 'non' texture 0

Leaves the FBO unbound.


supportsFBO

public final boolean supportsFBO(boolean full)
                          throws GLException
Returns true if basic or full FBO is supported, otherwise false.

Parameters:
full - true for full FBO supported query, otherwise false for basic FBO support query.
Throws:
GLException - if #init(GL) hasn't been called.
See Also:
supportsFullFBO(GL), supportsBasicFBO(GL)

supportsRGBA8

public final boolean supportsRGBA8()
                            throws GLException
Returns true if renderbuffer accepts internal format GL.GL_RGB8 and GL.GL_RGBA8, otherwise false.

Throws:
GLException - if #init(GL) hasn't been called.

supportsDepth

public final boolean supportsDepth(int bits)
                            throws GLException
Returns true if GL.GL_DEPTH_COMPONENT16, GL.GL_DEPTH_COMPONENT24 or GL.GL_DEPTH_COMPONENT32 is supported, otherwise false.

Parameters:
bits - 16, 24 or 32 bits
Throws:
GLException - if #init(GL) hasn't been called.

supportsStencil

public final boolean supportsStencil(int bits)
                              throws GLException
Returns true if GL.GL_STENCIL_INDEX1, GL.GL_STENCIL_INDEX4, GL.GL_STENCIL_INDEX8 or GL2GL3.GL_STENCIL_INDEX16 is supported, otherwise false.

Parameters:
bits - 1, 4, 8 or 16 bits
Throws:
GLException - if #init(GL) hasn't been called.

supportsPackedDepthStencil

public final boolean supportsPackedDepthStencil()
                                         throws GLException
Returns true if GL.GL_DEPTH24_STENCIL8 is supported, otherwise false.

Throws:
GLException - if #init(GL) hasn't been called.

getMaxColorAttachments

public final int getMaxColorAttachments()
                                 throws GLException
Returns the maximum number of colorbuffer attachments.

Throws:
GLException - if #init(GL) hasn't been called.

getMaxSamples

public final int getMaxSamples()
                        throws GLException
Returns the maximum number of samples for multisampling. Maybe zero if multisampling is not supported.

Throws:
GLException - if #init(GL) hasn't been called.

isInitialized

public final boolean isInitialized()
Returns true if this instance has been initialized with reset(GL, int, int) or reset(GL, int, int, int), otherwise false


getWidth

public final int getWidth()
Returns the width


getHeight

public final int getHeight()
Returns the height


getNumSamples

public final int getNumSamples()
Returns the number of samples for multisampling (MSAA). zero if no multisampling is used.


getWriteFramebuffer

public final int getWriteFramebuffer()
Returns the framebuffer name to render to.


getReadFramebuffer

public final int getReadFramebuffer()
Returns the framebuffer name to read from. Depending on multisampling, this may be a different framebuffer.


getColorAttachmentCount

public final int getColorAttachmentCount()
Return the number of color/texture attachments


getStencilAttachment

public final FBObject.RenderAttachment getStencilAttachment()
Return the stencil FBObject.RenderAttachment attachment, if exist. Maybe share the same FBObject.Attachment.getName() as getDepthAttachment(), if packed depth-stencil is being used.


getDepthAttachment

public final FBObject.RenderAttachment getDepthAttachment()
Return the depth FBObject.RenderAttachment attachment. Maybe share the same FBObject.Attachment.getName() as getStencilAttachment(), if packed depth-stencil is being used.


getSamplingSinkFBO

public final FBObject getSamplingSinkFBO()
Return the complete multisampling FBObject sink, if using multisampling.


getSamplingSink

public final FBObject.TextureAttachment getSamplingSink()
Return the multisampling FBObject.TextureAttachment sink, if using multisampling.


isSamplingBufferDirty

public final boolean isSamplingBufferDirty()
Returns true if the multisampling colorbuffer (msaa-buffer) has been flagged dirty by a previous call of bind(GL), otherwise false.


toString

public final String toString()
Overrides:
toString in class Object


Copyright 2010 JogAmp Community.