@@ -22,6 +22,7 @@ extern "C" {
2222extern " 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()
236237void 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