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