diff --git a/Libraries/LibWeb/WebGL/WebGL2RenderingContextBase.idl b/Libraries/LibWeb/WebGL/WebGL2RenderingContextBase.idl index 9076ae47dd..74c0c5d3a8 100644 --- a/Libraries/LibWeb/WebGL/WebGL2RenderingContextBase.idl +++ b/Libraries/LibWeb/WebGL/WebGL2RenderingContextBase.idl @@ -360,12 +360,12 @@ interface mixin WebGL2RenderingContextBase { [FIXME] undefined vertexAttribI4iv(GLuint index, Int32List values); [FIXME] undefined vertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); [FIXME] undefined vertexAttribI4uiv(GLuint index, Uint32List values); - [FIXME] undefined vertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); + undefined vertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); // Writing to the drawing buffer undefined vertexAttribDivisor(GLuint index, GLuint divisor); [FIXME] undefined drawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instanceCount); - [FIXME] undefined drawElementsInstanced(GLenum mode, GLsizei count, GLenum type, GLintptr offset, GLsizei instanceCount); + undefined drawElementsInstanced(GLenum mode, GLsizei count, GLenum type, GLintptr offset, GLsizei instanceCount); [FIXME] undefined drawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, GLintptr offset); // Multiple Render Targets diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateWebGLRenderingContext.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateWebGLRenderingContext.cpp index 79951ce8d2..1e0486366c 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateWebGLRenderingContext.cpp +++ b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateWebGLRenderingContext.cpp @@ -32,6 +32,7 @@ static bool gl_function_modifies_framebuffer(StringView function_name) return function_name == "clear"sv || function_name == "drawArrays"sv || function_name == "drawElements"sv + || function_name == "drawElementsInstanced"sv || function_name == "blitFramebuffer"sv || function_name == "invalidateFramebuffer"sv; } @@ -998,6 +999,14 @@ public: continue; } + if (function.name == "drawElementsInstanced"sv) { + function_impl_generator.append(R"~~~( + glDrawElementsInstanced(mode, count, type, reinterpret_cast(offset), instance_count); + needs_to_present(); +)~~~"); + continue; + } + if (function.name == "drawBuffers"sv) { function_impl_generator.append(R"~~~( glDrawBuffers(buffers.size(), buffers.data()); @@ -1125,6 +1134,13 @@ public: continue; } + if (function.name == "vertexAttribIPointer"sv) { + function_impl_generator.append(R"~~~( + glVertexAttribIPointer(index, size, type, stride, reinterpret_cast(offset)); +)~~~"); + continue; + } + if (function.name == "getParameter"sv) { generate_get_parameter(function_impl_generator, webgl_version); continue;