diff --git a/Libraries/LibWeb/WebGL/OpenGLContext.cpp b/Libraries/LibWeb/WebGL/OpenGLContext.cpp index db3b9544424..b50962221ac 100644 --- a/Libraries/LibWeb/WebGL/OpenGLContext.cpp +++ b/Libraries/LibWeb/WebGL/OpenGLContext.cpp @@ -203,6 +203,24 @@ RefPtr OpenGLContext::surface() return m_painting_surface; } +u32 OpenGLContext::default_renderbuffer() const +{ +#ifdef AK_OS_MACOS + return m_impl->depth_buffer; +#else + return 0; +#endif +} + +u32 OpenGLContext::default_framebuffer() const +{ +#ifdef AK_OS_MACOS + return m_impl->framebuffer; +#else + return 0; +#endif +} + Vector s_available_webgl_extensions { // Khronos ratified WebGL Extensions "ANGLE_instanced_arrays"sv, diff --git a/Libraries/LibWeb/WebGL/OpenGLContext.h b/Libraries/LibWeb/WebGL/OpenGLContext.h index f76c25da6af..7ec8fdafdd5 100644 --- a/Libraries/LibWeb/WebGL/OpenGLContext.h +++ b/Libraries/LibWeb/WebGL/OpenGLContext.h @@ -30,6 +30,9 @@ public: RefPtr surface(); + u32 default_framebuffer() const; + u32 default_renderbuffer() const; + Vector get_supported_extensions(); private: diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateWebGLRenderingContext.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateWebGLRenderingContext.cpp index d1ad8defd86..1839751e185 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateWebGLRenderingContext.cpp +++ b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateWebGLRenderingContext.cpp @@ -1401,7 +1401,7 @@ public: if (function.name == "bindFramebuffer"sv) { generate_webgl_object_handle_unwrap(function_impl_generator, "framebuffer"sv, ""sv); function_impl_generator.append(R"~~~( - glBindFramebuffer(target, framebuffer_handle); + glBindFramebuffer(target, framebuffer ? framebuffer_handle : m_context->default_framebuffer()); m_framebuffer_binding = framebuffer; )~~~"); continue; @@ -1410,7 +1410,7 @@ public: if (function.name == "bindRenderbuffer"sv) { generate_webgl_object_handle_unwrap(function_impl_generator, "renderbuffer"sv, ""sv); function_impl_generator.append(R"~~~( - glBindRenderbuffer(target, renderbuffer_handle); + glBindRenderbuffer(target, renderbuffer ? renderbuffer_handle : m_context->default_renderbuffer()); m_renderbuffer_binding = renderbuffer; )~~~"); continue;