LibWeb/WebGL: Implement createRenderbuffer

This commit is contained in:
Luke Wilde 2024-12-05 11:03:35 +00:00 committed by Alexander Kalenik
parent 135facb1b5
commit d185c2c28c
Notes: github-actions[bot] 2024-12-05 20:43:32 +00:00
4 changed files with 21 additions and 4 deletions

View file

@ -4,6 +4,7 @@
* SPDX-License-Identifier: BSD-2-Clause
*/
#include <LibJS/Runtime/Realm.h>
#include <LibWeb/Bindings/WebGLRenderbufferPrototype.h>
#include <LibWeb/WebGL/WebGLRenderbuffer.h>
@ -11,8 +12,13 @@ namespace Web::WebGL {
GC_DEFINE_ALLOCATOR(WebGLRenderbuffer);
WebGLRenderbuffer::WebGLRenderbuffer(JS::Realm& realm)
: WebGLObject(realm, 0)
GC::Ptr<WebGLRenderbuffer> WebGLRenderbuffer::create(JS::Realm& realm, GLuint handle)
{
return realm.heap().allocate<WebGLRenderbuffer>(realm, handle);
}
WebGLRenderbuffer::WebGLRenderbuffer(JS::Realm& realm, GLuint handle)
: WebGLObject(realm, handle)
{
}

View file

@ -15,10 +15,12 @@ class WebGLRenderbuffer final : public WebGLObject {
GC_DECLARE_ALLOCATOR(WebGLRenderbuffer);
public:
static GC::Ptr<WebGLRenderbuffer> create(JS::Realm& realm, GLuint handle);
virtual ~WebGLRenderbuffer();
protected:
explicit WebGLRenderbuffer(JS::Realm&);
explicit WebGLRenderbuffer(JS::Realm&, GLuint handle);
};
}

View file

@ -71,7 +71,7 @@ interface mixin WebGLRenderingContextBase {
WebGLBuffer? createBuffer();
WebGLFramebuffer? createFramebuffer();
WebGLProgram? createProgram();
[FIXME] WebGLRenderbuffer? createRenderbuffer();
WebGLRenderbuffer? createRenderbuffer();
WebGLShader? createShader(GLenum type);
WebGLTexture? createTexture();

View file

@ -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<GLchar*> strings;