mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-12-07 21:59:54 +00:00
LibWeb: Implement WebGL2's readPixels with a byte offset argument
We pass it in as a `void*` since that's what this API expects when you have bound the GL_PIXEL_PACK_BUFFER buffer.
This commit is contained in:
parent
7b5940d27d
commit
25d78f7c8e
Notes:
github-actions[bot]
2025-10-30 23:21:34 +00:00
Author: https://github.com/gmta
Commit: 25d78f7c8e
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/6637
3 changed files with 15 additions and 1 deletions
|
|
@ -1496,6 +1496,19 @@ void WebGL2RenderingContextImpl::read_pixels(WebIDL::Long x, WebIDL::Long y, Web
|
|||
glReadPixelsRobustANGLE(x, y, width, height, format, type, span.size(), nullptr, nullptr, nullptr, span.data());
|
||||
}
|
||||
|
||||
void WebGL2RenderingContextImpl::read_pixels(WebIDL::Long x, WebIDL::Long y, WebIDL::Long width, WebIDL::Long height,
|
||||
WebIDL::UnsignedLong format, WebIDL::UnsignedLong type, WebIDL::LongLong offset)
|
||||
{
|
||||
m_context->make_current();
|
||||
|
||||
if (!m_pixel_pack_buffer_binding) {
|
||||
set_error(GL_INVALID_OPERATION);
|
||||
return;
|
||||
}
|
||||
|
||||
glReadPixelsRobustANGLE(x, y, width, height, format, type, 0, nullptr, nullptr, nullptr, reinterpret_cast<void*>(offset));
|
||||
}
|
||||
|
||||
void WebGL2RenderingContextImpl::active_texture(WebIDL::UnsignedLong texture)
|
||||
{
|
||||
m_context->make_current();
|
||||
|
|
|
|||
|
|
@ -132,6 +132,7 @@ public:
|
|||
void uniform_matrix3fv(GC::Root<WebGLUniformLocation> location, bool transpose, Float32List data, WebIDL::UnsignedLongLong src_offset, WebIDL::UnsignedLong src_length);
|
||||
void uniform_matrix4fv(GC::Root<WebGLUniformLocation> location, bool transpose, Float32List data, WebIDL::UnsignedLongLong src_offset, WebIDL::UnsignedLong src_length);
|
||||
void read_pixels(WebIDL::Long x, WebIDL::Long y, WebIDL::Long width, WebIDL::Long height, WebIDL::UnsignedLong format, WebIDL::UnsignedLong type, GC::Root<WebIDL::ArrayBufferView> pixels);
|
||||
void read_pixels(WebIDL::Long x, WebIDL::Long y, WebIDL::Long width, WebIDL::Long height, WebIDL::UnsignedLong format, WebIDL::UnsignedLong type, WebIDL::LongLong offset);
|
||||
void active_texture(WebIDL::UnsignedLong texture);
|
||||
void attach_shader(GC::Root<WebGLProgram> program, GC::Root<WebGLShader> shader);
|
||||
void bind_attrib_location(GC::Root<WebGLProgram> program, WebIDL::UnsignedLong index, String name);
|
||||
|
|
|
|||
|
|
@ -62,6 +62,6 @@ interface mixin WebGL2RenderingContextOverloads {
|
|||
// WebGL1:
|
||||
undefined readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, [AllowShared] ArrayBufferView? pixels);
|
||||
// WebGL2:
|
||||
[FIXME] undefined readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLintptr offset);
|
||||
undefined readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLintptr offset);
|
||||
[FIXME] undefined readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, [AllowShared] ArrayBufferView dstData, unsigned long long dstOffset);
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue