/* * Copyright (c) 2025, Luke Wilde * * SPDX-License-Identifier: BSD-2-Clause */ #include #include #include #include #include #include #define GL_GLEXT_PROTOTYPES 1 #include #include namespace Web::WebGL::Extensions { GC_DEFINE_ALLOCATOR(WebGLDrawBuffers); JS::ThrowCompletionOr> WebGLDrawBuffers::create(JS::Realm& realm, GC::Ref context) { return realm.create(realm, context); } WebGLDrawBuffers::WebGLDrawBuffers(JS::Realm& realm, GC::Ref context) : PlatformObject(realm) , m_context(context) { m_context->context().request_extension("GL_EXT_draw_buffers"); } void WebGLDrawBuffers::draw_buffers_webgl(Vector buffers) { m_context->context().make_current(); glDrawBuffersEXT(buffers.size(), buffers.data()); } void WebGLDrawBuffers::initialize(JS::Realm& realm) { Base::initialize(realm); WEB_SET_PROTOTYPE_FOR_INTERFACE(WebGLDrawBuffers); } void WebGLDrawBuffers::visit_edges(Visitor& visitor) { Base::visit_edges(visitor); visitor.visit(m_context); } }