JUCE API reference
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | List of all members
juce::OpenGLFrameBuffer Class Reference

Creates an openGL frame buffer. More...

Public Types

enum class  RowOrder { fromBottomUp , fromTopDown }
 

Public Member Functions

 OpenGLFrameBuffer ()
 Creates an uninitialised buffer.
 
 ~OpenGLFrameBuffer ()
 Destructor.
 
bool initialise (OpenGLContext &context, int width, int height)
 Tries to allocates a buffer of the given size.
 
bool initialise (OpenGLContext &context, const Image &content)
 Tries to allocates a buffer containing a copy of a given image.
 
bool initialise (OpenGLFrameBuffer &other)
 Tries to allocate a copy of another framebuffer.
 
void release ()
 Releases the buffer, if one has been allocated.
 
void saveAndRelease ()
 If the framebuffer is active, this will save a stashed copy of its contents in main memory, and will release the GL buffer.
 
bool reloadSavedCopy (OpenGLContext &context)
 Restores the framebuffer content that was previously saved using saveAndRelease().
 
bool isValid () const noexcept
 Returns true if a valid buffer has been allocated.
 
int getWidth () const noexcept
 Returns the width of the buffer.
 
int getHeight () const noexcept
 Returns the height of the buffer.
 
GLuint getTextureID () const noexcept
 Returns the texture ID number for using this buffer as a texture.
 
int getTextureWidth () const noexcept
 Returns the width of the texture that backs this buffer.
 
int getTextureHeight () const noexcept
 Returns the height of the texture that backs this buffer.
 
bool makeCurrentRenderingTarget ()
 Selects this buffer as the current OpenGL rendering target.
 
void releaseAsRenderingTarget ()
 Deselects this buffer as the current OpenGL rendering target.
 
GLuint getFrameBufferID () const noexcept
 Returns the ID of this framebuffer, or 0 if it isn't initialised.
 
void clear (Colour colour)
 Clears the framebuffer with the specified colour.
 
void makeCurrentAndClear ()
 Selects the framebuffer as the current target, and clears it to transparent.
 
bool readPixels (PixelARGB *targetData, const Rectangle< int > &sourceArea, RowOrder order)
 Reads an area of pixels from the framebuffer into a 32-bit ARGB pixel array.
 
bool writePixels (const PixelARGB *srcData, const Rectangle< int > &targetArea, RowOrder order)
 Writes an area of pixels into the framebuffer from a specified pixel array.
 

Static Public Member Functions

static GLuint getCurrentFrameBufferTarget () noexcept
 Returns the current frame buffer ID for the current context.
 

Detailed Description

Creates an openGL frame buffer.

Member Enumeration Documentation

◆ RowOrder

Enumerator
fromBottomUp 
fromTopDown 

Constructor & Destructor Documentation

◆ OpenGLFrameBuffer()

juce::OpenGLFrameBuffer::OpenGLFrameBuffer ( )

Creates an uninitialised buffer.

To actually allocate the buffer, use initialise().

◆ ~OpenGLFrameBuffer()

juce::OpenGLFrameBuffer::~OpenGLFrameBuffer ( )

Destructor.

Member Function Documentation

◆ initialise() [1/3]

bool juce::OpenGLFrameBuffer::initialise ( OpenGLContext &  context,
int  width,
int  height 
)

Tries to allocates a buffer of the given size.

Note that a valid openGL context must be selected when you call this method, or it will fail.

◆ initialise() [2/3]

bool juce::OpenGLFrameBuffer::initialise ( OpenGLContext &  context,
const Image &  content 
)

Tries to allocates a buffer containing a copy of a given image.

Note that a valid openGL context must be selected when you call this method, or it will fail.

◆ initialise() [3/3]

bool juce::OpenGLFrameBuffer::initialise ( OpenGLFrameBuffer &  other)

Tries to allocate a copy of another framebuffer.

◆ release()

void juce::OpenGLFrameBuffer::release ( )

Releases the buffer, if one has been allocated.

Any saved state that was created with saveAndRelease() will also be freed by this call.

◆ saveAndRelease()

void juce::OpenGLFrameBuffer::saveAndRelease ( )

If the framebuffer is active, this will save a stashed copy of its contents in main memory, and will release the GL buffer.

After saving, the original state can be restored again by calling reloadSavedCopy().

◆ reloadSavedCopy()

bool juce::OpenGLFrameBuffer::reloadSavedCopy ( OpenGLContext &  context)

Restores the framebuffer content that was previously saved using saveAndRelease().

◆ isValid()

bool juce::OpenGLFrameBuffer::isValid ( ) const
noexcept

Returns true if a valid buffer has been allocated.

◆ getWidth()

int juce::OpenGLFrameBuffer::getWidth ( ) const
noexcept

Returns the width of the buffer.

◆ getHeight()

int juce::OpenGLFrameBuffer::getHeight ( ) const
noexcept

Returns the height of the buffer.

◆ getTextureID()

GLuint juce::OpenGLFrameBuffer::getTextureID ( ) const
noexcept

Returns the texture ID number for using this buffer as a texture.

The texture may be larger than the buffer itself, see getTextureWidth() and getTextureHeight(). The buffer's content occupies the top-left corner of the texture, so the top-left pixel of the buffer is at texture coordinate (0, 1).

◆ getTextureWidth()

int juce::OpenGLFrameBuffer::getTextureWidth ( ) const
noexcept

Returns the width of the texture that backs this buffer.

This is normally the same as getWidth(), but if the GL implementation is unable to create a texture with the exact size that was requested, a larger texture will be used instead, and this will return the actual width of that texture.

◆ getTextureHeight()

int juce::OpenGLFrameBuffer::getTextureHeight ( ) const
noexcept

Returns the height of the texture that backs this buffer.

See also
getTextureWidth

◆ makeCurrentRenderingTarget()

bool juce::OpenGLFrameBuffer::makeCurrentRenderingTarget ( )

Selects this buffer as the current OpenGL rendering target.

◆ releaseAsRenderingTarget()

void juce::OpenGLFrameBuffer::releaseAsRenderingTarget ( )

Deselects this buffer as the current OpenGL rendering target.

◆ getFrameBufferID()

GLuint juce::OpenGLFrameBuffer::getFrameBufferID ( ) const
noexcept

Returns the ID of this framebuffer, or 0 if it isn't initialised.

◆ getCurrentFrameBufferTarget()

static GLuint juce::OpenGLFrameBuffer::getCurrentFrameBufferTarget ( )
staticnoexcept

Returns the current frame buffer ID for the current context.

◆ clear()

void juce::OpenGLFrameBuffer::clear ( Colour  colour)

Clears the framebuffer with the specified colour.

◆ makeCurrentAndClear()

void juce::OpenGLFrameBuffer::makeCurrentAndClear ( )

Selects the framebuffer as the current target, and clears it to transparent.

◆ readPixels()

bool juce::OpenGLFrameBuffer::readPixels ( PixelARGB *  targetData,
const Rectangle< int > &  sourceArea,
RowOrder  order 
)

Reads an area of pixels from the framebuffer into a 32-bit ARGB pixel array.

Parameters
targetDatathe array to fill. It must have room for at least sourceArea.getWidth() * sourceArea.getHeight() pixels, which are written contiguously with no padding between rows.
sourceAreathe area to read, in OpenGL coordinates, with its origin at the bottom-left corner of the framebuffer.
orderthe order in which the rows of the area are written to targetData.
Returns
true if the pixels were read, or false if the framebuffer isn't currently allocated.

◆ writePixels()

bool juce::OpenGLFrameBuffer::writePixels ( const PixelARGB *  srcData,
const Rectangle< int > &  targetArea,
RowOrder  order 
)

Writes an area of pixels into the framebuffer from a specified pixel array.

Parameters
srcDatathe pixels to write. It must contain at least targetArea.getWidth() * targetArea.getHeight() pixels, stored contiguously with no padding between rows.
targetAreathe area to write, in OpenGL coordinates, with its origin at the bottom-left corner of the framebuffer.
orderthe order of the rows in srcData.
Returns
true if the pixels were written, or false if the framebuffer isn't currently allocated.

The documentation for this class was generated from the following file: