• 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_WEBGL_RENDERING_CONTEXT_BASE
17 #define ROSENRENDER_ROSEN_WEBGL_RENDERING_CONTEXT_BASE
18 
19 #include <GLES2/gl2.h>
20 #include <GLES3/gl31.h>
21 #include <GLES2/gl2ext.h>
22 #include "securec.h"
23 #include "common/napi/n_exporter.h"
24 #include "webgl_rendering_context_basic_base.h"
25 
26 #ifdef __cplusplus
27 extern "C" {
28 #endif
29 
30 namespace OHOS {
31 namespace Rosen {
32 class WebGLRenderingContextBase : public WebGLRenderingContextBasicBase {
33 public:
34     static const GLenum DEPTH_BUFFER_BIT = 0x00000100;
35     static const GLenum STENCIL_BUFFER_BIT = 0x00000400;
36     static const GLenum COLOR_BUFFER_BIT = 0x00004000;
37     static const GLenum POINTS = 0x0000;
38     static const GLenum LINES = 0x0001;
39     static const GLenum LINE_LOOP = 0x0002;
40     static const GLenum LINE_STRIP = 0x0003;
41     static const GLenum TRIANGLES = 0x0004;
42     static const GLenum TRIANGLE_STRIP = 0x0005;
43     static const GLenum TRIANGLE_FAN = 0x0006;
44     static const GLenum ZERO = 0;
45     static const GLenum ONE = 1;
46     static const GLenum SRC_COLOR = 0x0300;
47     static const GLenum ONE_MINUS_SRC_COLOR = 0x0301;
48     static const GLenum SRC_ALPHA = 0x0302;
49     static const GLenum ONE_MINUS_SRC_ALPHA = 0x0303;
50     static const GLenum DST_ALPHA = 0x0304;
51     static const GLenum ONE_MINUS_DST_ALPHA = 0x0305;
52     static const GLenum DST_COLOR = 0x0306;
53     static const GLenum ONE_MINUS_DST_COLOR = 0x0307;
54     static const GLenum SRC_ALPHA_SATURATE = 0x0308;
55     static const GLenum FUNC_ADD = 0x8006;
56     static const GLenum BLEND_EQUATION = 0x8009;
57     static const GLenum BLEND_EQUATION_RGB = 0x8009;
58     static const GLenum BLEND_EQUATION_ALPHA = 0x883D;
59     static const GLenum FUNC_SUBTRACT = 0x800A;
60     static const GLenum FUNC_REVERSE_SUBTRACT = 0x800B;
61     static const GLenum BLEND_DST_RGB = 0x80C8;
62     static const GLenum BLEND_SRC_RGB = 0x80C9;
63     static const GLenum BLEND_DST_ALPHA = 0x80CA;
64     static const GLenum BLEND_SRC_ALPHA = 0x80CB;
65     static const GLenum CONSTANT_COLOR = 0x8001;
66     static const GLenum ONE_MINUS_CONSTANT_COLOR = 0x8002;
67     static const GLenum CONSTANT_ALPHA = 0x8003;
68     static const GLenum ONE_MINUS_CONSTANT_ALPHA = 0x8004;
69     static const GLenum BLEND_COLOR = 0x8005;
70     static const GLenum ARRAY_BUFFER = 0x8892;
71     static const GLenum ELEMENT_ARRAY_BUFFER = 0x8893;
72     static const GLenum ARRAY_BUFFER_BINDING = 0x8894;
73     static const GLenum ELEMENT_ARRAY_BUFFER_BINDING = 0x8895;
74     static const GLenum STREAM_DRAW = 0x88E0;
75     static const GLenum STATIC_DRAW = 0x88E4;
76     static const GLenum DYNAMIC_DRAW = 0x88E8;
77     static const GLenum BUFFER_SIZE = 0x8764;
78     static const GLenum BUFFER_USAGE = 0x8765;
79     static const GLenum CURRENT_VERTEX_ATTRIB = 0x8626;
80     static const GLenum FRONT = 0x0404;
81     static const GLenum BACK = 0x0405;
82     static const GLenum FRONT_AND_BACK = 0x0408;
83     static const GLenum CULL_FACE = 0x0B44;
84     static const GLenum BLEND = 0x0BE2;
85     static const GLenum DITHER = 0x0BD0;
86     static const GLenum STENCIL_TEST = 0x0B90;
87     static const GLenum DEPTH_TEST = 0x0B71;
88     static const GLenum SCISSOR_TEST = 0x0C11;
89     static const GLenum POLYGON_OFFSET_FILL = 0x8037;
90     static const GLenum SAMPLE_ALPHA_TO_COVERAGE = 0x809E;
91     static const GLenum SAMPLE_COVERAGE = 0x80A0;
92     static const GLenum NO_ERROR = 0;
93     static const GLenum INVALID_ENUM = 0x0500;
94     static const GLenum INVALID_VALUE = 0x0501;
95     static const GLenum INVALID_OPERATION = 0x0502;
96     static const GLenum OUT_OF_MEMORY = 0x0505;
97     static const GLenum CW = 0x0900;
98     static const GLenum CCW = 0x0901;
99     static const GLenum LINE_WIDTH = 0x0B21;
100     static const GLenum ALIASED_POINT_SIZE_RANGE = 0x846D;
101     static const GLenum ALIASED_LINE_WIDTH_RANGE = 0x846E;
102     static const GLenum CULL_FACE_MODE = 0x0B45;
103     static const GLenum FRONT_FACE = 0x0B46;
104     static const GLenum DEPTH_RANGE = 0x0B70;
105     static const GLenum DEPTH_WRITEMASK = 0x0B72;
106     static const GLenum DEPTH_CLEAR_VALUE = 0x0B73;
107     static const GLenum DEPTH_FUNC = 0x0B74;
108     static const GLenum STENCIL_CLEAR_VALUE = 0x0B91;
109     static const GLenum STENCIL_FUNC = 0x0B92;
110     static const GLenum STENCIL_FAIL = 0x0B94;
111     static const GLenum STENCIL_PASS_DEPTH_FAIL = 0x0B95;
112     static const GLenum STENCIL_PASS_DEPTH_PASS = 0x0B96;
113     static const GLenum STENCIL_REF = 0x0B97;
114     static const GLenum STENCIL_VALUE_MASK = 0x0B93;
115     static const GLenum STENCIL_WRITEMASK = 0x0B98;
116     static const GLenum STENCIL_BACK_FUNC = 0x8800;
117     static const GLenum STENCIL_BACK_FAIL = 0x8801;
118     static const GLenum STENCIL_BACK_PASS_DEPTH_FAIL = 0x8802;
119     static const GLenum STENCIL_BACK_PASS_DEPTH_PASS = 0x8803;
120     static const GLenum STENCIL_BACK_REF = 0x8CA3;
121     static const GLenum STENCIL_BACK_VALUE_MASK = 0x8CA4;
122     static const GLenum STENCIL_BACK_WRITEMASK = 0x8CA5;
123     static const GLenum VIEWPORT = 0x0BA2;
124     static const GLenum SCISSOR_BOX = 0x0C10;
125     static const GLenum COLOR_CLEAR_VALUE = 0x0C22;
126     static const GLenum COLOR_WRITEMASK = 0x0C23;
127     static const GLenum UNPACK_ALIGNMENT = 0x0CF5;
128     static const GLenum PACK_ALIGNMENT = 0x0D05;
129     static const GLenum MAX_TEXTURE_SIZE = 0x0D33;
130     static const GLenum MAX_VIEWPORT_DIMS = 0x0D3A;
131     static const GLenum SUBPIXEL_BITS = 0x0D50;
132     static const GLenum RED_BITS = 0x0D52;
133     static const GLenum GREEN_BITS = 0x0D53;
134     static const GLenum BLUE_BITS = 0x0D54;
135     static const GLenum ALPHA_BITS = 0x0D55;
136     static const GLenum DEPTH_BITS = 0x0D56;
137     static const GLenum STENCIL_BITS = 0x0D57;
138     static const GLenum POLYGON_OFFSET_UNITS = 0x2A00;
139     static const GLenum POLYGON_OFFSET_FACTOR = 0x8038;
140     static const GLenum TEXTURE_BINDING_2D = 0x8069;
141     static const GLenum SAMPLE_BUFFERS = 0x80A8;
142     static const GLenum SAMPLES = 0x80A9;
143     static const GLenum SAMPLE_COVERAGE_VALUE = 0x80AA;
144     static const GLenum SAMPLE_COVERAGE_INVERT = 0x80AB;
145     static const GLenum COMPRESSED_TEXTURE_FORMATS = 0x86A3;
146     static const GLenum DONT_CARE = 0x1100;
147     static const GLenum FASTEST = 0x1101;
148     static const GLenum NICEST = 0x1102;
149     static const GLenum GENERATE_MIPMAP_HINT = 0x8192;
150     static const GLenum BYTE = 0x1400;
151     static const GLenum UNSIGNED_BYTE = 0x1401;
152     static const GLenum SHORT = 0x1402;
153     static const GLenum UNSIGNED_SHORT = 0x1403;
154     static const GLenum INT = 0x1404;
155     static const GLenum UNSIGNED_INT = 0x1405;
156     static const GLenum FLOAT = 0x1406;
157     static const GLenum DEPTH_COMPONENT = 0x1902;
158     static const GLenum ALPHA = 0x1906;
159     static const GLenum RGB = 0x1907;
160     static const GLenum RGBA = 0x1908;
161     static const GLenum LUMINANCE = 0x1909;
162     static const GLenum LUMINANCE_ALPHA = 0x190A;
163     static const GLenum UNSIGNED_SHORT_4_4_4_4 = 0x8033;
164     static const GLenum UNSIGNED_SHORT_5_5_5_1 = 0x8034;
165     static const GLenum UNSIGNED_SHORT_5_6_5 = 0x8363;
166     static const GLenum FRAGMENT_SHADER = 0x8B30;
167     static const GLenum VERTEX_SHADER = 0x8B31;
168     static const GLenum MAX_VERTEX_ATTRIBS = 0x8869;
169     static const GLenum MAX_VERTEX_UNIFORM_VECTORS = 0x8DFB;
170     static const GLenum MAX_VARYING_VECTORS = 0x8DFC;
171     static const GLenum MAX_COMBINED_TEXTURE_IMAGE_UNITS = 0x8B4D;
172     static const GLenum MAX_VERTEX_TEXTURE_IMAGE_UNITS = 0x8B4C;
173     static const GLenum MAX_TEXTURE_IMAGE_UNITS = 0x8872;
174     static const GLenum MAX_FRAGMENT_UNIFORM_VECTORS = 0x8DFD;
175     static const GLenum SHADER_TYPE = 0x8B4F;
176     static const GLenum DELETE_STATUS = 0x8B80;
177     static const GLenum LINK_STATUS = 0x8B82;
178     static const GLenum VALIDATE_STATUS = 0x8B83;
179     static const GLenum ATTACHED_SHADERS = 0x8B85;
180     static const GLenum ACTIVE_UNIFORMS = 0x8B86;
181     static const GLenum ACTIVE_ATTRIBUTES = 0x8B89;
182     static const GLenum SHADING_LANGUAGE_VERSION = 0x8B8C;
183     static const GLenum CURRENT_PROGRAM = 0x8B8D;
184     static const GLenum NEVER = 0x0200;
185     static const GLenum LESS = 0x0201;
186     static const GLenum EQUAL = 0x0202;
187     static const GLenum LEQUAL = 0x0203;
188     static const GLenum GREATER = 0x0204;
189     static const GLenum NOTEQUAL = 0x0205;
190     static const GLenum GEQUAL = 0x0206;
191     static const GLenum ALWAYS = 0x0207;
192     static const GLenum KEEP = 0x1E00;
193     static const GLenum REPLACE = 0x1E01;
194     static const GLenum INCR = 0x1E02;
195     static const GLenum DECR = 0x1E03;
196     static const GLenum INVERT = 0x150A;
197     static const GLenum INCR_WRAP = 0x8507;
198     static const GLenum DECR_WRAP = 0x8508;
199     static const GLenum VENDOR = 0x1F00;
200     static const GLenum RENDERER = 0x1F01;
201     static const GLenum VERSION = 0x1F02;
202     static const GLenum NEAREST = 0x2600;
203     static const GLenum LINEAR = 0x2601;
204     static const GLenum NEAREST_MIPMAP_NEAREST = 0x2700;
205     static const GLenum LINEAR_MIPMAP_NEAREST = 0x2701;
206     static const GLenum NEAREST_MIPMAP_LINEAR = 0x2702;
207     static const GLenum LINEAR_MIPMAP_LINEAR = 0x2703;
208     static const GLenum TEXTURE_MAG_FILTER = 0x2800;
209     static const GLenum TEXTURE_MIN_FILTER = 0x2801;
210     static const GLenum TEXTURE_WRAP_S = 0x2802;
211     static const GLenum TEXTURE_WRAP_T = 0x2803;
212     static const GLenum TEXTURE_2D = 0x0DE1;
213     static const GLenum TEXTURE = 0x1702;
214     static const GLenum TEXTURE_CUBE_MAP = 0x8513;
215     static const GLenum TEXTURE_BINDING_CUBE_MAP = 0x8514;
216     static const GLenum TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515;
217     static const GLenum TEXTURE_CUBE_MAP_NEGATIVE_X = 0x8516;
218     static const GLenum TEXTURE_CUBE_MAP_POSITIVE_Y = 0x8517;
219     static const GLenum TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x8518;
220     static const GLenum TEXTURE_CUBE_MAP_POSITIVE_Z = 0x8519;
221     static const GLenum TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x851A;
222     static const GLenum MAX_CUBE_MAP_TEXTURE_SIZE = 0x851C;
223     static const GLenum TEXTURE0 = 0x84C0;
224     static const GLenum TEXTURE1 = 0x84C1;
225     static const GLenum TEXTURE2 = 0x84C2;
226     static const GLenum TEXTURE3 = 0x84C3;
227     static const GLenum TEXTURE4 = 0x84C4;
228     static const GLenum TEXTURE5 = 0x84C5;
229     static const GLenum TEXTURE6 = 0x84C6;
230     static const GLenum TEXTURE7 = 0x84C7;
231     static const GLenum TEXTURE8 = 0x84C8;
232     static const GLenum TEXTURE9 = 0x84C9;
233     static const GLenum TEXTURE10 = 0x84CA;
234     static const GLenum TEXTURE11 = 0x84CB;
235     static const GLenum TEXTURE12 = 0x84CC;
236     static const GLenum TEXTURE13 = 0x84CD;
237     static const GLenum TEXTURE14 = 0x84CE;
238     static const GLenum TEXTURE15 = 0x84CF;
239     static const GLenum TEXTURE16 = 0x84D0;
240     static const GLenum TEXTURE17 = 0x84D1;
241     static const GLenum TEXTURE18 = 0x84D2;
242     static const GLenum TEXTURE19 = 0x84D3;
243     static const GLenum TEXTURE20 = 0x84D4;
244     static const GLenum TEXTURE21 = 0x84D5;
245     static const GLenum TEXTURE22 = 0x84D6;
246     static const GLenum TEXTURE23 = 0x84D7;
247     static const GLenum TEXTURE24 = 0x84D8;
248     static const GLenum TEXTURE25 = 0x84D9;
249     static const GLenum TEXTURE26 = 0x84DA;
250     static const GLenum TEXTURE27 = 0x84DB;
251     static const GLenum TEXTURE28 = 0x84DC;
252     static const GLenum TEXTURE29 = 0x84DD;
253     static const GLenum TEXTURE30 = 0x84DE;
254     static const GLenum TEXTURE31 = 0x84DF;
255     static const GLenum ACTIVE_TEXTURE = 0x84E0;
256     static const GLenum REPEAT = 0x2901;
257     static const GLenum CLAMP_TO_EDGE = 0x812F;
258     static const GLenum MIRRORED_REPEAT = 0x8370;
259     static const GLenum FLOAT_VEC2 = 0x8B50;
260     static const GLenum FLOAT_VEC3 = 0x8B51;
261     static const GLenum FLOAT_VEC4 = 0x8B52;
262     static const GLenum INT_VEC2 = 0x8B53;
263     static const GLenum INT_VEC3 = 0x8B54;
264     static const GLenum INT_VEC4 = 0x8B55;
265     static const GLenum BOOL = 0x8B56;
266     static const GLenum BOOL_VEC2 = 0x8B57;
267     static const GLenum BOOL_VEC3 = 0x8B58;
268     static const GLenum BOOL_VEC4 = 0x8B59;
269     static const GLenum FLOAT_MAT2 = 0x8B5A;
270     static const GLenum FLOAT_MAT3 = 0x8B5B;
271     static const GLenum FLOAT_MAT4 = 0x8B5C;
272     static const GLenum SAMPLER_2D = 0x8B5E;
273     static const GLenum SAMPLER_CUBE = 0x8B60;
274     static const GLenum VERTEX_ATTRIB_ARRAY_ENABLED = 0x8622;
275     static const GLenum VERTEX_ATTRIB_ARRAY_SIZE = 0x8623;
276     static const GLenum VERTEX_ATTRIB_ARRAY_STRIDE = 0x8624;
277     static const GLenum VERTEX_ATTRIB_ARRAY_TYPE = 0x8625;
278     static const GLenum VERTEX_ATTRIB_ARRAY_NORMALIZED = 0x886A;
279     static const GLenum VERTEX_ATTRIB_ARRAY_POINTER = 0x8645;
280     static const GLenum VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 0x889F;
281     static const GLenum IMPLEMENTATION_COLOR_READ_TYPE = 0x8B9A;
282     static const GLenum IMPLEMENTATION_COLOR_READ_FORMAT = 0x8B9B;
283     static const GLenum COMPILE_STATUS = 0x8B81;
284     static const GLenum LOW_FLOAT = 0x8DF0;
285     static const GLenum MEDIUM_FLOAT = 0x8DF1;
286     static const GLenum HIGH_FLOAT = 0x8DF2;
287     static const GLenum LOW_INT = 0x8DF3;
288     static const GLenum MEDIUM_INT = 0x8DF4;
289     static const GLenum HIGH_INT = 0x8DF5;
290     static const GLenum FRAMEBUFFER = 0x8D40;
291     static const GLenum RENDERBUFFER = 0x8D41;
292     static const GLenum RGBA4 = 0x8056;
293     static const GLenum RGB5_A1 = 0x8057;
294     static const GLenum RGB565 = 0x8D62;
295     static const GLenum DEPTH_COMPONENT16 = 0x81A5;
296     static const GLenum STENCIL_INDEX8 = 0x8D48;
297     static const GLenum DEPTH_STENCIL = 0x84F9;
298     static const GLenum RENDERBUFFER_WIDTH = 0x8D42;
299     static const GLenum RENDERBUFFER_HEIGHT = 0x8D43;
300     static const GLenum RENDERBUFFER_INTERNAL_FORMAT = 0x8D44;
301     static const GLenum RENDERBUFFER_RED_SIZE = 0x8D50;
302     static const GLenum RENDERBUFFER_GREEN_SIZE = 0x8D51;
303     static const GLenum RENDERBUFFER_BLUE_SIZE = 0x8D52;
304     static const GLenum RENDERBUFFER_ALPHA_SIZE = 0x8D53;
305     static const GLenum RENDERBUFFER_DEPTH_SIZE = 0x8D54;
306     static const GLenum RENDERBUFFER_STENCIL_SIZE = 0x8D55;
307     static const GLenum FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 0x8CD0;
308     static const GLenum FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 0x8CD1;
309     static const GLenum FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 0x8CD2;
310     static const GLenum FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 0x8CD3;
311     static const GLenum COLOR_ATTACHMENT0 = 0x8CE0;
312     static const GLenum DEPTH_ATTACHMENT = 0x8D00;
313     static const GLenum STENCIL_ATTACHMENT = 0x8D20;
314     static const GLenum DEPTH_STENCIL_ATTACHMENT = 0x821A;
315     static const GLenum NONE = 0;
316     static const GLenum FRAMEBUFFER_COMPLETE = 0x8CD5;
317     static const GLenum FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 0x8CD6;
318     static const GLenum FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 0x8CD7;
319     static const GLenum FRAMEBUFFER_INCOMPLETE_DIMENSIONS = 0x8CD9;
320     static const GLenum FRAMEBUFFER_UNSUPPORTED = 0x8CDD;
321     static const GLenum FRAMEBUFFER_BINDING = 0x8CA6;
322     static const GLenum RENDERBUFFER_BINDING = 0x8CA7;
323     static const GLenum MAX_RENDERBUFFER_SIZE = 0x84E8;
324     static const GLenum INVALID_FRAMEBUFFER_OPERATION = 0x0506;
325     static const GLenum UNPACK_FLIP_Y_WEBGL = 0x9240;
326     static const GLenum UNPACK_PREMULTIPLY_ALPHA_WEBGL = 0x9241;
327     static const GLenum CONTEXT_LOST_WEBGL = 0x9242;
328     static const GLenum UNPACK_COLORSPACE_CONVERSION_WEBGL = 0x9243;
329     static const GLenum BROWSER_DEFAULT_WEBGL = 0x9244;
330     static const uint32_t INPUTFLOAT_LENGTH = 128;
331     // readonly canvas: HTMLCanvasElement | OffscreenCanvas;
332     int drawingBufferWidth() const;
333     int drawingBufferHeight() const;
334 
335     static napi_value GetContextAttributes(napi_env env, napi_callback_info info);
336 
337     static napi_value IsContextLost(napi_env env, napi_callback_info info);
338 
339     static napi_value GetSupportedExtensions(napi_env env, napi_callback_info info);
340 
341     static napi_value GetExtension(napi_env env, napi_callback_info info);
342 
343     static napi_value ActiveTexture(napi_env env, napi_callback_info info);
344 
345     static napi_value AttachShader(napi_env env, napi_callback_info info);
346 
347     static napi_value BindAttribLocation(napi_env env, napi_callback_info info);
348 
349     static napi_value BindBuffer(napi_env env, napi_callback_info info);
350 
351     static napi_value BindFramebuffer(napi_env env, napi_callback_info info);
352 
353     static napi_value BindRenderbuffer(napi_env env, napi_callback_info info);
354 
355     static napi_value BindTexture(napi_env env, napi_callback_info info);
356 
357     static napi_value BlendColor(napi_env env, napi_callback_info info);
358 
359     static napi_value BlendEquation(napi_env env, napi_callback_info info);
360 
361     static napi_value BlendEquationSeparate(napi_env env, napi_callback_info info);
362 
363     static napi_value BlendFunc(napi_env env, napi_callback_info info);
364 
365     static napi_value BlendFuncSeparate(napi_env env, napi_callback_info info);
366 
367     static napi_value CheckFramebufferStatus(napi_env env, napi_callback_info info);
368 
369     static napi_value Clear(napi_env env, napi_callback_info info);
370 
371     static napi_value ClearColor(napi_env env, napi_callback_info info);
372 
373     static napi_value ClearDepth(napi_env env, napi_callback_info info);
374 
375     static napi_value ClearStencil(napi_env env, napi_callback_info info);
376 
377     static napi_value ColorMask(napi_env env, napi_callback_info info);
378 
379     static napi_value CompileShader(napi_env env, napi_callback_info info);
380 
381     static napi_value CopyTexImage2D(napi_env env, napi_callback_info info);
382 
383     static napi_value CopyTexSubImage2D(napi_env env, napi_callback_info info);
384 
385     static napi_value CreateBuffer(napi_env env, napi_callback_info info);
386 
387     static napi_value CreateFramebuffer(napi_env env, napi_callback_info info);
388 
389     static napi_value CreateProgram(napi_env env, napi_callback_info info);
390 
391     static napi_value CreateRenderbuffer(napi_env env, napi_callback_info info);
392 
393     static napi_value CreateShader(napi_env env, napi_callback_info info);
394 
395     static napi_value CreateTexture(napi_env env, napi_callback_info info);
396 
397     static napi_value CullFace(napi_env env, napi_callback_info info);
398 
399     static napi_value DeleteBuffer(napi_env env, napi_callback_info info);
400 
401     static napi_value DeleteFramebuffer(napi_env env, napi_callback_info info);
402 
403     static napi_value DeleteProgram(napi_env env, napi_callback_info info);
404 
405     static napi_value DeleteRenderbuffer(napi_env env, napi_callback_info info);
406 
407     static napi_value DeleteShader(napi_env env, napi_callback_info info);
408 
409     static napi_value DeleteTexture(napi_env env, napi_callback_info info);
410 
411     static napi_value DepthFunc(napi_env env, napi_callback_info info);
412 
413     static napi_value DepthMask(napi_env env, napi_callback_info info);
414 
415     static napi_value DepthRange(napi_env env, napi_callback_info info);
416 
417     static napi_value DetachShader(napi_env env, napi_callback_info info);
418 
419     static napi_value Disable(napi_env env, napi_callback_info info);
420 
421     static napi_value DisableVertexAttribArray(napi_env env, napi_callback_info info);
422 
423     static napi_value DrawArrays(napi_env env, napi_callback_info info);
424 
425     static napi_value DrawElements(napi_env env, napi_callback_info info);
426 
427     static napi_value Enable(napi_env env, napi_callback_info info);
428 
429     static napi_value EnableVertexAttribArray(napi_env env, napi_callback_info info);
430 
431     static napi_value Finish(napi_env env, napi_callback_info info);
432 
433     static napi_value Flush(napi_env env, napi_callback_info info);
434 
435     static napi_value FramebufferRenderbuffer(napi_env env, napi_callback_info info);
436 
437     static napi_value FramebufferTexture2D(napi_env env, napi_callback_info info);
438 
439     static napi_value Viewport(napi_env env, napi_callback_info info);
440 
441     static napi_value GetUniformLocation(napi_env env, napi_callback_info info);
442 
443     static napi_value GetVertexAttribOffset(napi_env env, napi_callback_info info);
444 
445     static napi_value Hint(napi_env env, napi_callback_info info);
446 
447     static napi_value IsBuffer(napi_env env, napi_callback_info info);
448 
449     static napi_value IsEnabled(napi_env env, napi_callback_info info);
450 
451     static napi_value RenderbufferStorage(napi_env env, napi_callback_info info);
452 
453     static napi_value SampleCoverage(napi_env env, napi_callback_info info);
454 
455     static napi_value Scissor(napi_env env, napi_callback_info info);
456 
457     static napi_value ShaderSource(napi_env env, napi_callback_info info);
458 
459     static napi_value StencilFunc(napi_env env, napi_callback_info info);
460 
461     static napi_value StencilFuncSeparate(napi_env env, napi_callback_info info);
462 
463     static napi_value StencilMask(napi_env env, napi_callback_info info);
464 
465     static napi_value StencilMaskSeparate(napi_env env, napi_callback_info info);
466 
467     static napi_value StencilOp(napi_env env, napi_callback_info info);
468 
469     static napi_value StencilOpSeparate(napi_env env, napi_callback_info info);
470 
471     static napi_value TexParameterf(napi_env env, napi_callback_info info);
472 
473     static napi_value TexParameteri(napi_env env, napi_callback_info info);
474 
475     static napi_value Uniform1f(napi_env env, napi_callback_info info);
476 
477     static napi_value Uniform2f(napi_env env, napi_callback_info info);
478 
479     static napi_value Uniform3f(napi_env env, napi_callback_info info);
480 
481     static napi_value Uniform4f(napi_env env, napi_callback_info info);
482 
483     static napi_value UseProgram(napi_env env, napi_callback_info info);
484 
485     static napi_value Uniform1i(napi_env env, napi_callback_info info);
486 
487     static napi_value Uniform2i(napi_env env, napi_callback_info info);
488 
489     static napi_value Uniform3i(napi_env env, napi_callback_info info);
490 
491     static napi_value Uniform4i(napi_env env, napi_callback_info info);
492 
493     static napi_value ValidateProgram(napi_env env, napi_callback_info info);
494 
495     static napi_value VertexAttrib1f(napi_env env, napi_callback_info info);
496 
497     static napi_value VertexAttrib2f(napi_env env, napi_callback_info info);
498 
499     static napi_value VertexAttrib3f(napi_env env, napi_callback_info info);
500 
501     static napi_value VertexAttrib4f(napi_env env, napi_callback_info info);
502 
503     static napi_value VertexAttribPointer(napi_env env, napi_callback_info info);
504 
505     static napi_value IsFramebuffer(napi_env env, napi_callback_info info);
506 
507     static napi_value IsProgram(napi_env env, napi_callback_info info);
508 
509     static napi_value IsRenderbuffer(napi_env env, napi_callback_info info);
510 
511     static napi_value IsShader(napi_env env, napi_callback_info info);
512 
513     static napi_value IsTexture(napi_env env, napi_callback_info info);
514 
515     static napi_value LineWidth(napi_env env, napi_callback_info info);
516 
517     static napi_value LinkProgram(napi_env env, napi_callback_info info);
518 
519     static napi_value PixelStorei(napi_env env, napi_callback_info info);
520 
521     static napi_value PolygonOffset(napi_env env, napi_callback_info info);
522 
523     static napi_value FrontFace(napi_env env, napi_callback_info info);
524 
525     static napi_value GenerateMipmap(napi_env env, napi_callback_info info);
526 
527     static napi_value GetActiveAttrib(napi_env env, napi_callback_info info);
528 
529     static napi_value GetActiveUniform(napi_env env, napi_callback_info info);
530 
531     static napi_value GetAttribLocation(napi_env env, napi_callback_info info);
532 
533     static napi_value GetBufferParameter(napi_env env, napi_callback_info info);
534 
535     static napi_value GetParameter(napi_env env, napi_callback_info info);
536 
537     static napi_value GetError(napi_env env, napi_callback_info info);
538 
539     static napi_value GetFramebufferAttachmentParameter(napi_env env, napi_callback_info info);
540 
541     static napi_value GetProgramParameter(napi_env env, napi_callback_info info);
542 
543     static napi_value GetProgramInfoLog(napi_env env, napi_callback_info info);
544 
545     static napi_value GetRenderbufferParameter(napi_env env, napi_callback_info info);
546 
547     static napi_value GetShaderParameter(napi_env env, napi_callback_info info);
548 
549     static napi_value GetShaderPrecisionFormat(napi_env env, napi_callback_info info);
550 
551     static napi_value GetShaderInfoLog(napi_env env, napi_callback_info info);
552 
553     static napi_value GetShaderSource(napi_env env, napi_callback_info info);
554 
555     static napi_value GetTexParameter(napi_env env, napi_callback_info info);
556 
557     static napi_value GetUniform(napi_env env, napi_callback_info info);
558 
559     static napi_value GetAttachedShaders(napi_env env, napi_callback_info info);
560 
561     static napi_value VertexAttrib1fv(napi_env env, napi_callback_info info);
562 
563     static napi_value VertexAttrib2fv(napi_env env, napi_callback_info info);
564 
565     static napi_value VertexAttrib3fv(napi_env env, napi_callback_info info);
566 
567     static napi_value VertexAttrib4fv(napi_env env, napi_callback_info info);
568 
569     static napi_value GetVertexAttrib(napi_env env, napi_callback_info info);
570 };
571 } // namespace Rosen
572 } // namespace OHOS
573 
574 #ifdef __cplusplus
575 }
576 #endif
577 
578 #endif // ROSENRENDER_ROSEN_WEBGL_RENDERING_CONTEXT_BASE