LibWeb/WebGL2: Implement drawElementsInstanced

This commit is contained in:
Luke Wilde 2024-12-24 18:57:49 +00:00 committed by Alexander Kalenik
parent c05fa44cf8
commit 42cce393f4
Notes: github-actions[bot] 2025-01-08 14:59:02 +00:00
2 changed files with 18 additions and 2 deletions

View file

@ -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

View file

@ -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<void*>(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<void*>(offset));
)~~~");
continue;
}
if (function.name == "getParameter"sv) {
generate_get_parameter(function_impl_generator, webgl_version);
continue;