Flutter Linux Embedder
fl_framebuffer.cc File Reference
#include "fl_framebuffer.h"
#include <epoxy/gl.h>

Go to the source code of this file.

Classes

struct  _FlFramebuffer
 

Functions

static void fl_framebuffer_dispose (GObject *object)
 
static void fl_framebuffer_class_init (FlFramebufferClass *klass)
 
static void fl_framebuffer_init (FlFramebuffer *self)
 
FlFramebuffer * fl_framebuffer_new (GLint format, size_t width, size_t height)
 
GLuint fl_framebuffer_get_id (FlFramebuffer *self)
 
GLuint fl_framebuffer_get_texture_id (FlFramebuffer *self)
 
GLenum fl_framebuffer_get_target (FlFramebuffer *self)
 
size_t fl_framebuffer_get_width (FlFramebuffer *self)
 
size_t fl_framebuffer_get_height (FlFramebuffer *self)
 

Function Documentation

◆ fl_framebuffer_class_init()

static void fl_framebuffer_class_init ( FlFramebufferClass *  klass)
static

Definition at line 36 of file fl_framebuffer.cc.

36  {
37  G_OBJECT_CLASS(klass)->dispose = fl_framebuffer_dispose;
38 }

References fl_framebuffer_dispose().

◆ fl_framebuffer_dispose()

static void fl_framebuffer_dispose ( GObject *  object)
static

Definition at line 27 of file fl_framebuffer.cc.

27  {
28  FlFramebuffer* self = FL_FRAMEBUFFER(object);
29 
30  glDeleteFramebuffers(1, &self->framebuffer_id);
31  glDeleteTextures(1, &self->texture_id);
32 
33  G_OBJECT_CLASS(fl_framebuffer_parent_class)->dispose(object);
34 }

Referenced by fl_framebuffer_class_init().

◆ fl_framebuffer_get_height()

size_t fl_framebuffer_get_height ( FlFramebuffer *  framebuffer)

fl_framebuffer_get_height: @framebuffer: an #FlFramebuffer.

Gets the height of the framebuffer in pixels.

Returns: height in pixels.

Definition at line 85 of file fl_framebuffer.cc.

85  {
86  return self->height;
87 }

Referenced by render_with_blit(), and render_with_textures().

◆ fl_framebuffer_get_id()

GLuint fl_framebuffer_get_id ( FlFramebuffer *  framebuffer)

fl_framebuffer_get_id: @framebuffer: an #FlFramebuffer.

Gets the ID for this framebuffer.

Returns: OpenGL framebuffer id or 0 if creation failed.

Definition at line 69 of file fl_framebuffer.cc.

69  {
70  return self->framebuffer_id;
71 }

Referenced by fl_renderer_create_backing_store(), and render_with_blit().

◆ fl_framebuffer_get_target()

GLenum fl_framebuffer_get_target ( FlFramebuffer *  framebuffer)

fl_framebuffer_get_target: @framebuffer: an #FlFramebuffer.

Gets target texture (example GL_TEXTURE_2D or GL_TEXTURE_RECTANGLE).

Returns: target texture.

Definition at line 77 of file fl_framebuffer.cc.

77  {
78  return GL_TEXTURE_2D;
79 }

◆ fl_framebuffer_get_texture_id()

GLuint fl_framebuffer_get_texture_id ( FlFramebuffer *  framebuffer)

fl_framebuffer_get_texture_id: @framebuffer: an #FlFramebuffer.

Gets the ID of the texture associated with this framebuffer.

Returns: OpenGL texture id or 0 if creation failed.

Definition at line 73 of file fl_framebuffer.cc.

73  {
74  return self->texture_id;
75 }

Referenced by render_with_textures().

◆ fl_framebuffer_get_width()

size_t fl_framebuffer_get_width ( FlFramebuffer *  framebuffer)

fl_framebuffer_get_width: @framebuffer: an #FlFramebuffer.

Gets the width of the framebuffer in pixels.

Returns: width in pixels.

Definition at line 81 of file fl_framebuffer.cc.

81  {
82  return self->width;
83 }

Referenced by render_with_blit(), and render_with_textures().

◆ fl_framebuffer_init()

static void fl_framebuffer_init ( FlFramebuffer *  self)
static

Definition at line 40 of file fl_framebuffer.cc.

40 {}

◆ fl_framebuffer_new()

FlFramebuffer* fl_framebuffer_new ( GLint  format,
size_t  width,
size_t  height 
)

FlFramebuffer:

#FlFramebuffer creates framebuffers and their backing textures for use by the Flutter compositor. fl_framebuffer_new: @format: format, e.g. GL_RGB, GL_BGR @width: width of texture. @height: height of texture.

Creates a new frame buffer. Requires a valid OpenGL context to create.

Returns: a new #FlFramebuffer.

Definition at line 42 of file fl_framebuffer.cc.

42  {
43  FlFramebuffer* provider =
44  FL_FRAMEBUFFER(g_object_new(fl_framebuffer_get_type(), nullptr));
45 
46  provider->width = width;
47  provider->height = height;
48 
49  glGenTextures(1, &provider->texture_id);
50  glGenFramebuffers(1, &provider->framebuffer_id);
51 
52  glBindFramebuffer(GL_FRAMEBUFFER, provider->framebuffer_id);
53 
54  glBindTexture(GL_TEXTURE_2D, provider->texture_id);
55  glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
56  glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
57  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
58  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
59  glTexImage2D(GL_TEXTURE_2D, 0, format, width, height, 0, format,
60  GL_UNSIGNED_BYTE, NULL);
61  glBindTexture(GL_TEXTURE_2D, 0);
62 
63  glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
64  provider->texture_id, 0);
65 
66  return provider;
67 }

References format, height, and width.

Referenced by fl_renderer_create_backing_store(), and TEST().

height
const uint8_t uint32_t uint32_t * height
Definition: fl_pixel_buffer_texture_test.cc:39
fl_framebuffer_dispose
static void fl_framebuffer_dispose(GObject *object)
Definition: fl_framebuffer.cc:27
width
const uint8_t uint32_t * width
Definition: fl_pixel_buffer_texture_test.cc:38
format
uint32_t uint32_t * format
Definition: fl_texture_registrar_test.cc:41