JNGL
Easy to use cross-platform 2D game library
Loading...
Searching...
No Matches
Classes | Public Member Functions | Static Public Member Functions | List of all members
FrameBuffer Class Reference

Image framebuffer object which can be rendered on. More...

#include <jngl/FrameBuffer.hpp>

Classes

struct  Context
 Lifetime object when the FrameBuffer is in use. More...
 

Public Member Functions

 FrameBuffer (Pixels width, Pixels height)
 Creates a framebuffer object with width times height actual pixels.
 
 FrameBuffer (ScaleablePixels width, ScaleablePixels height)
 Creates a framebuffer object with width times height scalable pixels.
 
 FrameBuffer (std::array< Pixels, 2 > size)
 Creates a framebuffer object with size[0] times size[1] pixels.
 
 FrameBuffer (const FrameBuffer &)=delete
 
FrameBufferoperator= (const FrameBuffer &)=delete
 
 FrameBuffer (FrameBuffer &&)=default
 
FrameBufferoperator= (FrameBuffer &&)=default
 
Context use () const
 Starts drawing on the FrameBuffer as long as Context is alive.
 
void draw (Vec2 position, const ShaderProgram *=nullptr) const
 Draws the framebuffer image to the screen.
 
void draw (double x, double y) const
 
void draw (Mat3 modelview, const ShaderProgram *=nullptr) const
 
void drawMesh (const std::vector< Vertex > &vertexes, const ShaderProgram *=nullptr) const
 Draws a list of triangles with the framebuffer's texture on it.
 
Vec2 getSize () const
 Returns the size in screen pixels.
 
uint32_t getTextureID () const
 Returns the OpenGL texture ID of the associated image buffer.
 

Static Public Member Functions

static void clear ()
 Clear the framebuffer with the color set by jngl::setBackgroundColor.
 

Detailed Description

Image framebuffer object which can be rendered on.

Example:

FrameBuffer foo(300_px, 200_px);
// ...
{
auto context = foo.use();
context.clear(0xff0000_rgb);
jngl::print("Hello World!", jngl::Vec2(-100, -20));
} // jngl::FrameBuffer::Context is destroyed, now drawing on the main buffer again
// ...
foo.draw(jngl::modelview()); // draws a red rectangle with Hello World! on it
Image framebuffer object which can be rendered on.
Two-dimensional vector.
Definition Vec2.hpp:36
void print(const std::string &text, jngl::Vec2 position)
Print text at position.
jngl::Mat3 modelview()
Returns a copy of the global ModelView matrix.

Definition at line 35 of file FrameBuffer.hpp.

Member Function Documentation

◆ use()

Context use ( ) const

Starts drawing on the FrameBuffer as long as Context is alive.

The modelview matrix gets adjusted so that (0, 0) is in the center of the FrameBuffer.

◆ clear()

static void clear ( )
static

Clear the framebuffer with the color set by jngl::setBackgroundColor.

Deprecated
use jngl::FrameBuffer::Context::clear(Color) instead

◆ getTextureID()

uint32_t getTextureID ( ) const

Returns the OpenGL texture ID of the associated image buffer.

While this is an implementation detail, it can be useful if you want to draw the GL_TEXTURE_2D object yourself or need to pass it to another library. The return type is equivalent to GLuint.


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