#import typedef (ImageBitmap or ImageData or HTMLImageElement or HTMLCanvasElement or HTMLVideoElement // FIXME: OffscreenCanvas or // FIXME: VideoFrame ) TexImageSource; // FIXME: BufferSource should be a Int32Array typedef (BufferSource or sequence) Int32List; // https://registry.khronos.org/webgl/specs/latest/1.0/#5.14 interface mixin WebGLRenderingContextOverloads { undefined bufferData(GLenum target, GLsizeiptr size, GLenum usage); // FIXME: BufferSource is really a AllowSharedBufferSource undefined bufferData(GLenum target, BufferSource? data, GLenum usage); undefined bufferSubData(GLenum target, GLintptr offset, BufferSource data); [FIXME] undefined compressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, [AllowShared] ArrayBufferView data); [FIXME] undefined compressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, [AllowShared] ArrayBufferView data); undefined readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, [AllowShared] ArrayBufferView? pixels); undefined texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, [AllowShared] ArrayBufferView? pixels); undefined texImage2D(GLenum target, GLint level, GLint internalformat, GLenum format, GLenum type, TexImageSource source); // May throw DOMException undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, [AllowShared] ArrayBufferView? pixels); undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLenum format, GLenum type, TexImageSource source); // May throw DOMException undefined uniform1fv(WebGLUniformLocation? location, Float32List v); undefined uniform2fv(WebGLUniformLocation? location, Float32List v); undefined uniform3fv(WebGLUniformLocation? location, Float32List v); undefined uniform4fv(WebGLUniformLocation? location, Float32List v); undefined uniform1iv(WebGLUniformLocation? location, Int32List v); undefined uniform2iv(WebGLUniformLocation? location, Int32List v); undefined uniform3iv(WebGLUniformLocation? location, Int32List v); undefined uniform4iv(WebGLUniformLocation? location, Int32List v); // FIXME: Float32Array should be a Float32List undefined uniformMatrix2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List value); undefined uniformMatrix3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List value); undefined uniformMatrix4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List value); };