1# WebGL2 2 3The **WebGL2** module supports graphics drawing, such as processing the graphics position and color. WebGL2 provides enhanced capabilities in the rendering pipeline and shader language than WebGL. 4 5This module provides WebGL APIs that correspond to the OpenGL ES 3.0 feature set. For more information, see [WebGL™](https://www.khronos.org/registry/webgl/specs/latest/2.0/). 6 7> **NOTE** 8> 9> The initial APIs of this module are supported since API version 7. Newly added APIs will be marked with a superscript to indicate their earliest API version. 10> 11> WebGL2 complies with the OpenGL protocol and does not support multi-thread calling. 12> 13> This module can be used only in the JavaScript-compatible web-like development paradigm. 14 15 16## Invoking Method 17 18Create a **\<canvas>** component in the HML file. The following is an example: 19 20 21```html 22<!--xxx.hml--> 23<div class="container"> 24 <canvas ref="canvas1" style="width : 400px; height : 200px; background-color : lightyellow;"></canvas> 25 <button class="btn-button" onclick="BtnDraw2D">BtnDraw2D</button> 26</div> 27``` 28 29Obtain the **\<canvas>** component instance in the JS file. The following is an example: 30 31 32```js 33// Obtain the <canvas> component instance. 34const el = this.$refs.canvas1; 35// Obtain the WebGL context from the <canvas> component instance. 36const gl = el.getContext('webgl2'); 37// Call the WebGL API. 38gl.clearColor(0.0, 0.0, 0.0, 1.0); 39``` 40 41 42## Type 43 44**System capability**: SystemCapability.Graphic.Graphic2D.WebGL2 45 46**Table 1** Type 47 48| Name| Type| 49| -------- | -------- | 50| GLenum | number | 51| GLint64 | number | 52| GLuint64 | number | 53| Uint32List | array | 54 55 56## APIs 57 58**System capability**: SystemCapability.Graphic.Graphic2D.WebGL2 59 60**Table 2** APIs 61 62| Name| 63| -------- | 64| [WebGL2RenderingContextBase](#webgl2renderingcontextbase) | 65| [WebGL2RenderingContextOverloads](#webgl2renderingcontextoverloads) | 66| WebGLQuery | 67| WebGLSampler | 68| WebGLSync | 69| WebGLTransformFeedback | 70| WebGLVertexArrayObject | 71 72 73## WebGL2RenderingContextBase 74 75WebGL2RenderingContextBase 76 77 78### Attributes 79 80 | Name| Type| Mandatory| 81| -------- | -------- | -------- | 82| READ_BUFFER | GLenum | Yes| 83| UNPACK_ROW_LENGTH | GLenum | Yes| 84| UNPACK_SKIP_ROWS | GLenum | Yes| 85| UNPACK_SKIP_PIXELS | GLenum | Yes| 86| PACK_ROW_LENGTH | GLenum | Yes| 87| PACK_SKIP_ROWS | GLenum | Yes| 88| PACK_SKIP_PIXELS | GLenum | Yes| 89| COLOR | GLenum | Yes| 90| DEPTH | GLenum | Yes| 91| STENCIL | GLenum | Yes| 92| RED | GLenum | Yes| 93| RGB8 | GLenum | Yes| 94| RGBA8 | GLenum | Yes| 95| RGB10_A2 | GLenum | Yes| 96| TEXTURE_BINDING_3D | GLenum | Yes| 97| UNPACK_SKIP_IMAGES | GLenum | Yes| 98| UNPACK_IMAGE_HEIGHT | GLenum | Yes| 99| TEXTURE_3D | GLenum | Yes| 100| TEXTURE_WRAP_R | GLenum | Yes| 101| MAX_3D_TEXTURE_SIZE | GLenum | Yes| 102| UNSIGNED_INT_2_10_10_10_REV | GLenum | Yes| 103| MAX_ELEMENTS_VERTICES | GLenum | Yes| 104| MAX_ELEMENTS_INDICES | GLenum | Yes| 105| TEXTURE_MIN_LOD | GLenum | Yes| 106| TEXTURE_MAX_LOD | GLenum | Yes| 107| TEXTURE_BASE_LEVEL | GLenum | Yes| 108| TEXTURE_MAX_LEVEL | GLenum | Yes| 109| MIN | GLenum | Yes| 110| MAX | GLenum | Yes| 111| DEPTH_COMPONENT24 | GLenum | Yes| 112| MAX_TEXTURE_LOD_BIAS | GLenum | Yes| 113| TEXTURE_COMPARE_MODE | GLenum | Yes| 114| TEXTURE_COMPARE_FUNC | GLenum | Yes| 115| CURRENT_QUERY | GLenum | Yes| 116| QUERY_RESULT | GLenum | Yes| 117| QUERY_RESULT_AVAILABLE | GLenum | Yes| 118| STREAM_READ | GLenum | Yes| 119| STREAM_COPY | GLenum | Yes| 120| STATIC_READ | GLenum | Yes| 121| STATIC_COPY | GLenum | Yes| 122| DYNAMIC_READ | GLenum | Yes| 123| DYNAMIC_COPY | GLenum | Yes| 124| MAX_DRAW_BUFFERS | GLenum | Yes| 125| DRAW_BUFFER0 | GLenum | Yes| 126| DRAW_BUFFER1 | GLenum | Yes| 127| DRAW_BUFFER2 | GLenum | Yes| 128| DRAW_BUFFER3 | GLenum | Yes| 129| DRAW_BUFFER4 | GLenum | Yes| 130| DRAW_BUFFER5 | GLenum | Yes| 131| DRAW_BUFFER6 | GLenum | Yes| 132| DRAW_BUFFER7 | GLenum | Yes| 133| DRAW_BUFFER8 | GLenum | Yes| 134| DRAW_BUFFER9 | GLenum | Yes| 135| DRAW_BUFFER10 | GLenum | Yes| 136| DRAW_BUFFER11 | GLenum | Yes| 137| DRAW_BUFFER12 | GLenum | Yes| 138| DRAW_BUFFER13 | GLenum | Yes| 139| DRAW_BUFFER14 | GLenum | Yes| 140| DRAW_BUFFER15 | GLenum | Yes| 141| MAX_FRAGMENT_UNIFORM_COMPONENTS | GLenum | Yes| 142| MAX_VERTEX_UNIFORM_COMPONENTS | GLenum | Yes| 143| SAMPLER_3D | GLenum | Yes| 144| SAMPLER_2D_SHADOW | GLenum | Yes| 145| FRAGMENT_SHADER_DERIVATIVE_HINT | GLenum | Yes| 146| PIXEL_PACK_BUFFER | GLenum | Yes| 147| PIXEL_UNPACK_BUFFER | GLenum | Yes| 148| PIXEL_PACK_BUFFER_BINDING | GLenum | Yes| 149| PIXEL_UNPACK_BUFFER_BINDING | GLenum | Yes| 150| FLOAT_MAT2x3 | GLenum | Yes| 151| FLOAT_MAT2x4 | GLenum | Yes| 152| FLOAT_MAT3x2 | GLenum | Yes| 153| FLOAT_MAT3x4 | GLenum | Yes| 154| FLOAT_MAT4x2 | GLenum | Yes| 155| FLOAT_MAT4x3 | GLenum | Yes| 156| SRGB | GLenum | Yes| 157| SRGB8 | GLenum | Yes| 158| SRGB8_ALPHA8 | GLenum | Yes| 159| COMPARE_REF_TO_TEXTURE | GLenum | Yes| 160| RGBA32F | GLenum | Yes| 161| RGB32F | GLenum | Yes| 162| RGBA16F | GLenum | Yes| 163| RGB16F | GLenum | Yes| 164| VERTEX_ATTRIB_ARRAY_INTEGER | GLenum | Yes| 165| MAX_ARRAY_TEXTURE_LAYERS | GLenum | Yes| 166| MIN_PROGRAM_TEXEL_OFFSET | GLenum | Yes| 167| MAX_PROGRAM_TEXEL_OFFSET | GLenum | Yes| 168| MAX_VARYING_COMPONENTS | GLenum | Yes| 169| TEXTURE_2D_ARRAY | GLenum | Yes| 170| TEXTURE_BINDING_2D_ARRAY | GLenum | Yes| 171| R11F_G11F_B10F | GLenum | Yes| 172| UNSIGNED_INT_10F_11F_11F_REV | GLenum | Yes| 173| RGB9_E5 | GLenum | Yes| 174| UNSIGNED_INT_5_9_9_9_REV | GLenum | Yes| 175| TRANSFORM_FEEDBACK_BUFFER_MODE | GLenum | Yes| 176| MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS | GLenum | Yes| 177| TRANSFORM_FEEDBACK_VARYINGS | GLenum | Yes| 178| TRANSFORM_FEEDBACK_BUFFER_START | GLenum | Yes| 179| TRANSFORM_FEEDBACK_BUFFER_SIZE | GLenum | Yes| 180| TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN | GLenum | Yes| 181| RASTERIZER_DISCARD | GLenum | Yes| 182| MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS | GLenum | Yes| 183| MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS | GLenum | Yes| 184| INTERLEAVED_ATTRIBS | GLenum | Yes| 185| SEPARATE_ATTRIBS | GLenum | Yes| 186| TRANSFORM_FEEDBACK_BUFFER | GLenum | Yes| 187| TRANSFORM_FEEDBACK_BUFFER_BINDING | GLenum | Yes| 188| RGBA32UI | GLenum | Yes| 189| RGB32UI | GLenum | Yes| 190| RGBA16UI | GLenum | Yes| 191| RGB16UI | GLenum | Yes| 192| RGBA8UI | GLenum | Yes| 193| RGB8UI | GLenum | Yes| 194| RGBA32I | GLenum | Yes| 195| RGB32I | GLenum | Yes| 196| RGBA16I | GLenum | Yes| 197| RGB16I | GLenum | Yes| 198| RGBA8I | GLenum | Yes| 199| RGB8I | GLenum | Yes| 200| RED_INTEGER | GLenum | Yes| 201| RGB_INTEGER | GLenum | Yes| 202| RGBA_INTEGER | GLenum | Yes| 203| SAMPLER_2D_ARRAY | GLenum | Yes| 204| SAMPLER_2D_ARRAY_SHADOW | GLenum | Yes| 205| SAMPLER_CUBE_SHADOW | GLenum | Yes| 206| UNSIGNED_INT_VEC2 | GLenum | Yes| 207| UNSIGNED_INT_VEC3 | GLenum | Yes| 208| UNSIGNED_INT_VEC4 | GLenum | Yes| 209| INT_SAMPLER_2D | GLenum | Yes| 210| INT_SAMPLER_3D | GLenum | Yes| 211| INT_SAMPLER_CUBE | GLenum | Yes| 212| INT_SAMPLER_2D_ARRAY | GLenum | Yes| 213| UNSIGNED_INT_SAMPLER_2D | GLenum | Yes| 214| UNSIGNED_INT_SAMPLER_3D | GLenum | Yes| 215| UNSIGNED_INT_SAMPLER_CUBE | GLenum | Yes| 216| UNSIGNED_INT_SAMPLER_2D_ARRAY | GLenum | Yes| 217| DEPTH_COMPONENT32F | GLenum | Yes| 218| DEPTH32F_STENCIL8 | GLenum | Yes| 219| FLOAT_32_UNSIGNED_INT_24_8_REV | GLenum | Yes| 220| FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING | GLenum | Yes| 221| FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE | GLenum | Yes| 222| FRAMEBUFFER_ATTACHMENT_RED_SIZE | GLenum | Yes| 223| FRAMEBUFFER_ATTACHMENT_GREEN_SIZE | GLenum | Yes| 224| FRAMEBUFFER_ATTACHMENT_BLUE_SIZE | GLenum | Yes| 225| FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE | GLenum | Yes| 226| FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE | GLenum | Yes| 227| FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE | GLenum | Yes| 228| FRAMEBUFFER_DEFAULT | GLenum | Yes| 229| UNSIGNED_INT_24_8 | GLenum | Yes| 230| DEPTH24_STENCIL8 | GLenum | Yes| 231| UNSIGNED_NORMALIZED | GLenum | Yes| 232| DRAW_FRAMEBUFFER_BINDING | GLenum | Yes| 233| READ_FRAMEBUFFER | GLenum | Yes| 234| DRAW_FRAMEBUFFER | GLenum | Yes| 235| READ_FRAMEBUFFER_BINDING | GLenum | Yes| 236| RENDERBUFFER_SAMPLES | GLenum | Yes| 237| FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER | GLenum | Yes| 238| MAX_COLOR_ATTACHMENTS | GLenum | Yes| 239| COLOR_ATTACHMENT1 | GLenum | Yes| 240| COLOR_ATTACHMENT2 | GLenum | Yes| 241| COLOR_ATTACHMENT3 | GLenum | Yes| 242| COLOR_ATTACHMENT4 | GLenum | Yes| 243| COLOR_ATTACHMENT5 | GLenum | Yes| 244| COLOR_ATTACHMENT6 | GLenum | Yes| 245| COLOR_ATTACHMENT7 | GLenum | Yes| 246| COLOR_ATTACHMENT8 | GLenum | Yes| 247| COLOR_ATTACHMENT9 | GLenum | Yes| 248| COLOR_ATTACHMENT10 | GLenum | Yes| 249| COLOR_ATTACHMENT11 | GLenum | Yes| 250| COLOR_ATTACHMENT12 | GLenum | Yes| 251| COLOR_ATTACHMENT13 | GLenum | Yes| 252| COLOR_ATTACHMENT14 | GLenum | Yes| 253| COLOR_ATTACHMENT15 | GLenum | Yes| 254| FRAMEBUFFER_INCOMPLETE_MULTISAMPLE | GLenum | Yes| 255| MAX_SAMPLES | GLenum | Yes| 256| HALF_FLOAT | GLenum | Yes| 257| RG | GLenum | Yes| 258| RG_INTEGER | GLenum | Yes| 259| R8 | GLenum | Yes| 260| RG8 | GLenum | Yes| 261| R16F | GLenum | Yes| 262| R32F | GLenum | Yes| 263| RG16F | GLenum | Yes| 264| RG32F | GLenum | Yes| 265| R8I | GLenum | Yes| 266| R8UI | GLenum | Yes| 267| R16I | GLenum | Yes| 268| R16UI | GLenum | Yes| 269| R32I | GLenum | Yes| 270| R32UI | GLenum | Yes| 271| RG8I | GLenum | Yes| 272| RG8UI | GLenum | Yes| 273| RG16I | GLenum | Yes| 274| RG16UI | GLenum | Yes| 275| RG32I | GLenum | Yes| 276| RG32UI | GLenum | Yes| 277| VERTEX_ARRAY_BINDING | GLenum | Yes| 278| R8_SNORM | GLenum | Yes| 279| RG8_SNORM | GLenum | Yes| 280| RGB8_SNORM | GLenum | Yes| 281| SIGNED_NORMALIZED | GLenum | Yes| 282| COPY_READ_BUFFER | GLenum | Yes| 283| COPY_WRITE_BUFFER | GLenum | Yes| 284| COPY_READ_BUFFER_BINDING | GLenum | Yes| 285| COPY_WRITE_BUFFER_BINDING | GLenum | Yes| 286| UNIFORM_BUFFER | GLenum | Yes| 287| UNIFORM_BUFFER_BINDING | GLenum | Yes| 288| UNIFORM_BUFFER_START | GLenum | Yes| 289| UNIFORM_BUFFER_SIZE | GLenum | Yes| 290| MAX_VERTEX_UNIFORM_BLOCKS | GLenum | Yes| 291| MAX_FRAGMENT_UNIFORM_BLOCKS | GLenum | Yes| 292| MAX_COMBINED_UNIFORM_BLOCKS | GLenum | Yes| 293| MAX_UNIFORM_BUFFER_BINDINGS | GLenum | Yes| 294| MAX_UNIFORM_BLOCK_SIZE | GLenum | Yes| 295| MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS | GLenum | Yes| 296| MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS | GLenum | Yes| 297| UNIFORM_BUFFER_OFFSET_ALIGNMENT | GLenum | Yes| 298| ACTIVE_UNIFORM_BLOCKS | GLenum | Yes| 299| UNIFORM_TYPE | GLenum | Yes| 300| UNIFORM_SIZE | GLenum | Yes| 301| UNIFORM_BLOCK_INDEX | GLenum | Yes| 302| UNIFORM_OFFSET | GLenum | Yes| 303| UNIFORM_ARRAY_STRIDE | GLenum | Yes| 304| UNIFORM_MATRIX_STRIDE | GLenum | Yes| 305| UNIFORM_IS_ROW_MAJOR | GLenum | Yes| 306| UNIFORM_BLOCK_BINDING | GLenum | Yes| 307| UNIFORM_BLOCK_DATA_SIZE | GLenum | Yes| 308| UNIFORM_BLOCK_ACTIVE_UNIFORMS | GLenum | Yes| 309| UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES | GLenum | Yes| 310| UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER | GLenum | Yes| 311| UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER | GLenum | Yes| 312| INVALID_INDEX | GLenum | Yes| 313| MAX_VERTEX_OUTPUT_COMPONENTS | GLenum | Yes| 314| MAX_FRAGMENT_INPUT_COMPONENTS | GLenum | Yes| 315| MAX_SERVER_WAIT_TIMEOUT | GLenum | Yes| 316| OBJECT_TYPE | GLenum | Yes| 317| SYNC_CONDITION | GLenum | Yes| 318| SYNC_STATUS | GLenum | Yes| 319| SYNC_FLAGS | GLenum | Yes| 320| SYNC_FENCE | GLenum | Yes| 321| SYNC_GPU_COMMANDS_COMPLETE | GLenum | Yes| 322| UNSIGNALED | GLenum | Yes| 323| SIGNALED | GLenum | Yes| 324| ALREADY_SIGNALED | GLenum | Yes| 325| TIMEOUT_EXPIRED | GLenum | Yes| 326| CONDITION_SATISFIED | GLenum | Yes| 327| WAIT_FAILED | GLenum | Yes| 328| SYNC_FLUSH_COMMANDS_BIT | GLenum | Yes| 329| VERTEX_ATTRIB_ARRAY_DIVISOR | GLenum | Yes| 330| ANY_SAMPLES_PASSED | GLenum | Yes| 331| ANY_SAMPLES_PASSED_CONSERVATIVE | GLenum | Yes| 332| SAMPLER_BINDING | GLenum | Yes| 333| RGB10_A2UI | GLenum | Yes| 334| INT_2_10_10_10_REV | GLenum | Yes| 335| TRANSFORM_FEEDBACK | GLenum | Yes| 336| TRANSFORM_FEEDBACK_PAUSED | GLenum | Yes| 337| TRANSFORM_FEEDBACK_ACTIVE | GLenum | Yes| 338| TRANSFORM_FEEDBACK_BINDING | GLenum | Yes| 339| TEXTURE_IMMUTABLE_FORMAT | GLenum | Yes| 340| MAX_ELEMENT_INDEX | GLenum | Yes| 341| TEXTURE_IMMUTABLE_LEVELS | GLenum | Yes| 342| TIMEOUT_IGNORED | GLint64 | Yes| 343| MAX_CLIENT_WAIT_TIMEOUT_WEBGL | GLenum | Yes| 344 345 346### Methods 347 348 | Method| Return Value Type| 349| -------- | -------- | 350| copyBufferSubData(readTarget: GLenum, writeTarget: GLenum, readOffset: GLintptr, writeOffset: GLintptr, size: GLsizeiptr) | void | 351| getBufferSubData(target: GLenum, srcByteOffset: GLintptr, dstBuffer: ArrayBufferView, dstOffset?: GLuint, length?: GLuint) | void | 352| blitFramebuffer(srcX0: GLint, srcY0: GLint, srcX1: GLint, srcY1: GLint, dstX0: GLint, dstY0: GLint, dstX1: GLint, dstY1: GLint, mask: GLbitfield, filter: GLenum) | void | 353| framebufferTextureLayer(target: GLenum, attachment: GLenum, texture: WebGLTexture \| null, level: GLint, layer: GLint) | void | 354| invalidateFramebuffer(target: GLenum, attachments: GLenum[]) | void | 355| invalidateSubFramebuffer(target: GLenum, attachments: GLenum[], x: GLint, y: GLint, width: GLsizei, height: GLsizei) | void | 356| readBuffer(src: GLenum) | void | 357| getInternalformatParameter(target: GLenum, internalformat: GLenum, pname: GLenum) | any | 358| renderbufferStorageMultisample(target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei) | void | 359| texStorage2D(target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei) | void | 360| texStorage3D(target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei) | void | 361| texImage3D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, format: GLenum, type: GLenum, pboOffset: GLintptr) | void | 362| texImage3D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, format: GLenum, type: GLenum, source: TexImageSource) | void | 363| texImage3D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, format: GLenum, type: GLenum, srcData: ArrayBufferView \| null) | void | 364| texImage3D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, format: GLenum, type: GLenum, srcData: ArrayBufferView, srcOffset: GLuint) | void | 365| texSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, type: GLenum, pboOffset: GLintptr) | void | 366| texSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, type: GLenum, source: TexImageSource) | void | 367| texSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, type: GLenum, srcData: ArrayBufferView \| null, srcOffset?: GLuint) | void | 368| copyTexSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei) | void | 369| compressedTexImage3D(target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, imageSize: GLsizei, offset: GLintptr) | void | 370| compressedTexImage3D(target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, srcData: ArrayBufferView, srcOffset?: GLuint, srcLengthOverride?: GLuint) | void | 371| compressedTexSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, imageSize: GLsizei, offset: GLintptr) | void | 372| compressedTexSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, srcData: ArrayBufferView, srcOffset?: GLuint, srcLengthOverride?: GLuint) | void | 373| getFragDataLocation(program: WebGLProgram, name: string) | GLint | 374| uniform1ui(location: WebGLUniformLocation \| null, v0: GLuint) | void | 375| uniform2ui(location: WebGLUniformLocation \| null, v0: GLuint, v1: GLuint) | void | 376| uniform3ui(location: WebGLUniformLocation \| null, v0: GLuint, v1: GLuint, v2: GLuint) | void | 377| uniform4ui(location: WebGLUniformLocation \| null, v0: GLuint, v1: GLuint, v2: GLuint, v3: GLuint) | void | 378| uniform1uiv(location: WebGLUniformLocation \| null, data: Uint32List, srcOffset?: GLuint, srcLength?: GLuint) | void | 379| uniform2uiv(location: WebGLUniformLocation \| null, data: Uint32List, srcOffset?: GLuint, srcLength?: GLuint) | void | 380| uniform3uiv(location: WebGLUniformLocation \| null, data: Uint32List, srcOffset?: GLuint, srcLength?: GLuint) | void | 381| uniform4uiv(location: WebGLUniformLocation \| null, data: Uint32List, srcOffset?: GLuint, srcLength?: GLuint) | void | 382| uniformMatrix3x2fv(location: WebGLUniformLocation \| null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint) | void | 383| uniformMatrix4x2fv(location: WebGLUniformLocation \| null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint) | void | 384| uniformMatrix2x3fv(location: WebGLUniformLocation \| null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint) | void | 385| uniformMatrix4x3fv(location: WebGLUniformLocation \| null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint) | void | 386| uniformMatrix2x4fv(location: WebGLUniformLocation \| null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint) | void | 387| uniformMatrix3x4fv(location: WebGLUniformLocation \| null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint) | void | 388| vertexAttribI4i(index: GLuint, x: GLint, y: GLint, z: GLint, w: GLint) | void | 389| vertexAttribI4iv(index: GLuint, values: Int32List) | void | 390| vertexAttribI4ui(index: GLuint, x: GLuint, y: GLuint, z: GLuint, w: GLuint) | void | 391| vertexAttribI4uiv(index: GLuint, values: Uint32List) | void | 392| vertexAttribIPointer(index: GLuint, size: GLint, type: GLenum, stride: GLsizei, offset: GLintptr) | void | 393| vertexAttribDivisor(index: GLuint, divisor: GLuint) | void | 394| drawArraysInstanced(mode: GLenum, first: GLint, count: GLsizei, instanceCount: GLsizei) | void | 395| drawElementsInstanced(mode: GLenum, count: GLsizei, type: GLenum, offset: GLintptr, instanceCount: GLsizei) | void | 396| drawRangeElements(mode: GLenum, start: GLuint, end: GLuint, count: GLsizei, type: GLenum, offset: GLintptr) | void | 397| drawBuffers(buffers: GLenum[]) | void | 398| clearBufferfv(buffer: GLenum, drawbuffer: GLint, values: Float32List, srcOffset?: GLuint) | void | 399| clearBufferiv(buffer: GLenum, drawbuffer: GLint, values: Int32List, srcOffset?: GLuint) | void | 400| clearBufferuiv(buffer: GLenum, drawbuffer: GLint, values: Uint32List, srcOffset?: GLuint) | void | 401| clearBufferfi(buffer: GLenum, drawbuffer: GLint, depth: GLfloat, stencil: GLint) | void | 402| createQuery() | WebGLQuery \| null | 403| deleteQuery(query: WebGLQuery \| null) | void | 404| isQuery(query: WebGLQuery \| null) | GLboolean | 405| beginQuery(target: GLenum, query: WebGLQuery) | void | 406| endQuery(target: GLenum) | void | 407| getQuery(target: GLenum, pname: GLenum) | WebGLQuery \| null | 408| getQueryParameter(query: WebGLQuery, pname: GLenum) | any | 409| createSampler() | WebGLSampler \| null | 410| deleteSampler(sampler: WebGLSampler \| null) | void | 411| isSampler(sampler: WebGLSampler \| null) | GLboolean | 412| bindSampler(unit: GLuint, sampler: WebGLSampler \| null) | void | 413| samplerParameteri(sampler: WebGLSampler, pname: GLenum, param: GLint) | void | 414| samplerParameterf(sampler: WebGLSampler, pname: GLenum, param: GLfloat) | void; | 415| getSamplerParameter(sampler: WebGLSampler, pname: GLenum) | any | 416| fenceSync(condition: GLenum, flags: GLbitfield) | WebGLSync \| null | 417| isSync(sync: WebGLSync \| null) | GLboolean | 418| deleteSync(sync: WebGLSync \| null) | void | 419| clientWaitSync(sync: WebGLSync, flags: GLbitfield, timeout: GLuint64) | GLenum | 420| waitSync(sync: WebGLSync, flags: GLbitfield, timeout: GLint64) | void | 421| getSyncParameter(sync: WebGLSync, pname: GLenum) | any | 422| createTransformFeedback() | WebGLTransformFeedback \| null | 423| deleteTransformFeedback(tf: WebGLTransformFeedback \| null) | void | 424| isTransformFeedback(tf: WebGLTransformFeedback \| null) | GLboolean | 425| bindTransformFeedback(target: GLenum, tf: WebGLTransformFeedback \| null) | void | 426| beginTransformFeedback(primitiveMode: GLenum) | void | 427| endTransformFeedback() | void | 428| transformFeedbackVaryings(program: WebGLProgram, varyings: string[], bufferMode: GLenum) | void | 429| getTransformFeedbackVarying(program: WebGLProgram, index: GLuint) | WebGLActiveInfo \| null | 430| pauseTransformFeedback() | void | 431| resumeTransformFeedback() | void | 432| bindBufferBase(target: GLenum, index: GLuint, buffer: WebGLBuffer \| null) | void | 433| bindBufferRange(target: GLenum, index: GLuint, buffer: WebGLBuffer \| null, offset: GLintptr, size: GLsizeiptr) | void | 434| getIndexedParameter(target: GLenum, index: GLuint) | any | 435| getUniformIndices(program: WebGLProgram, uniformNames: string[]) | GLuint[] \| null | 436| getActiveUniforms(program: WebGLProgram, uniformIndices: GLuint[], pname: GLenum) | any | 437| getUniformBlockIndex(program: WebGLProgram, uniformBlockName: string) | GLuint | 438| getActiveUniformBlockParameter(program: WebGLProgram, uniformBlockIndex: GLuint, pname: GLenum) | any | 439| getActiveUniformBlockName(program: WebGLProgram, uniformBlockIndex: GLuint) | string \| null | 440| uniformBlockBinding(program: WebGLProgram, uniformBlockIndex: GLuint, uniformBlockBinding: GLuint) | void | 441| createVertexArray() | WebGLVertexArrayObject \| null | 442| deleteVertexArray(vertexArray: WebGLVertexArrayObject \| null) | void | 443| isVertexArray(vertexArray: WebGLVertexArrayObject \| null) | GLboolean | 444| bindVertexArray(array: WebGLVertexArrayObject \| null) | void | 445 446 447## WebGL2RenderingContextOverloads 448 449WebGL2RenderingContextOverloads 450 451 | Method| Return Value Type| 452| -------- | -------- | 453| bufferData(target: GLenum, size: GLsizeiptr, usage: GLenum) | void | 454| bufferData(target: GLenum, srcData: BufferSource \| null, usage: GLenum) | void | 455| bufferSubData(target: GLenum, dstByteOffset: GLintptr, srcData: BufferSource) | void | 456| bufferData(target: GLenum, srcData: ArrayBufferView, usage: GLenum, srcOffset: GLuint, length?: GLuint) | void | 457| bufferSubData(target: GLenum, dstByteOffset: GLintptr, srcData: ArrayBufferView, srcOffset: GLuint, length?: GLuint) | void | 458| texImage2D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type: GLenum, pixels: ArrayBufferView \| null) | void | 459| texImage2D(target: GLenum, level: GLint, internalformat: GLint, format: GLenum, type: GLenum, source: TexImageSource) | void | 460| texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, pixels: ArrayBufferView \| null) | void | 461| texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, format: GLenum, type: GLenum, source: TexImageSource) | void | 462| texImage2D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type: GLenum, pboOffset: GLintptr) | void | 463| texImage2D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type: GLenum, source: TexImageSource) | void | 464| texImage2D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type: GLenum, srcData: ArrayBufferView, srcOffset: GLuint) | void | 465| texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, pboOffset: GLintptr) | void | 466| texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, source: TexImageSource) | void | 467| texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, srcData: ArrayBufferView, srcOffset: GLuint) | void | 468| compressedTexImage2D(target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, border: GLint, imageSize: GLsizei, offset: GLintptr) | void | 469| compressedTexImage2D(target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, border: GLint, srcData: ArrayBufferView, srcOffset?: GLuint, srcLengthOverride?: GLuint) | void | 470| compressedTexSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, imageSize: GLsizei, offset: GLintptr) | void | 471| compressedTexSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, srcData: ArrayBufferView, srcOffset?: GLuint, srcLengthOverride?: GLuint) | void | 472| uniform1fv(location: WebGLUniformLocation \| null, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint) | void | 473| uniform2fv(location: WebGLUniformLocation \| null, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint) | void | 474| uniform3fv(location: WebGLUniformLocation \| null, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint) | void | 475| uniform4fv(location: WebGLUniformLocation \| null, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint) | void | 476| uniform1iv(location: WebGLUniformLocation \| null, data: Int32List, srcOffset?: GLuint, srcLength?: GLuint) | void | 477| uniform2iv(location: WebGLUniformLocation \| null, data: Int32List, srcOffset?: GLuint, srcLength?: GLuint) | void | 478| uniform3iv(location: WebGLUniformLocation \| null, data: Int32List, srcOffset?: GLuint, srcLength?: GLuint) | void | 479| uniform4iv(location: WebGLUniformLocation \| null, data: Int32List, srcOffset?: GLuint, srcLength?: GLuint) | void | 480| uniformMatrix2fv(location: WebGLUniformLocation \| null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint) | void | 481| uniformMatrix3fv(location: WebGLUniformLocation \| null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint) | void | 482| uniformMatrix4fv(location: WebGLUniformLocation \| null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint) | void | 483| readPixels(x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, dstData: ArrayBufferView \| null) | void | 484| readPixels(x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, offset: GLintptr) | void | 485| readPixels(x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, dstData: ArrayBufferView, dstOffset: GLuint) | void | 486