Loading...
Searching...
No Matches
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.
 
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)
 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)
 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

enum class OpenGLFrameBuffer::RowOrder
strong
Enumerator
fromBottomUp 
fromTopDown 

Constructor & Destructor Documentation

◆ OpenGLFrameBuffer()

OpenGLFrameBuffer::OpenGLFrameBuffer ( )

Creates an uninitialised buffer.

To actually allocate the buffer, use initialise().

Referenced by initialise(), and writePixels().

◆ ~OpenGLFrameBuffer()

OpenGLFrameBuffer::~OpenGLFrameBuffer ( )

Destructor.

Member Function Documentation

◆ initialise() [1/3]

bool 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 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 OpenGLFrameBuffer::initialise ( OpenGLFrameBuffer & other)

Tries to allocate a copy of another framebuffer.

References OpenGLFrameBuffer().

◆ release()

void 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 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 OpenGLFrameBuffer::reloadSavedCopy ( OpenGLContext & context)

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

◆ isValid()

bool OpenGLFrameBuffer::isValid ( ) const
noexcept

Returns true if a valid buffer has been allocated.

◆ getWidth()

int OpenGLFrameBuffer::getWidth ( ) const
noexcept

Returns the width of the buffer.

References getWidth().

Referenced by getWidth().

◆ getHeight()

int OpenGLFrameBuffer::getHeight ( ) const
noexcept

Returns the height of the buffer.

References getHeight().

Referenced by getHeight().

◆ getTextureID()

GLuint OpenGLFrameBuffer::getTextureID ( ) const
noexcept

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

References getTextureID().

Referenced by getTextureID().

◆ makeCurrentRenderingTarget()

bool OpenGLFrameBuffer::makeCurrentRenderingTarget ( )

Selects this buffer as the current OpenGL rendering target.

References makeCurrentRenderingTarget().

Referenced by makeCurrentRenderingTarget().

◆ releaseAsRenderingTarget()

void OpenGLFrameBuffer::releaseAsRenderingTarget ( )

Deselects this buffer as the current OpenGL rendering target.

References releaseAsRenderingTarget().

Referenced by releaseAsRenderingTarget().

◆ getFrameBufferID()

GLuint OpenGLFrameBuffer::getFrameBufferID ( ) const
noexcept

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

References getFrameBufferID().

Referenced by getFrameBufferID().

◆ getCurrentFrameBufferTarget()

static GLuint OpenGLFrameBuffer::getCurrentFrameBufferTarget ( )
staticnoexcept

Returns the current frame buffer ID for the current context.

References getCurrentFrameBufferTarget().

Referenced by getCurrentFrameBufferTarget().

◆ clear()

void OpenGLFrameBuffer::clear ( Colour colour)

Clears the framebuffer with the specified colour.

References clear().

Referenced by clear().

◆ makeCurrentAndClear()

void OpenGLFrameBuffer::makeCurrentAndClear ( )

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

References makeCurrentAndClear().

Referenced by makeCurrentAndClear().

◆ readPixels()

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

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

The RowOrder parameter specifies the order of rows in the resulting array.

◆ writePixels()

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

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

The RowOrder parameter specifies the order of rows in srcData.

References OpenGLFrameBuffer().

linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram