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