Skip to content

Commit 7e20b21

Browse files
Zaggy1024Lubrsi
authored andcommitted
LibWeb: Bind the default frame/render buffers when resetting context
This fixes the masking and warping effects on pixijs.com. Co-authored-by: Luke Wilde <luke@ladybird.org>
1 parent 3708ac5 commit 7e20b21

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

Libraries/LibWeb/WebGL/OpenGLContext.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ extern "C" {
2222
extern "C" {
2323
#include <GLES2/gl2ext_angle.h>
2424
}
25+
#include <GLES3/gl3.h>
2526

2627
// Enable WebGL if we're on MacOS and can use Metal or if we can use shareable Vulkan images
2728
#if defined(AK_OS_MACOS) || defined(USE_VULKAN_IMAGES)
@@ -236,6 +237,20 @@ void OpenGLContext::notify_content_will_change()
236237
void OpenGLContext::clear_buffer_to_default_values()
237238
{
238239
#ifdef ENABLE_WEBGL
240+
GLint original_framebuffer;
241+
GLint original_renderbuffer;
242+
GLenum framebuffer_target = GL_FRAMEBUFFER;
243+
GLenum framebuffer_binding = GL_FRAMEBUFFER_BINDING;
244+
if (m_webgl_version == WebGLVersion::WebGL2) {
245+
framebuffer_target = GL_DRAW_FRAMEBUFFER;
246+
framebuffer_binding = GL_DRAW_FRAMEBUFFER_BINDING;
247+
}
248+
glGetIntegerv(framebuffer_binding, &original_framebuffer);
249+
glGetIntegerv(GL_RENDERBUFFER_BINDING, &original_renderbuffer);
250+
251+
glBindFramebuffer(framebuffer_target, default_framebuffer());
252+
glBindRenderbuffer(GL_RENDERBUFFER, default_renderbuffer());
253+
239254
Array<GLfloat, 4> current_clear_color;
240255
glGetFloatv(GL_COLOR_CLEAR_VALUE, current_clear_color.data());
241256

@@ -260,6 +275,9 @@ void OpenGLContext::clear_buffer_to_default_values()
260275
glClearColor(current_clear_color[0], current_clear_color[1], current_clear_color[2], current_clear_color[3]);
261276
glClearDepthf(current_clear_depth);
262277
glClearStencil(current_clear_stencil);
278+
279+
glBindFramebuffer(framebuffer_target, original_framebuffer);
280+
glBindRenderbuffer(GL_RENDERBUFFER, original_renderbuffer);
263281
#endif
264282
}
265283

0 commit comments

Comments
 (0)