31 FlFramebuffer*
self = FL_FRAMEBUFFER(
object);
33 glDeleteFramebuffers(1, &self->framebuffer_id);
34 glDeleteTextures(1, &self->texture_id);
35 glDeleteRenderbuffers(1, &self->depth_stencil);
37 G_OBJECT_CLASS(fl_framebuffer_parent_class)->dispose(
object);
47 FlFramebuffer* provider =
48 FL_FRAMEBUFFER(g_object_new(fl_framebuffer_get_type(),
nullptr));
50 provider->width =
width;
53 glGenTextures(1, &provider->texture_id);
54 glGenFramebuffers(1, &provider->framebuffer_id);
56 glBindFramebuffer(GL_FRAMEBUFFER, provider->framebuffer_id);
58 glBindTexture(GL_TEXTURE_2D, provider->texture_id);
59 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
60 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
61 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
62 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
64 GL_UNSIGNED_BYTE, NULL);
65 glBindTexture(GL_TEXTURE_2D, 0);
67 glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
68 provider->texture_id, 0);
70 glGenRenderbuffers(1, &provider->depth_stencil);
71 glBindRenderbuffer(GL_RENDERBUFFER, provider->depth_stencil);
72 glRenderbufferStorage(GL_RENDERBUFFER,
77 glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT,
78 GL_RENDERBUFFER, provider->depth_stencil);
79 glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT,
80 GL_RENDERBUFFER, provider->depth_stencil);
86 return self->framebuffer_id;
90 return self->texture_id;
G_DEFINE_TYPE(FlBasicMessageChannelResponseHandle, fl_basic_message_channel_response_handle, G_TYPE_OBJECT) static void fl_basic_message_channel_response_handle_dispose(GObject *object)
size_t fl_framebuffer_get_height(FlFramebuffer *self)
static void fl_framebuffer_init(FlFramebuffer *self)
GLuint fl_framebuffer_get_id(FlFramebuffer *self)
GLenum fl_framebuffer_get_target(FlFramebuffer *self)
static void fl_framebuffer_class_init(FlFramebufferClass *klass)
static void fl_framebuffer_dispose(GObject *object)
size_t fl_framebuffer_get_width(FlFramebuffer *self)
GLuint fl_framebuffer_get_texture_id(FlFramebuffer *self)
FlFramebuffer * fl_framebuffer_new(GLint format, size_t width, size_t height)
const uint8_t uint32_t uint32_t * height
const uint8_t uint32_t * width
uint32_t uint32_t * format