diff --git a/Libraries/LibWeb/WebGL/WebGLRenderbuffer.cpp b/Libraries/LibWeb/WebGL/WebGLRenderbuffer.cpp index d1d951842fd..3d79d1ca20f 100644 --- a/Libraries/LibWeb/WebGL/WebGLRenderbuffer.cpp +++ b/Libraries/LibWeb/WebGL/WebGLRenderbuffer.cpp @@ -4,6 +4,7 @@ * SPDX-License-Identifier: BSD-2-Clause */ +#include #include #include @@ -11,8 +12,13 @@ namespace Web::WebGL { GC_DEFINE_ALLOCATOR(WebGLRenderbuffer); -WebGLRenderbuffer::WebGLRenderbuffer(JS::Realm& realm) - : WebGLObject(realm, 0) +GC::Ptr WebGLRenderbuffer::create(JS::Realm& realm, GLuint handle) +{ + return realm.heap().allocate(realm, handle); +} + +WebGLRenderbuffer::WebGLRenderbuffer(JS::Realm& realm, GLuint handle) + : WebGLObject(realm, handle) { } diff --git a/Libraries/LibWeb/WebGL/WebGLRenderbuffer.h b/Libraries/LibWeb/WebGL/WebGLRenderbuffer.h index 0fa456cb20a..826c2800f44 100644 --- a/Libraries/LibWeb/WebGL/WebGLRenderbuffer.h +++ b/Libraries/LibWeb/WebGL/WebGLRenderbuffer.h @@ -15,10 +15,12 @@ class WebGLRenderbuffer final : public WebGLObject { GC_DECLARE_ALLOCATOR(WebGLRenderbuffer); public: + static GC::Ptr create(JS::Realm& realm, GLuint handle); + virtual ~WebGLRenderbuffer(); protected: - explicit WebGLRenderbuffer(JS::Realm&); + explicit WebGLRenderbuffer(JS::Realm&, GLuint handle); }; } diff --git a/Libraries/LibWeb/WebGL/WebGLRenderingContextBase.idl b/Libraries/LibWeb/WebGL/WebGLRenderingContextBase.idl index 503286bf914..4d03165c212 100644 --- a/Libraries/LibWeb/WebGL/WebGLRenderingContextBase.idl +++ b/Libraries/LibWeb/WebGL/WebGLRenderingContextBase.idl @@ -71,7 +71,7 @@ interface mixin WebGLRenderingContextBase { WebGLBuffer? createBuffer(); WebGLFramebuffer? createFramebuffer(); WebGLProgram? createProgram(); - [FIXME] WebGLRenderbuffer? createRenderbuffer(); + WebGLRenderbuffer? createRenderbuffer(); WebGLShader? createShader(GLenum type); WebGLTexture? createTexture(); diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateWebGLRenderingContext.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateWebGLRenderingContext.cpp index 54da0467af7..4c4b7477cc8 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateWebGLRenderingContext.cpp +++ b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateWebGLRenderingContext.cpp @@ -424,6 +424,15 @@ public: continue; } + if (function.name == "createRenderbuffer"sv) { + function_impl_generator.append(R"~~~( + GLuint handle = 0; + glGenRenderbuffers(1, &handle); + return WebGLRenderbuffer::create(m_realm, handle); +)~~~"); + continue; + } + if (function.name == "shaderSource"sv) { function_impl_generator.append(R"~~~( Vector strings;