1 /* 2 * Copyright (c) 2021-2023 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef WEBGL2_RENDERING_CONTEXT_BASE_H 17 #define WEBGL2_RENDERING_CONTEXT_BASE_H 18 19 #include <map> 20 #include <GLES3/gl3.h> 21 #include "securec.h" 22 #include "napi/n_exporter.h" 23 24 #ifdef __cplusplus 25 extern "C" { 26 #endif 27 28 namespace OHOS { 29 namespace Rosen { 30 class WebGL2RenderingContextBase { 31 public: 32 static const GLenum READ_BUFFER = 0x0C02; 33 static const GLenum UNPACK_ROW_LENGTH = 0x0CF2; 34 static const GLenum UNPACK_SKIP_ROWS = 0x0CF3; 35 static const GLenum UNPACK_SKIP_PIXELS = 0x0CF4; 36 static const GLenum PACK_ROW_LENGTH = 0x0D02; 37 static const GLenum PACK_SKIP_ROWS = 0x0D03; 38 static const GLenum PACK_SKIP_PIXELS = 0x0D04; 39 static const GLenum COLOR = 0x1800; 40 static const GLenum DEPTH = 0x1801; 41 static const GLenum STENCIL = 0x1802; 42 static const GLenum RED = 0x1903; 43 static const GLenum RGB8 = 0x8051; 44 static const GLenum RGBA8 = 0x8058; 45 static const GLenum RGB10_A2 = 0x8059; 46 static const GLenum TEXTURE_BINDING_3D = 0x806A; 47 static const GLenum UNPACK_SKIP_IMAGES = 0x806D; 48 static const GLenum UNPACK_IMAGE_HEIGHT = 0x806E; 49 static const GLenum TEXTURE_3D = 0x806F; 50 static const GLenum TEXTURE_WRAP_R = 0x8072; 51 static const GLenum MAX_3D_TEXTURE_SIZE = 0x8073; 52 static const GLenum UNSIGNED_INT_2_10_10_10_REV = 0x8368; 53 static const GLenum MAX_ELEMENTS_VERTICES = 0x80E8; 54 static const GLenum MAX_ELEMENTS_INDICES = 0x80E9; 55 static const GLenum TEXTURE_MIN_LOD = 0x813A; 56 static const GLenum TEXTURE_MAX_LOD = 0x813B; 57 static const GLenum TEXTURE_BASE_LEVEL = 0x813C; 58 static const GLenum TEXTURE_MAX_LEVEL = 0x813D; 59 static const GLenum MIN = 0x8007; 60 static const GLenum MAX = 0x8008; 61 static const GLenum DEPTH_COMPONENT24 = 0x81A6; 62 static const GLenum MAX_TEXTURE_LOD_BIAS = 0x84FD; 63 static const GLenum TEXTURE_COMPARE_MODE = 0x884C; 64 static const GLenum TEXTURE_COMPARE_FUNC = 0x884D; 65 static const GLenum CURRENT_QUERY = 0x8865; 66 static const GLenum QUERY_RESULT = 0x8866; 67 static const GLenum QUERY_RESULT_AVAILABLE = 0x8867; 68 static const GLenum STREAM_READ = 0x88E1; 69 static const GLenum STREAM_COPY = 0x88E2; 70 static const GLenum STATIC_READ = 0x88E5; 71 static const GLenum STATIC_COPY = 0x88E6; 72 static const GLenum DYNAMIC_READ = 0x88E9; 73 static const GLenum DYNAMIC_COPY = 0x88EA; 74 static const GLenum MAX_DRAW_BUFFERS = 0x8824; 75 static const GLenum DRAW_BUFFER0 = 0x8825; 76 static const GLenum DRAW_BUFFER1 = 0x8826; 77 static const GLenum DRAW_BUFFER2 = 0x8827; 78 static const GLenum DRAW_BUFFER3 = 0x8828; 79 static const GLenum DRAW_BUFFER4 = 0x8829; 80 static const GLenum DRAW_BUFFER5 = 0x882A; 81 static const GLenum DRAW_BUFFER6 = 0x882B; 82 static const GLenum DRAW_BUFFER7 = 0x882C; 83 static const GLenum DRAW_BUFFER8 = 0x882D; 84 static const GLenum DRAW_BUFFER9 = 0x882E; 85 static const GLenum DRAW_BUFFER10 = 0x882F; 86 static const GLenum DRAW_BUFFER11 = 0x8830; 87 static const GLenum DRAW_BUFFER12 = 0x8831; 88 static const GLenum DRAW_BUFFER13 = 0x8832; 89 static const GLenum DRAW_BUFFER14 = 0x8833; 90 static const GLenum DRAW_BUFFER15 = 0x8834; 91 static const GLenum MAX_FRAGMENT_UNIFORM_COMPONENTS = 0x8B49; 92 static const GLenum MAX_VERTEX_UNIFORM_COMPONENTS = 0x8B4A; 93 static const GLenum SAMPLER_3D = 0x8B5F; 94 static const GLenum SAMPLER_2D_SHADOW = 0x8B62; 95 static const GLenum FRAGMENT_SHADER_DERIVATIVE_HINT = 0x8B8B; 96 static const GLenum PIXEL_PACK_BUFFER = 0x88EB; 97 static const GLenum PIXEL_UNPACK_BUFFER = 0x88EC; 98 static const GLenum PIXEL_PACK_BUFFER_BINDING = 0x88ED; 99 static const GLenum PIXEL_UNPACK_BUFFER_BINDING = 0x88EF; 100 static const GLenum FLOAT_MAT2x3 = 0x8B65; 101 static const GLenum FLOAT_MAT2x4 = 0x8B66; 102 static const GLenum FLOAT_MAT3x2 = 0x8B67; 103 static const GLenum FLOAT_MAT3x4 = 0x8B68; 104 static const GLenum FLOAT_MAT4x2 = 0x8B69; 105 static const GLenum FLOAT_MAT4x3 = 0x8B6A; 106 static const GLenum SRGB = 0x8C40; 107 static const GLenum SRGB8 = 0x8C41; 108 static const GLenum SRGB8_ALPHA8 = 0x8C43; 109 static const GLenum COMPARE_REF_TO_TEXTURE = 0x884E; 110 static const GLenum RGBA32F = 0x8814; 111 static const GLenum RGB32F = 0x8815; 112 static const GLenum RGBA16F = 0x881A; 113 static const GLenum RGB16F = 0x881B; 114 static const GLenum VERTEX_ATTRIB_ARRAY_INTEGER = 0x88FD; 115 static const GLenum MAX_ARRAY_TEXTURE_LAYERS = 0x88FF; 116 static const GLenum MIN_PROGRAM_TEXEL_OFFSET = 0x8904; 117 static const GLenum MAX_PROGRAM_TEXEL_OFFSET = 0x8905; 118 static const GLenum MAX_VARYING_COMPONENTS = 0x8B4B; 119 static const GLenum TEXTURE_2D_ARRAY = 0x8C1A; 120 static const GLenum TEXTURE_BINDING_2D_ARRAY = 0x8C1D; 121 static const GLenum R11F_G11F_B10F = 0x8C3A; 122 static const GLenum UNSIGNED_INT_10F_11F_11F_REV = 0x8C3B; 123 static const GLenum RGB9_E5 = 0x8C3D; 124 static const GLenum UNSIGNED_INT_5_9_9_9_REV = 0x8C3E; 125 static const GLenum TRANSFORM_FEEDBACK_BUFFER_MODE = 0x8C7F; 126 static const GLenum MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = 0x8C80; 127 static const GLenum TRANSFORM_FEEDBACK_VARYINGS = 0x8C83; 128 static const GLenum TRANSFORM_FEEDBACK_BUFFER_START = 0x8C84; 129 static const GLenum TRANSFORM_FEEDBACK_BUFFER_SIZE = 0x8C85; 130 static const GLenum TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 0x8C88; 131 static const GLenum RASTERIZER_DISCARD = 0x8C89; 132 static const GLenum MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = 0x8C8A; 133 static const GLenum MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = 0x8C8B; 134 static const GLenum INTERLEAVED_ATTRIBS = 0x8C8C; 135 static const GLenum SEPARATE_ATTRIBS = 0x8C8D; 136 static const GLenum TRANSFORM_FEEDBACK_BUFFER = 0x8C8E; 137 static const GLenum TRANSFORM_FEEDBACK_BUFFER_BINDING = 0x8C8F; 138 static const GLenum RGBA32UI = 0x8D70; 139 static const GLenum RGB32UI = 0x8D71; 140 static const GLenum RGBA16UI = 0x8D76; 141 static const GLenum RGB16UI = 0x8D77; 142 static const GLenum RGBA8UI = 0x8D7C; 143 static const GLenum RGB8UI = 0x8D7D; 144 static const GLenum RGBA32I = 0x8D82; 145 static const GLenum RGB32I = 0x8D83; 146 static const GLenum RGBA16I = 0x8D88; 147 static const GLenum RGB16I = 0x8D89; 148 static const GLenum RGBA8I = 0x8D8E; 149 static const GLenum RGB8I = 0x8D8F; 150 static const GLenum RED_INTEGER = 0x8D94; 151 static const GLenum RGB_INTEGER = 0x8D98; 152 static const GLenum RGBA_INTEGER = 0x8D99; 153 static const GLenum SAMPLER_2D_ARRAY = 0x8DC1; 154 static const GLenum SAMPLER_2D_ARRAY_SHADOW = 0x8DC4; 155 static const GLenum SAMPLER_CUBE_SHADOW = 0x8DC5; 156 static const GLenum UNSIGNED_INT_VEC2 = 0x8DC6; 157 static const GLenum UNSIGNED_INT_VEC3 = 0x8DC7; 158 static const GLenum UNSIGNED_INT_VEC4 = 0x8DC8; 159 static const GLenum INT_SAMPLER_2D = 0x8DCA; 160 static const GLenum INT_SAMPLER_3D = 0x8DCB; 161 static const GLenum INT_SAMPLER_CUBE = 0x8DCC; 162 static const GLenum INT_SAMPLER_2D_ARRAY = 0x8DCF; 163 static const GLenum UNSIGNED_INT_SAMPLER_2D = 0x8DD2; 164 static const GLenum UNSIGNED_INT_SAMPLER_3D = 0x8DD3; 165 static const GLenum UNSIGNED_INT_SAMPLER_CUBE = 0x8DD4; 166 static const GLenum UNSIGNED_INT_SAMPLER_2D_ARRAY = 0x8DD7; 167 static const GLenum DEPTH_COMPONENT32F = 0x8CAC; 168 static const GLenum DEPTH32F_STENCIL8 = 0x8CAD; 169 static const GLenum FLOAT_32_UNSIGNED_INT_24_8_REV = 0x8DAD; 170 static const GLenum FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING = 0x8210; 171 static const GLenum FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE = 0x8211; 172 static const GLenum FRAMEBUFFER_ATTACHMENT_RED_SIZE = 0x8212; 173 static const GLenum FRAMEBUFFER_ATTACHMENT_GREEN_SIZE = 0x8213; 174 static const GLenum FRAMEBUFFER_ATTACHMENT_BLUE_SIZE = 0x8214; 175 static const GLenum FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE = 0x8215; 176 static const GLenum FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE = 0x8216; 177 static const GLenum FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE = 0x8217; 178 static const GLenum FRAMEBUFFER_DEFAULT = 0x8218; 179 static const GLenum UNSIGNED_INT_24_8 = 0x84FA; 180 static const GLenum DEPTH24_STENCIL8 = 0x88F0; 181 static const GLenum UNSIGNED_NORMALIZED = 0x8C17; 182 static const GLenum DRAW_FRAMEBUFFER_BINDING = 0x8CA6; 183 static const GLenum READ_FRAMEBUFFER = 0x8CA8; 184 static const GLenum DRAW_FRAMEBUFFER = 0x8CA9; 185 static const GLenum READ_FRAMEBUFFER_BINDING = 0x8CAA; 186 static const GLenum RENDERBUFFER_SAMPLES = 0x8CAB; 187 static const GLenum FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER = 0x8CD4; 188 static const GLenum MAX_COLOR_ATTACHMENTS = 0x8CDF; 189 static const GLenum COLOR_ATTACHMENT1 = 0x8CE1; 190 static const GLenum COLOR_ATTACHMENT2 = 0x8CE2; 191 static const GLenum COLOR_ATTACHMENT3 = 0x8CE3; 192 static const GLenum COLOR_ATTACHMENT4 = 0x8CE4; 193 static const GLenum COLOR_ATTACHMENT5 = 0x8CE5; 194 static const GLenum COLOR_ATTACHMENT6 = 0x8CE6; 195 static const GLenum COLOR_ATTACHMENT7 = 0x8CE7; 196 static const GLenum COLOR_ATTACHMENT8 = 0x8CE8; 197 static const GLenum COLOR_ATTACHMENT9 = 0x8CE9; 198 static const GLenum COLOR_ATTACHMENT10 = 0x8CEA; 199 static const GLenum COLOR_ATTACHMENT11 = 0x8CEB; 200 static const GLenum COLOR_ATTACHMENT12 = 0x8CEC; 201 static const GLenum COLOR_ATTACHMENT13 = 0x8CED; 202 static const GLenum COLOR_ATTACHMENT14 = 0x8CEE; 203 static const GLenum COLOR_ATTACHMENT15 = 0x8CEF; 204 static const GLenum FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = 0x8D56; 205 static const GLenum MAX_SAMPLES = 0x8D57; 206 static const GLenum HALF_FLOAT = 0x140B; 207 static const GLenum RG = 0x8227; 208 static const GLenum RG_INTEGER = 0x8228; 209 static const GLenum R8 = 0x8229; 210 static const GLenum RG8 = 0x822B; 211 static const GLenum R16F = 0x822D; 212 static const GLenum R32F = 0x822E; 213 static const GLenum RG16F = 0x822F; 214 static const GLenum RG32F = 0x8230; 215 static const GLenum R8I = 0x8231; 216 static const GLenum R8UI = 0x8232; 217 static const GLenum R16I = 0x8233; 218 static const GLenum R16UI = 0x8234; 219 static const GLenum R32I = 0x8235; 220 static const GLenum R32UI = 0x8236; 221 static const GLenum RG8I = 0x8237; 222 static const GLenum RG8UI = 0x8238; 223 static const GLenum RG16I = 0x8239; 224 static const GLenum RG16UI = 0x823A; 225 static const GLenum RG32I = 0x823B; 226 static const GLenum RG32UI = 0x823C; 227 static const GLenum VERTEX_ARRAY_BINDING = 0x85B5; 228 static const GLenum R8_SNORM = 0x8F94; 229 static const GLenum RG8_SNORM = 0x8F95; 230 static const GLenum RGB8_SNORM = 0x8F96; 231 static const GLenum RGBA8_SNORM = 0x8F97; 232 static const GLenum SIGNED_NORMALIZED = 0x8F9C; 233 static const GLenum COPY_READ_BUFFER = 0x8F36; 234 static const GLenum COPY_WRITE_BUFFER = 0x8F37; 235 static const GLenum COPY_READ_BUFFER_BINDING = 0x8F36; 236 static const GLenum COPY_WRITE_BUFFER_BINDING = 0x8F37; 237 static const GLenum UNIFORM_BUFFER = 0x8A11; 238 static const GLenum UNIFORM_BUFFER_BINDING = 0x8A28; 239 static const GLenum UNIFORM_BUFFER_START = 0x8A29; 240 static const GLenum UNIFORM_BUFFER_SIZE = 0x8A2A; 241 static const GLenum MAX_VERTEX_UNIFORM_BLOCKS = 0x8A2B; 242 static const GLenum MAX_FRAGMENT_UNIFORM_BLOCKS = 0x8A2D; 243 static const GLenum MAX_COMBINED_UNIFORM_BLOCKS = 0x8A2E; 244 static const GLenum MAX_UNIFORM_BUFFER_BINDINGS = 0x8A2F; 245 static const GLenum MAX_UNIFORM_BLOCK_SIZE = 0x8A30; 246 static const GLenum MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = 0x8A31; 247 static const GLenum MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = 0x8A33; 248 static const GLenum UNIFORM_BUFFER_OFFSET_ALIGNMENT = 0x8A34; 249 static const GLenum ACTIVE_UNIFORM_BLOCKS = 0x8A36; 250 static const GLenum UNIFORM_TYPE = 0x8A37; 251 static const GLenum UNIFORM_SIZE = 0x8A38; 252 static const GLenum UNIFORM_BLOCK_INDEX = 0x8A3A; 253 static const GLenum UNIFORM_OFFSET = 0x8A3B; 254 static const GLenum UNIFORM_ARRAY_STRIDE = 0x8A3C; 255 static const GLenum UNIFORM_MATRIX_STRIDE = 0x8A3D; 256 static const GLenum UNIFORM_IS_ROW_MAJOR = 0x8A3E; 257 static const GLenum UNIFORM_BLOCK_BINDING = 0x8A3F; 258 static const GLenum UNIFORM_BLOCK_DATA_SIZE = 0x8A40; 259 static const GLenum UNIFORM_BLOCK_ACTIVE_UNIFORMS = 0x8A42; 260 static const GLenum UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES = 0x8A43; 261 static const GLenum UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER = 0x8A44; 262 static const GLenum UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER = 0x8A46; 263 static const GLenum INVALID_INDEX = 0xFFFFFFFF; 264 static const GLenum MAX_VERTEX_OUTPUT_COMPONENTS = 0x9122; 265 static const GLenum MAX_FRAGMENT_INPUT_COMPONENTS = 0x9125; 266 static const GLenum MAX_SERVER_WAIT_TIMEOUT = 0x9111; 267 static const GLenum OBJECT_TYPE = 0x9112; 268 static const GLenum SYNC_CONDITION = 0x9113; 269 static const GLenum SYNC_STATUS = 0x9114; 270 static const GLenum SYNC_FLAGS = 0x9115; 271 static const GLenum SYNC_FENCE = 0x9116; 272 static const GLenum SYNC_GPU_COMMANDS_COMPLETE = 0x9117; 273 static const GLenum UNSIGNALED = 0x9118; 274 static const GLenum SIGNALED = 0x9119; 275 static const GLenum ALREADY_SIGNALED = 0x911A; 276 static const GLenum TIMEOUT_EXPIRED = 0x911B; 277 static const GLenum CONDITION_SATISFIED = 0x911C; 278 static const GLenum WAIT_FAILED = 0x911D; 279 static const GLenum SYNC_FLUSH_COMMANDS_BIT = 0x00000001; 280 static const GLenum VERTEX_ATTRIB_ARRAY_DIVISOR = 0x88FE; 281 static const GLenum ANY_SAMPLES_PASSED = 0x8C2F; 282 static const GLenum ANY_SAMPLES_PASSED_CONSERVATIVE = 0x8D6A; 283 static const GLenum SAMPLER_BINDING = 0x8919; 284 static const GLenum RGB10_A2UI = 0x906F; 285 static const GLenum INT_2_10_10_10_REV = 0x8D9F; 286 static const GLenum TRANSFORM_FEEDBACK = 0x8E22; 287 static const GLenum TRANSFORM_FEEDBACK_PAUSED = 0x8E23; 288 static const GLenum TRANSFORM_FEEDBACK_ACTIVE = 0x8E24; 289 static const GLenum TRANSFORM_FEEDBACK_BINDING = 0x8E25; 290 static const GLenum TEXTURE_IMMUTABLE_FORMAT = 0x912F; 291 static const GLenum MAX_ELEMENT_INDEX = 0x8D6B; 292 static const GLenum TEXTURE_IMMUTABLE_LEVELS = 0x82DF; 293 static const GLint64 TIMEOUT_IGNORED = -1; 294 static const GLenum MAX_CLIENT_WAIT_TIMEOUT_WEBGL = 0x9247; 295 static const uint32_t INPUTFLOAT_LENGTH = 128; 296 297 static napi_value DrawBuffers(napi_env env, napi_callback_info info); 298 static napi_value ClearBufferfv(napi_env env, napi_callback_info info); 299 static napi_value ClearBufferiv(napi_env env, napi_callback_info info); 300 static napi_value ClearBufferuiv(napi_env env, napi_callback_info info); 301 static napi_value ClearBufferfi(napi_env env, napi_callback_info info); 302 static napi_value CreateQuery(napi_env env, napi_callback_info info); 303 static napi_value DeleteQuery(napi_env env, napi_callback_info info); 304 static napi_value IsQuery(napi_env env, napi_callback_info info); 305 static napi_value BeginQuery(napi_env env, napi_callback_info info); 306 static napi_value EndQuery(napi_env env, napi_callback_info info); 307 static napi_value GetQuery(napi_env env, napi_callback_info info); 308 static napi_value GetQueryParameter(napi_env env, napi_callback_info info); 309 static napi_value CreateSampler(napi_env env, napi_callback_info info); 310 static napi_value DeleteSampler(napi_env env, napi_callback_info info); 311 static napi_value IsSampler(napi_env env, napi_callback_info info); 312 static napi_value BindSampler(napi_env env, napi_callback_info info); 313 static napi_value SamplerParameteri(napi_env env, napi_callback_info info); 314 static napi_value SamplerParameterf(napi_env env, napi_callback_info info); 315 static napi_value GetSamplerParameter(napi_env env, napi_callback_info info); 316 static napi_value FenceSync(napi_env env, napi_callback_info info); 317 static napi_value IsSync(napi_env env, napi_callback_info info); 318 static napi_value DeleteSync(napi_env env, napi_callback_info info); 319 static napi_value ClientWaitSync(napi_env env, napi_callback_info info); 320 static napi_value WaitSync(napi_env env, napi_callback_info info); 321 static napi_value GetSyncParameter(napi_env env, napi_callback_info info); 322 static napi_value CreateTransformFeedback(napi_env env, napi_callback_info info); 323 static napi_value DeleteTransformFeedback(napi_env env, napi_callback_info info); 324 static napi_value IsTransformFeedback(napi_env env, napi_callback_info info); 325 static napi_value BindTransformFeedback(napi_env env, napi_callback_info info); 326 static napi_value BeginTransformFeedback(napi_env env, napi_callback_info info); 327 static napi_value EndTransformFeedback(napi_env env, napi_callback_info info); 328 static napi_value TexStorage3D(napi_env env, napi_callback_info info); 329 static napi_value TexImage3D(napi_env env, napi_callback_info info); 330 static napi_value TexSubImage3D(napi_env env, napi_callback_info info); 331 static napi_value CopyTexSubImage3D(napi_env env, napi_callback_info info); 332 static napi_value CompressedTexImage3D(napi_env env, napi_callback_info info); 333 static napi_value CompressedTexSubImage3D(napi_env env, napi_callback_info info); 334 static napi_value GetFragDataLocation(napi_env env, napi_callback_info info); 335 static napi_value Uniform1ui(napi_env env, napi_callback_info info); 336 static napi_value Uniform2ui(napi_env env, napi_callback_info info); 337 static napi_value Uniform3ui(napi_env env, napi_callback_info info); 338 static napi_value Uniform4ui(napi_env env, napi_callback_info info); 339 static napi_value VertexAttribI4i(napi_env env, napi_callback_info info); 340 static napi_value VertexAttribI4ui(napi_env env, napi_callback_info info); 341 static napi_value VertexAttribIPointer(napi_env env, napi_callback_info info); 342 static napi_value VertexAttribDivisor(napi_env env, napi_callback_info info); 343 static napi_value DrawArraysInstanced(napi_env env, napi_callback_info info); 344 static napi_value DrawElementsInstanced(napi_env env, napi_callback_info info); 345 static napi_value DrawRangeElements(napi_env env, napi_callback_info info); 346 static napi_value CopyBufferSubData(napi_env env, napi_callback_info info); 347 static napi_value GetBufferSubData(napi_env env, napi_callback_info info); 348 static napi_value BlitFramebuffer(napi_env env, napi_callback_info info); 349 static napi_value FramebufferTextureLayer(napi_env env, napi_callback_info info); 350 static napi_value ReadBuffer(napi_env env, napi_callback_info info); 351 static napi_value RenderbufferStorageMultisample(napi_env env, napi_callback_info info); 352 static napi_value TexStorage2D(napi_env env, napi_callback_info info); 353 static napi_value GetTransformFeedbackVarying(napi_env env, napi_callback_info info); 354 static napi_value PauseTransformFeedback(napi_env env, napi_callback_info info); 355 static napi_value ResumeTransformFeedback(napi_env env, napi_callback_info info); 356 static napi_value BindBufferBase(napi_env env, napi_callback_info info); 357 static napi_value BindBufferRange(napi_env env, napi_callback_info info); 358 static napi_value GetIndexedParameter(napi_env env, napi_callback_info info); 359 static napi_value GetUniformBlockIndex(napi_env env, napi_callback_info info); 360 static napi_value GetActiveUniformBlockParameter(napi_env env, napi_callback_info info); 361 static napi_value GetActiveUniformBlockName(napi_env env, napi_callback_info info); 362 static napi_value UniformBlockBinding(napi_env env, napi_callback_info info); 363 static napi_value CreateVertexArray(napi_env env, napi_callback_info info); 364 static napi_value DeleteVertexArray(napi_env env, napi_callback_info info); 365 static napi_value IsVertexArray(napi_env env, napi_callback_info info); 366 static napi_value BindVertexArray(napi_env env, napi_callback_info info); 367 static napi_value Uniform1uiv(napi_env env, napi_callback_info info); 368 static napi_value Uniform2uiv(napi_env env, napi_callback_info info); 369 static napi_value Uniform3uiv(napi_env env, napi_callback_info info); 370 static napi_value Uniform4uiv(napi_env env, napi_callback_info info); 371 static napi_value UniformMatrix3x2fv(napi_env env, napi_callback_info info); 372 static napi_value UniformMatrix4x2fv(napi_env env, napi_callback_info info); 373 static napi_value UniformMatrix2x3fv(napi_env env, napi_callback_info info); 374 static napi_value UniformMatrix4x3fv(napi_env env, napi_callback_info info); 375 static napi_value UniformMatrix2x4fv(napi_env env, napi_callback_info info); 376 static napi_value UniformMatrix3x4fv(napi_env env, napi_callback_info info); 377 static napi_value VertexAttribI4iv(napi_env env, napi_callback_info info); 378 static napi_value VertexAttribI4uiv(napi_env env, napi_callback_info info); 379 static napi_value InvalidateFramebuffer(napi_env env, napi_callback_info info); 380 static napi_value InvalidateSubFramebuffer(napi_env env, napi_callback_info info); 381 static napi_value GetInternalformatParameter(napi_env env, napi_callback_info info); 382 static napi_value TransformFeedbackVaryings(napi_env env, napi_callback_info info); 383 static napi_value GetUniformIndices(napi_env env, napi_callback_info info); 384 static napi_value GetActiveUniforms(napi_env env, napi_callback_info info); 385 static napi_value GetParameter(napi_env env, napi_callback_info info); 386 static napi_value GetTexParameter(napi_env env, napi_callback_info info); 387 static napi_value GetFramebufferAttachmentParameter(napi_env env, napi_callback_info info); 388 static napi_value RenderbufferStorage(napi_env env, napi_callback_info info); 389 static napi_value BindBuffer(napi_env env, napi_callback_info info); 390 static napi_value DeleteBuffer(napi_env env, napi_callback_info info); 391 }; 392 } // namespace Rosen 393 } // namespace OHOS 394 #ifdef __cplusplus 395 } 396 #endif 397 #endif // WEBGL2_RENDERING_CONTEXT_BASE_H 398