58 FL_FRAMEBUFFER(g_object_new(fl_framebuffer_get_type(),
nullptr));
63 glGenTextures(1, &
self->texture_id);
64 glGenFramebuffers(1, &
self->framebuffer_id);
66 glBindFramebuffer(GL_FRAMEBUFFER,
self->framebuffer_id);
68 glBindTexture(GL_TEXTURE_2D,
self->texture_id);
69 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
70 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
71 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
72 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
74 GL_UNSIGNED_BYTE, NULL);
75 glBindTexture(GL_TEXTURE_2D, 0);
81 glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
84 glGenRenderbuffers(1, &
self->depth_stencil);
85 glBindRenderbuffer(GL_RENDERBUFFER,
self->depth_stencil);
86 glRenderbufferStorage(GL_RENDERBUFFER,
91 glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT,
92 GL_RENDERBUFFER,
self->depth_stencil);
93 glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT,
94 GL_RENDERBUFFER,
self->depth_stencil);
105 g_return_val_if_fail(FL_IS_FRAMEBUFFER(
self),
nullptr);
106 g_return_val_if_fail(
self->image !=
nullptr,
nullptr);
108 FlFramebuffer* sibling =
109 FL_FRAMEBUFFER(g_object_new(fl_framebuffer_get_type(),
nullptr));
111 sibling->width =
self->width;
112 sibling->height =
self->height;
113 sibling->image = FL_EGL_IMAGE(g_object_ref(
self->image));
116 glGenTextures(1, &sibling->texture_id);
117 glBindTexture(GL_TEXTURE_2D, sibling->texture_id);
118 glEGLImageTargetTexture2DOES(GL_TEXTURE_2D,
122 glGenFramebuffers(1, &sibling->framebuffer_id);
123 GLint saved_framebuffer_binding;
124 glGetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING, &saved_framebuffer_binding);
125 glBindFramebuffer(GL_DRAW_FRAMEBUFFER, sibling->framebuffer_id);
126 glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
127 sibling->texture_id, 0);
128 glBindFramebuffer(GL_DRAW_FRAMEBUFFER, saved_framebuffer_binding);
uint32_t uint32_t * format