• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 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 #include "napi/native_api.h"
17 #include "native_common.h"
18 #include <EGL/egl.h>
19 #include <EGL/eglext.h>
20 #include <GLES3/gl32.h>
21 #include <cmath>
22 #include <node_api.h>
23 
24 #define NUMERIC_VALUE
25 #ifdef NUMERIC_VALUE
26 
27 #define ARRAY_INDEX_ZERO 0
28 #define ARRAY_INDEX_ONE 1
29 #define ARRAY_INDEX_TWO 2
30 #define ARRAY_INDEX_THREE 3
31 #define ARRAY_INDEX_FORE 4
32 #define INT_INIT_VAL 0
33 #define CREAT_ERROR 0
34 #define CREAT_NUM_ONE 1
35 #define PIPELINES_NUM_ONE 1
36 #define INFO_LEN_ONE 1
37 #define TEXTURES_NUM_ONE 1
38 #define IMAGE2D_LEVEL 0
39 #define IMAGE_WIDTH 256
40 #define IMAGE_HEIGHT 256
41 #define IMAGE_DEPTH 256
42 #define IMAGE_BORDER 0
43 #define GL_BUF_SIZE 256
44 #define GEN_BUF_NUM 1
45 #define COUNT_NUM 1
46 #define ATTRIB_INDEX 0
47 #define VERTEX_NUM 3
48 #define RGB_SIZE 8
49 #define INIT_WIDTH 480
50 #define INIT_HEIGHT 800
51 #define INIT_EGL_VERSION 3
52 #define VARYING_NUM 2
53 #define ATTRIB_SIZE 3
54 #define FRAME_BUFFER_OBJECT 2
55 #define CLEAR_00 0.0f
56 #define CLEAR_01 0.1f
57 #define CLEAR_10 1.0f
58 #define CLEAR_50 5.0f
59 #define SUB_DATA_SIZE 32
60 #define COMPUTE_VAL 10
61 #define POINT_LIGHT_COUNT 4
62 #define MATRIX_2 2
63 #define MATRIX_3 3
64 #define MATRIX_4 4
65 #define MATRIX_6 6
66 #define MATRIX_8 8
67 #define MATRIX_9 9
68 #define MATRIX_12 12
69 #define MATRIX_15 15
70 #define MATRIX_16 16
71 #define IMAGE2D_LEVEL_ONE 1
72 #define TIME_OUT 1000000000
73 #define SAMPLES 4
74 #define OFF_SET 32
75 #define TEX_BUF_SIZE 1024
76 
77 #undef LOG_TAG
78 #undef LOG_DOMAIN
79 #define LOG_TAG "gl32"
80 #define LOG_DOMAIN 0xFEFE
81 #define GL_MAX_TEST_NUM 0xFFFF
82 #define GL_CLIENT_VERSION 0x02
83 #define GL_MAJOR_VERSION_2 0x02
84 #define GL_MAJOR_VERSION_3 0x03
85 #define GL_MINOR_VERSION_0 0x00
86 #endif
87 
88 #define STATE_VALUE
89 #ifdef STATE_VALUE
90 
91 #define SUCCESS 0
92 #define FAILED -1
93 #endif
94 
95 typedef struct _EGLWindow {
96     EGLDisplay eglDisPlay;
97     EGLSurface eglLSurface;
98     EGLContext eglContext;
99 } EGLWindow;
100 
initGLES(EGLWindow * eglWindow)101 static void initGLES(EGLWindow *eglWindow)
102 {
103     if (eglWindow == nullptr) {
104         return;
105     }
106     eglWindow->eglDisPlay = eglGetDisplay(EGL_DEFAULT_DISPLAY);
107     if (eglWindow->eglDisPlay == EGL_NO_DISPLAY) {
108         return;
109     }
110     EGLint majorVersion = GL_MAJOR_VERSION_2;
111     EGLint minorVersion = GL_MINOR_VERSION_0;
112     EGLBoolean ret = eglInitialize(eglWindow->eglDisPlay, &majorVersion, &minorVersion);
113     if (ret == EGL_FALSE) {
114         return;
115     }
116     EGLint clientVersion = majorVersion == GL_MAJOR_VERSION_3 ? EGL_OPENGL_ES3_BIT : EGL_OPENGL_ES2_BIT;
117     const EGLint configAttribs[] = {
118         EGL_RED_SIZE,   RGB_SIZE, EGL_GREEN_SIZE,      RGB_SIZE,      EGL_BLUE_SIZE,    RGB_SIZE,
119         EGL_ALPHA_SIZE, RGB_SIZE, EGL_RENDERABLE_TYPE, clientVersion, EGL_SURFACE_TYPE, EGL_PBUFFER_BIT,
120         EGL_NONE};
121     EGLConfig config = nullptr;
122     EGLint numConfigs = 0x00;
123     ret = eglChooseConfig(eglWindow->eglDisPlay, configAttribs, &config, GL_ONE, &numConfigs);
124     if (ret == EGL_FALSE) {
125         return;
126     }
127     const EGLint surfaceAttribs[] = {EGL_WIDTH,          INIT_WIDTH,         EGL_HEIGHT,
128                                      INIT_HEIGHT,        EGL_TEXTURE_FORMAT, EGL_TEXTURE_RGBA,
129                                      EGL_TEXTURE_TARGET, EGL_TEXTURE_2D,     EGL_NONE};
130     eglWindow->eglLSurface = eglCreatePbufferSurface(eglWindow->eglDisPlay, config, surfaceAttribs);
131     if (eglWindow->eglLSurface == EGL_NO_SURFACE) {
132         return;
133     }
134     const EGLint contextAttribs[] = {EGL_CONTEXT_CLIENT_VERSION, GL_CLIENT_VERSION, EGL_NONE};
135     eglWindow->eglContext = eglCreateContext(eglWindow->eglDisPlay, config, EGL_NO_CONTEXT, contextAttribs);
136     if (eglWindow->eglContext == EGL_NO_CONTEXT) {
137         return;
138     }
139     eglMakeCurrent(eglWindow->eglDisPlay, eglWindow->eglLSurface, eglWindow->eglLSurface,
140                    eglWindow->eglContext);
141     return;
142 }
143 
destroyGLES(EGLWindow * eglWindow)144 static void destroyGLES(EGLWindow *eglWindow)
145 {
146     if (eglWindow == nullptr) {
147         return;
148     }
149     if (eglWindow->eglDisPlay != EGL_NO_DISPLAY && eglWindow->eglLSurface != EGL_NO_SURFACE) {
150         eglDestroySurface(eglWindow->eglDisPlay, eglWindow->eglLSurface);
151     }
152     if (eglWindow->eglDisPlay != EGL_NO_DISPLAY && eglWindow->eglContext != EGL_NO_CONTEXT) {
153         eglDestroyContext(eglWindow->eglDisPlay, eglWindow->eglContext);
154     }
155     if (eglWindow->eglDisPlay != EGL_NO_DISPLAY) {
156         eglTerminate(eglWindow->eglDisPlay);
157     }
158     eglSwapBuffers(eglWindow->eglDisPlay, eglWindow->eglLSurface);
159     eglWindow->eglDisPlay = EGL_NO_DISPLAY;
160     eglWindow->eglLSurface = EGL_NO_SURFACE;
161     eglWindow->eglContext = EGL_NO_CONTEXT;
162     return;
163 }
164 
165 static const char *vertexSource = "attribute vec4 position;\n"
166                                   "uniform mat4 mvpMatrix;\n"
167                                   "void main() {\n"
168                                   "  gl_Position = mvpMatrix * position;\n"
169                                   "}\n";
170 
171 static const char *fragmentSource = "precision mediump float;\n"
172                                     "uniform float color;\n"
173                                     "void main() {\n"
174                                     "  gl_FragColor = vec4(color, 0.0, 0.0, 1.0);\n;\n"
175                                     "}\n";
176 
177 static const char *vertexShaderSource = "    #version 300 es                          \n\
178                                       		layout(location = 0) in vec4 vPosition;  \n\
179                                       		layout (std140) uniform MatrixBlock { \n\
180                                                 mat4 viewMatrix;  \n\
181                                                 mat4 projMatrix; \n\
182                                             } matrices;                             \n\
183                                                                        \n\
184                                       		void main()                              \n\
185                                       		{                                        \n\
186                                       		   gl_Position = vPosition;              \n\
187                                       		}        ";
188 static const char *fragmentShaderSource = "     #version 300 es                              \n\
189                                           		precision mediump float;                     \n\
190                                           		out vec4 fragColor;                          \n\
191                                           		void main()                                  \n\
192                                           		{                                            \n\
193                                           		   fragColor = vec4 ( 1.0, 0.0, 0.0, 1.0 );  \n\
194                                           		}";
195 
196 static const char *fragmentShaderSourceCompute = "#version 310 es\n\
197                                                 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;\n\
198                                                 layout(std430, binding = 0) buffer OutputBuffer {\n\
199                                                     float data[];\n\
200                                                 } outputBuffer;\n\
201                                                 void main() {\n\
202                                                     uint index = gl_GlobalInvocationID.x;\n\
203                                                     outputBuffer.data[index] = float(index);\n\
204                                                 }";
205 static const char *fragmentShaderSourceComputeIndirect = "#version 310 es\n\
206                                                         layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;\n\
207                                                         layout(std430, binding = 0) buffer OutputBuffer {\n\
208                                                             float data[];\n\
209                                                         } outputBuffer;\n\
210                                                         void main() {\n\
211                                                             uint index = gl_GlobalInvocationID.x;\n\
212                                                             outputBuffer.data[index] = float(index);\n\
213                                                         }";
214 static EGLDisplay display = nullptr;
215 static EGLContext context = nullptr;
216 static EGLSurface surface = nullptr;
217 
218 GLuint esLoadShader(GLenum type, const char *shaderSrc);
219 static napi_value getError(const napi_env env, const GLenum glError);
220 void initGLES();
221 void destroyGLES();
222 
initGLES()223 void initGLES()
224 {
225     display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
226     eglInitialize(display, nullptr, nullptr);
227     EGLint numConfigs = INT_INIT_VAL;
228     const EGLint configAttribs[] = {EGL_RED_SIZE,  RGB_SIZE, EGL_GREEN_SIZE,      RGB_SIZE,
229                                     EGL_BLUE_SIZE, RGB_SIZE, EGL_RENDERABLE_TYPE, EGL_OPENGL_ES3_BIT,
230                                     EGL_NONE};
231     EGLConfig config = nullptr;
232     eglChooseConfig(display, configAttribs, &config, CREAT_NUM_ONE, &numConfigs);
233     const EGLint surfaceAttribs[] = {EGL_WIDTH, INIT_WIDTH, EGL_HEIGHT, INIT_HEIGHT, EGL_NONE};
234     surface = eglCreatePbufferSurface(display, config, surfaceAttribs);
235     const EGLint contextAttribs[] = {EGL_CONTEXT_CLIENT_VERSION, INIT_EGL_VERSION, EGL_NONE};
236     context = eglCreateContext(display, config, EGL_NO_CONTEXT, contextAttribs);
237     eglMakeCurrent(display, surface, surface, context);
238 }
destroyGLES()239 void destroyGLES()
240 {
241     eglDestroySurface(display, surface);
242     eglDestroyContext(display, context);
243     eglTerminate(display);
244     eglSwapBuffers(display, surface);
245 }
246 
getError(const napi_env env,const GLenum glError)247 static napi_value getError(const napi_env env, const GLenum glError)
248 {
249     napi_value result = nullptr;
250     if (GL_NO_ERROR == glError) {
251         napi_create_int32(env, SUCCESS, &result);
252     } else {
253         napi_create_int32(env, FAILED, &result);
254     }
255     return result;
256 }
257 
esLoadShader(GLenum type,const char * shaderSrc)258 GLuint esLoadShader(GLenum type, const char *shaderSrc)
259 {
260     GLuint shader = INT_INIT_VAL;
261     shader = glCreateShader(type);
262     if (CREAT_ERROR == shader) {
263         return CREAT_ERROR;
264     }
265     glShaderSource(shader, CREAT_NUM_ONE, &shaderSrc, nullptr);
266     glCompileShader(shader);
267     return shader;
268 }
269 
270 static GLuint shaderVertex = INT_INIT_VAL;
271 static GLuint shaderFragment = INT_INIT_VAL;
initProgram(void)272 static GLuint initProgram(void)
273 {
274     shaderVertex = esLoadShader(GL_VERTEX_SHADER, vertexShaderSource);
275     shaderFragment = esLoadShader(GL_FRAGMENT_SHADER, fragmentShaderSource);
276     GLuint programObject = glCreateProgram();
277     glAttachShader(programObject, shaderVertex);
278     glAttachShader(programObject, shaderFragment);
279     glLinkProgram(programObject);
280     return programObject;
281 }
282 
initProgram(const char * vertexSource,const char * fragmentSource)283 static GLuint initProgram(const char *vertexSource, const char *fragmentSource)
284 {
285     shaderVertex = esLoadShader(GL_VERTEX_SHADER, vertexSource);
286     shaderFragment = esLoadShader(GL_FRAGMENT_SHADER, fragmentSource);
287     GLuint programObject = glCreateProgram();
288     glAttachShader(programObject, shaderVertex);
289     glAttachShader(programObject, shaderFragment);
290     glLinkProgram(programObject);
291     return programObject;
292 }
293 
deleteProgram(void)294 static void deleteProgram(void)
295 {
296     glDeleteShader(shaderVertex);
297     glDeleteShader(shaderFragment);
298 }
299 
GLActiveShaderProgram(napi_env env,napi_callback_info info)300 static napi_value GLActiveShaderProgram(napi_env env, napi_callback_info info)
301 {
302     GLenum glError = GL_NO_ERROR;
303     initGLES();
304     GLuint shaderVertex = esLoadShader(GL_VERTEX_SHADER, vertexShaderSource);
305     GLuint shaderFragment = esLoadShader(GL_FRAGMENT_SHADER, fragmentShaderSource);
306     GLuint programObjectRed = glCreateProgram();
307     glAttachShader(programObjectRed, shaderVertex);
308     glAttachShader(programObjectRed, shaderFragment);
309     glLinkProgram(programObjectRed);
310     GLuint programObjectGreen = glCreateProgram();
311     glAttachShader(programObjectGreen, shaderVertex);
312     glAttachShader(programObjectGreen, shaderFragment);
313     glLinkProgram(programObjectGreen);
314     glUseProgram(programObjectRed);
315     GLuint pipeline = INT_INIT_VAL;
316     glGenProgramPipelines(PIPELINES_NUM_ONE, &pipeline);
317     glActiveShaderProgram(pipeline, programObjectGreen);
318     glError = glGetError();
319     glDeleteShader(shaderVertex);
320     glDeleteShader(shaderFragment);
321     glDeleteProgram(programObjectRed);
322     glDeleteProgram(programObjectGreen);
323     glDeleteProgramPipelines(PIPELINES_NUM_ONE, &pipeline);
324     destroyGLES();
325     napi_value result = nullptr;
326     if (GL_NO_ERROR == glError) {
327         napi_create_int32(env, SUCCESS, &result);
328     } else {
329         napi_create_int32(env, FAILED, &result);
330     }
331     return result;
332 }
333 
GLActiveTexture(napi_env env,napi_callback_info info)334 static napi_value GLActiveTexture(napi_env env, napi_callback_info info)
335 {
336     GLenum glError = GL_NO_ERROR;
337     initGLES();
338     GLuint textureId = INT_INIT_VAL;
339     glGenTextures(TEXTURES_NUM_ONE, &textureId);
340     glBindTexture(GL_TEXTURE_2D, textureId);
341     glActiveTexture(GL_TEXTURE0);
342     glError = glGetError();
343     glDeleteTextures(TEXTURES_NUM_ONE, &textureId);
344     destroyGLES();
345     return getError(env, glError);
346 }
347 
GLAttachShader(napi_env env,napi_callback_info info)348 static napi_value GLAttachShader(napi_env env, napi_callback_info info)
349 {
350     GLenum glError = GL_NO_ERROR;
351     initGLES();
352     GLuint shaderVertex = esLoadShader(GL_VERTEX_SHADER, vertexShaderSource);
353     GLuint programObjectRed = glCreateProgram();
354     glAttachShader(programObjectRed, shaderVertex);
355     glError = glGetError();
356     glLinkProgram(programObjectRed);
357     glDeleteShader(shaderVertex);
358     glDeleteProgram(programObjectRed);
359     destroyGLES();
360     return getError(env, glError);
361 }
362 
GLBeginQuery(napi_env env,napi_callback_info info)363 static napi_value GLBeginQuery(napi_env env, napi_callback_info info)
364 {
365     GLenum glError = GL_NO_ERROR;
366     initGLES();
367     GLuint queryID = INT_INIT_VAL;
368     glGenQueries(1, &queryID);
369     glBeginQuery(GL_ANY_SAMPLES_PASSED, queryID);
370     glError = glGetError();
371     glEndQuery(GL_ANY_SAMPLES_PASSED);
372     destroyGLES();
373     return getError(env, glError);
374 }
375 
GLBeginTransformFeedback(napi_env env,napi_callback_info info)376 static napi_value GLBeginTransformFeedback(napi_env env, napi_callback_info info)
377 {
378     GLenum glError = GL_NO_ERROR;
379     initGLES();
380     GLuint tfBuffer;
381     glGenBuffers(CREAT_NUM_ONE, &tfBuffer);
382     GLuint vao;
383     glGenVertexArrays(CREAT_NUM_ONE, &vao);
384     glBindVertexArray(vao);
385     GLuint shaderVertex = esLoadShader(GL_VERTEX_SHADER, vertexShaderSource);
386     GLuint shaderFragment = esLoadShader(GL_FRAGMENT_SHADER, fragmentShaderSource);
387     GLuint programObject = glCreateProgram();
388     glAttachShader(programObject, shaderVertex);
389     glAttachShader(programObject, shaderFragment);
390     glLinkProgram(programObject);
391     glUseProgram(programObject);
392     glBindBufferBase(GL_TRANSFORM_FEEDBACK_BUFFER, INT_INIT_VAL, tfBuffer);
393     glTransformFeedbackVaryings(programObject, VARYING_NUM, (const char *[]){"gl_Position", "vColor"},
394                                 GL_SEPARATE_ATTRIBS);
395     glEnable(GL_RASTERIZER_DISCARD);
396     glBeginTransformFeedback(GL_POINTS);
397     glError = glGetError();
398     glEndTransformFeedback();
399     glDeleteShader(shaderVertex);
400     glDeleteShader(shaderFragment);
401     glDeleteProgram(programObject);
402     destroyGLES();
403     return getError(env, glError);
404 }
405 
GLBindAttribLocation(napi_env env,napi_callback_info info)406 static napi_value GLBindAttribLocation(napi_env env, napi_callback_info info)
407 {
408     GLenum glError = GL_NO_ERROR;
409     initGLES();
410     GLuint programID = INT_INIT_VAL;
411     GLuint vertexShader = esLoadShader(GL_VERTEX_SHADER, vertexShaderSource);
412     GLuint fragmentShader = esLoadShader(GL_FRAGMENT_SHADER, fragmentShaderSource);
413     programID = glCreateProgram();
414     glAttachShader(programID, vertexShader);
415     glAttachShader(programID, fragmentShader);
416     glBindAttribLocation(programID, ATTRIB_INDEX, "position");
417     glError = glGetError();
418     glDeleteShader(vertexShader);
419     glDeleteShader(fragmentShader);
420     glDeleteProgram(programID);
421     destroyGLES();
422     return getError(env, glError);
423 }
424 
GLBindBuffer(napi_env env,napi_callback_info info)425 static napi_value GLBindBuffer(napi_env env, napi_callback_info info)
426 {
427     GLenum glError = GL_NO_ERROR;
428     initGLES();
429     GLuint bufferID = INT_INIT_VAL;
430     glGenBuffers(GEN_BUF_NUM, &bufferID);
431     glBindBuffer(GL_ARRAY_BUFFER, bufferID);
432     glError = glGetError();
433     glDeleteBuffers(GEN_BUF_NUM, &bufferID);
434     destroyGLES();
435     return getError(env, glError);
436 }
437 
GLBindBufferBase(napi_env env,napi_callback_info info)438 static napi_value GLBindBufferBase(napi_env env, napi_callback_info info)
439 {
440     GLenum glError = GL_NO_ERROR;
441     initGLES();
442     GLuint bufferID = INT_INIT_VAL;
443     glGenBuffers(GEN_BUF_NUM, &bufferID);
444     glBindBufferBase(GL_SHADER_STORAGE_BUFFER, INT_INIT_VAL, bufferID);
445     glError = glGetError();
446     glDeleteBuffers(GEN_BUF_NUM, &bufferID);
447     destroyGLES();
448     return getError(env, glError);
449 }
450 
GLBindBufferRange(napi_env env,napi_callback_info info)451 static napi_value GLBindBufferRange(napi_env env, napi_callback_info info)
452 {
453     GLenum glError = GL_NO_ERROR;
454     initGLES();
455     GLuint bufferID = INT_INIT_VAL;
456     glGenBuffers(GEN_BUF_NUM, &bufferID);
457     GLint data[] = {2, 4, 6, 8};
458     glBindBufferRange(GL_SHADER_STORAGE_BUFFER, INT_INIT_VAL, bufferID, INT_INIT_VAL, sizeof(data));
459     glBufferData(GL_SHADER_STORAGE_BUFFER, sizeof(data), data, GL_STATIC_DRAW);
460     glError = glGetError();
461     glDeleteBuffers(GEN_BUF_NUM, &bufferID);
462     destroyGLES();
463     return getError(env, glError);
464 }
465 
GLBindFramebuffer(napi_env env,napi_callback_info info)466 static napi_value GLBindFramebuffer(napi_env env, napi_callback_info info)
467 {
468     initGLES();
469     GLuint fbo = INT_INIT_VAL;
470     glGenFramebuffers(CREAT_NUM_ONE, &fbo);
471     glBindFramebuffer(GL_FRAMEBUFFER, fbo);
472     napi_value result = nullptr;
473     if (CREAT_ERROR != glCheckFramebufferStatus(GL_FRAMEBUFFER)) {
474         napi_create_int32(env, SUCCESS, &result);
475     } else {
476         napi_create_int32(env, FAILED, &result);
477     }
478     glDeleteFramebuffers(CREAT_NUM_ONE, &fbo);
479     destroyGLES();
480     return result;
481 }
482 
GLBindImageTexture(napi_env env,napi_callback_info info)483 static napi_value GLBindImageTexture(napi_env env, napi_callback_info info)
484 {
485     GLenum glError = GL_NO_ERROR;
486     initGLES();
487     GLuint textureId = INT_INIT_VAL;
488     glGenTextures(TEXTURES_NUM_ONE, &textureId);
489     glBindTexture(GL_TEXTURE_2D, textureId);
490     glTexStorage2D(GL_TEXTURE_2D, RGB_SIZE, GL_RGBA8, INIT_WIDTH, INIT_HEIGHT);
491     GLuint imageBindingIndex = INT_INIT_VAL;
492     glBindImageTexture(imageBindingIndex, textureId, INT_INIT_VAL, GL_FALSE, INT_INIT_VAL, GL_READ_WRITE, GL_RGBA8);
493     glError = glGetError();
494     glDeleteTextures(TEXTURES_NUM_ONE, &textureId);
495     destroyGLES();
496     return getError(env, glError);
497 }
498 
GLBindProgramPipeline(napi_env env,napi_callback_info info)499 static napi_value GLBindProgramPipeline(napi_env env, napi_callback_info info)
500 {
501     GLenum glError = GL_NO_ERROR;
502     initGLES();
503     GLuint shaderVertex = esLoadShader(GL_VERTEX_SHADER, vertexShaderSource);
504     GLuint shaderFragment = esLoadShader(GL_FRAGMENT_SHADER, fragmentShaderSource);
505     GLuint programObject = glCreateProgram();
506     glAttachShader(programObject, shaderVertex);
507     glAttachShader(programObject, shaderFragment);
508     glLinkProgram(programObject);
509     glUseProgram(programObject);
510     GLuint pipeline = INT_INIT_VAL;
511     glGenProgramPipelines(PIPELINES_NUM_ONE, &pipeline);
512     glBindProgramPipeline(pipeline);
513     glError = glGetError();
514     glDeleteShader(shaderVertex);
515     glDeleteShader(shaderFragment);
516     glDeleteProgram(programObject);
517     glDeleteProgramPipelines(PIPELINES_NUM_ONE, &pipeline);
518     destroyGLES();
519     return getError(env, glError);
520 }
521 
GLBindRenderbuffer(napi_env env,napi_callback_info info)522 static napi_value GLBindRenderbuffer(napi_env env, napi_callback_info info)
523 {
524     GLenum glError = GL_NO_ERROR;
525     initGLES();
526     GLuint rbo;
527     glGenRenderbuffers(CREAT_NUM_ONE, &rbo);
528     glBindRenderbuffer(GL_RENDERBUFFER, rbo);
529     glError = glGetError();
530     glDeleteRenderbuffers(CREAT_NUM_ONE, &rbo);
531     destroyGLES();
532     return getError(env, glError);
533 }
534 
GLBindSampler(napi_env env,napi_callback_info info)535 static napi_value GLBindSampler(napi_env env, napi_callback_info info)
536 {
537     GLenum glError = GL_NO_ERROR;
538     initGLES();
539     GLuint textureId = INT_INIT_VAL;
540     glGenTextures(TEXTURES_NUM_ONE, &textureId);
541     glBindTexture(GL_TEXTURE_2D, textureId);
542     GLuint sampler = INT_INIT_VAL;
543     glGenSamplers(CREAT_NUM_ONE, &sampler);
544     glBindSampler(textureId, sampler);
545     glError = glGetError();
546     glDeleteSamplers(CREAT_NUM_ONE, &sampler);
547     glDeleteTextures(TEXTURES_NUM_ONE, &textureId);
548     destroyGLES();
549     return getError(env, glError);
550 }
551 
GLBindTexture(napi_env env,napi_callback_info info)552 static napi_value GLBindTexture(napi_env env, napi_callback_info info)
553 {
554     GLenum glError = GL_NO_ERROR;
555     initGLES();
556     GLuint textureId = INT_INIT_VAL;
557     glGenTextures(TEXTURES_NUM_ONE, &textureId);
558     glBindTexture(GL_TEXTURE_2D, textureId);
559     glError = glGetError();
560     glDeleteTextures(TEXTURES_NUM_ONE, &textureId);
561     destroyGLES();
562     return getError(env, glError);
563 }
564 
GLBindTransformFeedback(napi_env env,napi_callback_info info)565 static napi_value GLBindTransformFeedback(napi_env env, napi_callback_info info)
566 {
567     GLenum glError = GL_NO_ERROR;
568     initGLES();
569     GLuint transformFeedback;
570     glGenTransformFeedbacks(CREAT_NUM_ONE, &transformFeedback);
571     glBindTransformFeedback(GL_TRANSFORM_FEEDBACK, transformFeedback);
572     glError = glGetError();
573     glDeleteTransformFeedbacks(CREAT_NUM_ONE, &transformFeedback);
574     destroyGLES();
575     return getError(env, glError);
576 }
577 
GLBindVertexArray(napi_env env,napi_callback_info info)578 static napi_value GLBindVertexArray(napi_env env, napi_callback_info info)
579 {
580     GLenum glError = GL_NO_ERROR;
581     initGLES();
582     GLuint vao;
583     glGenVertexArrays(CREAT_NUM_ONE, &vao);
584     glBindVertexArray(vao);
585     glError = glGetError();
586     glDeleteVertexArrays(CREAT_NUM_ONE, &vao);
587     destroyGLES();
588     return getError(env, glError);
589 }
590 
GLBindVertexBuffer(napi_env env,napi_callback_info info)591 static napi_value GLBindVertexBuffer(napi_env env, napi_callback_info info)
592 {
593     GLenum glError = GL_NO_ERROR;
594     initGLES();
595     GLfloat vertices[] = {CLEAR_00, 0.5f, CLEAR_00, -0.5f, -0.5f, CLEAR_00, 0.5f, -0.5f, CLEAR_00};
596     GLuint VAO;
597     GLuint VBO;
598     glGenVertexArrays(CREAT_NUM_ONE, &VAO);
599     glBindVertexArray(VAO);
600     glGenBuffers(CREAT_NUM_ONE, &VBO);
601     glBindBuffer(GL_ARRAY_BUFFER, VBO);
602     glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
603     glVertexAttribPointer(INT_INIT_VAL, ATTRIB_SIZE, GL_FLOAT, GL_FALSE, INT_INIT_VAL, INT_INIT_VAL);
604     glEnableVertexAttribArray(INT_INIT_VAL);
605     glBindVertexBuffer(INT_INIT_VAL, VBO, INT_INIT_VAL, sizeof(vertices));
606     glError = glGetError();
607     glDeleteBuffers(CREAT_NUM_ONE, &VBO);
608     destroyGLES();
609     return getError(env, glError);
610 }
611 
GLBlendBarrier(napi_env env,napi_callback_info info)612 static napi_value GLBlendBarrier(napi_env env, napi_callback_info info)
613 {
614     GLenum glError = GL_NO_ERROR;
615     initGLES();
616     glEnable(GL_BLEND);
617     glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
618     glBlendBarrier();
619     glError = glGetError();
620     glDisable(GL_BLEND);
621     destroyGLES();
622     return getError(env, glError);
623 }
624 
GLBlendColor(napi_env env,napi_callback_info info)625 static napi_value GLBlendColor(napi_env env, napi_callback_info info)
626 {
627     GLenum glError = GL_NO_ERROR;
628     initGLES();
629     glClear(GL_COLOR_BUFFER_BIT);
630     glEnable(GL_BLEND);
631     glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
632     glBlendColor(CLEAR_10, CLEAR_10, CLEAR_10, CLEAR_10);
633     glError = glGetError();
634     glDisable(GL_BLEND);
635     destroyGLES();
636     return getError(env, glError);
637 }
638 
GLBlendEquation(napi_env env,napi_callback_info info)639 static napi_value GLBlendEquation(napi_env env, napi_callback_info info)
640 {
641     GLenum glError = GL_NO_ERROR;
642     initGLES();
643     glClear(GL_COLOR_BUFFER_BIT);
644     glEnable(GL_BLEND);
645     glBlendEquation(GL_FUNC_ADD);
646     glError = glGetError();
647     glDisable(GL_BLEND);
648     destroyGLES();
649     return getError(env, glError);
650 }
651 
GLBlendEquationi(napi_env env,napi_callback_info info)652 static napi_value GLBlendEquationi(napi_env env, napi_callback_info info)
653 {
654     GLenum glError = GL_NO_ERROR;
655     initGLES();
656     glClear(GL_COLOR_BUFFER_BIT);
657     glEnable(GL_BLEND);
658     glBlendEquationi(CREAT_NUM_ONE, GL_FUNC_ADD);
659     glError = glGetError();
660     glDisable(GL_BLEND);
661     destroyGLES();
662     return getError(env, glError);
663 }
664 
GLBlendEquationSeparate(napi_env env,napi_callback_info info)665 static napi_value GLBlendEquationSeparate(napi_env env, napi_callback_info info)
666 {
667     GLenum glError = GL_NO_ERROR;
668     initGLES();
669     glClear(GL_COLOR_BUFFER_BIT);
670     glEnable(GL_BLEND);
671     glBlendEquationSeparate(GL_FUNC_REVERSE_SUBTRACT, GL_MAX);
672     glError = glGetError();
673     glDisable(GL_BLEND);
674     destroyGLES();
675     return getError(env, glError);
676 }
677 
GLBlendEquationSeparatei(napi_env env,napi_callback_info info)678 static napi_value GLBlendEquationSeparatei(napi_env env, napi_callback_info info)
679 {
680     GLenum glError = GL_NO_ERROR;
681     initGLES();
682     glClear(GL_COLOR_BUFFER_BIT);
683     glEnable(GL_BLEND);
684     glBlendEquationSeparatei(INT_INIT_VAL, GL_FUNC_REVERSE_SUBTRACT, GL_MAX);
685     glError = glGetError();
686     glDisable(GL_BLEND);
687     destroyGLES();
688     return getError(env, glError);
689 }
690 
GLBlendFunc(napi_env env,napi_callback_info info)691 static napi_value GLBlendFunc(napi_env env, napi_callback_info info)
692 {
693     GLenum glError = GL_NO_ERROR;
694     initGLES();
695     glEnable(GL_BLEND);
696     glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
697     glError = glGetError();
698     glDisable(GL_BLEND);
699     destroyGLES();
700     return getError(env, glError);
701 }
702 
GLBlendFunci(napi_env env,napi_callback_info info)703 static napi_value GLBlendFunci(napi_env env, napi_callback_info info)
704 {
705     GLenum glError = GL_NO_ERROR;
706     initGLES();
707     glEnable(GL_BLEND);
708     glBlendFunci(INT_INIT_VAL, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
709     glError = glGetError();
710     glDisable(GL_BLEND);
711     destroyGLES();
712     return getError(env, glError);
713 }
714 
GLBlendFuncSeparate(napi_env env,napi_callback_info info)715 static napi_value GLBlendFuncSeparate(napi_env env, napi_callback_info info)
716 {
717     GLenum glError = GL_NO_ERROR;
718     initGLES();
719     glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ZERO);
720     glError = glGetError();
721     destroyGLES();
722     return getError(env, glError);
723 }
724 
GLBlendFuncSeparatei(napi_env env,napi_callback_info info)725 static napi_value GLBlendFuncSeparatei(napi_env env, napi_callback_info info)
726 {
727     GLenum glError = GL_NO_ERROR;
728     initGLES();
729     glBlendFuncSeparatei(INT_INIT_VAL, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ZERO);
730     glError = glGetError();
731     destroyGLES();
732     return getError(env, glError);
733 }
734 
GLBlitFramebuffer(napi_env env,napi_callback_info info)735 static napi_value GLBlitFramebuffer(napi_env env, napi_callback_info info)
736 {
737     GLenum glError = GL_NO_ERROR;
738     initGLES();
739     GLuint framebuffer;
740     glGenFramebuffers(CREAT_NUM_ONE, &framebuffer);
741     glBindFramebuffer(GL_READ_FRAMEBUFFER, framebuffer);
742     GLuint texture;
743     glGenTextures(CREAT_NUM_ONE, &texture);
744     glBindTexture(GL_TEXTURE_2D, texture);
745     glTexImage2D(GL_TEXTURE_2D, INT_INIT_VAL, GL_RGBA, INIT_WIDTH, INIT_HEIGHT, INT_INIT_VAL, GL_RGBA, GL_UNSIGNED_BYTE,
746                  nullptr);
747     glFramebufferTexture2D(GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texture, INT_INIT_VAL);
748     glBindFramebuffer(GL_DRAW_FRAMEBUFFER, INT_INIT_VAL);
749     glBlitFramebuffer(INT_INIT_VAL, INT_INIT_VAL, INIT_WIDTH, INIT_HEIGHT, INT_INIT_VAL, INT_INIT_VAL, INIT_WIDTH,
750                       INIT_HEIGHT, GL_COLOR_BUFFER_BIT, GL_LINEAR);
751     glError = glGetError();
752     glDeleteTextures(CREAT_NUM_ONE, &texture);
753     glDeleteFramebuffers(CREAT_NUM_ONE, &framebuffer);
754     destroyGLES();
755     return getError(env, glError);
756 }
757 
GLBufferData(napi_env env,napi_callback_info info)758 static napi_value GLBufferData(napi_env env, napi_callback_info info)
759 {
760     GLenum glError = GL_NO_ERROR;
761     initGLES();
762     GLuint bufferID;
763     GLfloat vertices[] = {CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_00};
764     glGenBuffers(CREAT_NUM_ONE, &bufferID);
765     glBindBuffer(GL_ARRAY_BUFFER, bufferID);
766     glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
767     glError = glGetError();
768     glDeleteBuffers(GEN_BUF_NUM, &bufferID);
769     destroyGLES();
770     return getError(env, glError);
771 }
772 
GLBufferSubData(napi_env env,napi_callback_info info)773 static napi_value GLBufferSubData(napi_env env, napi_callback_info info)
774 {
775     GLenum glError = GL_NO_ERROR;
776     initGLES();
777     GLuint bufferID;
778     GLfloat vertices[] = {CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_00};
779     glGenBuffers(CREAT_NUM_ONE, &bufferID);
780     glBindBuffer(GL_ARRAY_BUFFER, bufferID);
781     glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
782     GLfloat newData[] = {CLEAR_00, CLEAR_00};
783     glBufferSubData(GL_ARRAY_BUFFER, sizeof(GLfloat) * ATTRIB_SIZE, sizeof(newData), newData);
784     glError = glGetError();
785     glDeleteBuffers(GEN_BUF_NUM, &bufferID);
786     destroyGLES();
787     return getError(env, glError);
788 }
789 
GLCheckFramebufferStatus(napi_env env,napi_callback_info info)790 static napi_value GLCheckFramebufferStatus(napi_env env, napi_callback_info info)
791 {
792     initGLES();
793     GLuint fbo = INT_INIT_VAL;
794     glGenFramebuffers(CREAT_NUM_ONE, &fbo);
795     glBindFramebuffer(GL_FRAMEBUFFER, fbo);
796     napi_value result = nullptr;
797     if (CREAT_ERROR != glCheckFramebufferStatus(GL_FRAMEBUFFER)) {
798         napi_create_int32(env, SUCCESS, &result);
799     } else {
800         napi_create_int32(env, FAILED, &result);
801     }
802     glDeleteFramebuffers(CREAT_NUM_ONE, &fbo);
803     destroyGLES();
804     return result;
805 }
806 
GLClear(napi_env env,napi_callback_info info)807 static napi_value GLClear(napi_env env, napi_callback_info info)
808 {
809     GLenum glError = GL_NO_ERROR;
810     initGLES();
811     glClear(GL_COLOR_BUFFER_BIT);
812     glError = glGetError();
813     destroyGLES();
814     return getError(env, glError);
815 }
816 
GLClearBufferfi(napi_env env,napi_callback_info info)817 static napi_value GLClearBufferfi(napi_env env, napi_callback_info info)
818 {
819     GLenum glError = GL_NO_ERROR;
820     initGLES();
821     GLuint bufferID = INT_INIT_VAL;
822     glGenBuffers(GEN_BUF_NUM, &bufferID);
823     glBindBuffer(GL_ARRAY_BUFFER, bufferID);
824     glClearBufferfi(GL_DEPTH_STENCIL, INT_INIT_VAL, CLEAR_00, INT_INIT_VAL);
825     glError = glGetError();
826     glDeleteBuffers(GEN_BUF_NUM, &bufferID);
827     destroyGLES();
828     return getError(env, glError);
829 }
830 
GLClearBufferfv(napi_env env,napi_callback_info info)831 static napi_value GLClearBufferfv(napi_env env, napi_callback_info info)
832 {
833     GLenum glError = GL_NO_ERROR;
834     initGLES();
835     GLfloat clearColor[] = {CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_00};
836     GLuint bufferID = INT_INIT_VAL;
837     glGenBuffers(GEN_BUF_NUM, &bufferID);
838     glBindBuffer(GL_ARRAY_BUFFER, bufferID);
839     glClearBufferfv(GL_COLOR, INT_INIT_VAL, clearColor);
840     glError = glGetError();
841     glDeleteBuffers(GEN_BUF_NUM, &bufferID);
842     destroyGLES();
843     return getError(env, glError);
844 }
845 
GLClearBufferiv(napi_env env,napi_callback_info info)846 static napi_value GLClearBufferiv(napi_env env, napi_callback_info info)
847 {
848     GLenum glError = GL_NO_ERROR;
849     initGLES();
850     GLuint bufferID = INT_INIT_VAL;
851     glGenBuffers(GEN_BUF_NUM, &bufferID);
852     glBindBuffer(GL_ARRAY_BUFFER, bufferID);
853     GLint clearStencil = INT_INIT_VAL;
854     glClearBufferiv(GL_STENCIL, INT_INIT_VAL, &clearStencil);
855     glError = glGetError();
856     glDeleteBuffers(GEN_BUF_NUM, &bufferID);
857     destroyGLES();
858     return getError(env, glError);
859 }
860 
GLClearBufferuiv(napi_env env,napi_callback_info info)861 static napi_value GLClearBufferuiv(napi_env env, napi_callback_info info)
862 {
863     GLenum glError = GL_NO_ERROR;
864     initGLES();
865     GLuint bufferID = INT_INIT_VAL;
866     glGenBuffers(GEN_BUF_NUM, &bufferID);
867     glBindBuffer(GL_ARRAY_BUFFER, bufferID);
868     GLuint clearColor[] = {INT_INIT_VAL, INT_INIT_VAL, INT_INIT_VAL, INT_INIT_VAL};
869     glClearBufferuiv(GL_COLOR, INT_INIT_VAL, clearColor);
870     glError = glGetError();
871     glDeleteBuffers(GEN_BUF_NUM, &bufferID);
872     destroyGLES();
873     return getError(env, glError);
874 }
875 
GLClearColor(napi_env env,napi_callback_info info)876 static napi_value GLClearColor(napi_env env, napi_callback_info info)
877 {
878     GLenum glError = GL_NO_ERROR;
879     initGLES();
880     glClearColor(CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_00);
881     glError = glGetError();
882     destroyGLES();
883     return getError(env, glError);
884 }
885 
GLClearDepthf(napi_env env,napi_callback_info info)886 static napi_value GLClearDepthf(napi_env env, napi_callback_info info)
887 {
888     GLenum glError = GL_NO_ERROR;
889     initGLES();
890     glClearDepthf(CLEAR_00);
891     glError = glGetError();
892     destroyGLES();
893     return getError(env, glError);
894 }
895 
GLClearStencil(napi_env env,napi_callback_info info)896 static napi_value GLClearStencil(napi_env env, napi_callback_info info)
897 {
898     GLenum glError = GL_NO_ERROR;
899     initGLES();
900     glClearStencil(INT_INIT_VAL);
901     glError = glGetError();
902     destroyGLES();
903     return getError(env, glError);
904 }
905 
GLClientWaitSync(napi_env env,napi_callback_info info)906 static napi_value GLClientWaitSync(napi_env env, napi_callback_info info)
907 {
908     napi_value result = nullptr;
909     initGLES();
910     GLsync sync = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, INT_INIT_VAL);
911     if (GL_WAIT_FAILED != glClientWaitSync(sync, INT_INIT_VAL, INT_INIT_VAL)) {
912         napi_create_int32(env, SUCCESS, &result);
913     } else {
914         napi_create_int32(env, FAILED, &result);
915     }
916     glDeleteSync(sync);
917     destroyGLES();
918     return result;
919 }
920 
GLColorMask(napi_env env,napi_callback_info info)921 static napi_value GLColorMask(napi_env env, napi_callback_info info)
922 {
923     GLenum glError = GL_NO_ERROR;
924     initGLES();
925     glColorMask(GL_TRUE, GL_FALSE, GL_FALSE, GL_TRUE);
926     glError = glGetError();
927     destroyGLES();
928     return getError(env, glError);
929 }
930 
GLColorMaski(napi_env env,napi_callback_info info)931 static napi_value GLColorMaski(napi_env env, napi_callback_info info)
932 {
933     GLenum glError = GL_NO_ERROR;
934     initGLES();
935     glColorMaski(INT_INIT_VAL, GL_TRUE, GL_FALSE, GL_FALSE, GL_TRUE);
936     glError = glGetError();
937     destroyGLES();
938     return getError(env, glError);
939 }
940 
GLCompileShader(napi_env env,napi_callback_info info)941 static napi_value GLCompileShader(napi_env env, napi_callback_info info)
942 {
943     GLenum glError = GL_NO_ERROR;
944     initGLES();
945     glColorMaski(INT_INIT_VAL, GL_TRUE, GL_FALSE, GL_FALSE, GL_FALSE);
946     glError = glGetError();
947     destroyGLES();
948     return getError(env, glError);
949 }
950 
GLCompressedTexImage2D(napi_env env,napi_callback_info info)951 static napi_value GLCompressedTexImage2D(napi_env env, napi_callback_info info)
952 {
953     GLenum glError = GL_NO_ERROR;
954     initGLES();
955     GLuint tex = INT_INIT_VAL;
956     glGenTextures(CREAT_NUM_ONE, &tex);
957     glBindTexture(GL_TEXTURE_2D, tex);
958     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
959     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
960     GLubyte textureData[TEX_BUF_SIZE] = {INT_INIT_VAL};
961     glCompressedTexImage2D(
962         GL_TEXTURE_2D, INT_INIT_VAL, GL_COMPRESSED_R11_EAC, SUB_DATA_SIZE, SUB_DATA_SIZE, INT_INIT_VAL,
963         ceil(SUB_DATA_SIZE / POINT_LIGHT_COUNT) * ceil(SUB_DATA_SIZE / POINT_LIGHT_COUNT) * RGB_SIZE, textureData);
964     glError = glGetError();
965     glDeleteTextures(CREAT_NUM_ONE, &tex);
966     destroyGLES();
967     return getError(env, glError);
968 }
969 
GLCompressedTexImage3D(napi_env env,napi_callback_info info)970 static napi_value GLCompressedTexImage3D(napi_env env, napi_callback_info info)
971 {
972     GLenum glError = GL_NO_ERROR;
973     initGLES();
974     GLuint tex = INT_INIT_VAL;
975     glGenTextures(CREAT_NUM_ONE, &tex);
976     glBindTexture(GL_TEXTURE_2D_ARRAY, tex);
977     glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
978     glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
979     GLubyte textureData[TEX_BUF_SIZE] = {INT_INIT_VAL};
980     glCompressedTexImage3D(GL_TEXTURE_2D_ARRAY, INT_INIT_VAL, GL_COMPRESSED_R11_EAC, SUB_DATA_SIZE, SUB_DATA_SIZE,
981                            CREAT_NUM_ONE, INT_INIT_VAL,
982                            ceil(SUB_DATA_SIZE / POINT_LIGHT_COUNT) * ceil(SUB_DATA_SIZE / POINT_LIGHT_COUNT) * RGB_SIZE,
983                            textureData);
984     glError = glGetError();
985     glDeleteTextures(CREAT_NUM_ONE, &tex);
986     destroyGLES();
987     return getError(env, glError);
988 }
989 
GLCompressedTexSubImage2D(napi_env env,napi_callback_info info)990 static napi_value GLCompressedTexSubImage2D(napi_env env, napi_callback_info info)
991 {
992     initGLES();
993     GLuint texture = INT_INIT_VAL;
994     GLubyte textureData[TEX_BUF_SIZE] = {INT_INIT_VAL};
995     glGenTextures(CREAT_NUM_ONE, &texture);
996     glBindTexture(GL_TEXTURE_2D, texture);
997     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
998     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
999     glCompressedTexImage2D(
1000         GL_TEXTURE_2D, INT_INIT_VAL, GL_COMPRESSED_R11_EAC, SUB_DATA_SIZE, SUB_DATA_SIZE, INT_INIT_VAL,
1001         ceil(SUB_DATA_SIZE / POINT_LIGHT_COUNT) * ceil(SUB_DATA_SIZE / POINT_LIGHT_COUNT) * RGB_SIZE, textureData);
1002     glCompressedTexSubImage2D(
1003         GL_TEXTURE_2D, INT_INIT_VAL, INT_INIT_VAL, INT_INIT_VAL, RGB_SIZE, RGB_SIZE, GL_COMPRESSED_R11_EAC,
1004         ceil(RGB_SIZE / POINT_LIGHT_COUNT) * ceil(RGB_SIZE / POINT_LIGHT_COUNT) * RGB_SIZE, textureData);
1005     GLenum glError = glGetError();
1006     glDeleteTextures(CREAT_NUM_ONE, &texture);
1007     destroyGLES();
1008     return getError(env, glError);
1009 }
1010 
GLCompressedTexSubImage3D(napi_env env,napi_callback_info info)1011 static napi_value GLCompressedTexSubImage3D(napi_env env, napi_callback_info info)
1012 {
1013     initGLES();
1014     GLuint texture = INT_INIT_VAL;
1015     GLubyte textureData[TEX_BUF_SIZE] = {INT_INIT_VAL};
1016     glGenTextures(CREAT_NUM_ONE, &texture);
1017     glBindTexture(GL_TEXTURE_2D_ARRAY, texture);
1018     glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
1019     glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
1020     glCompressedTexImage3D(GL_TEXTURE_2D_ARRAY, INT_INIT_VAL, GL_COMPRESSED_R11_EAC, SUB_DATA_SIZE, SUB_DATA_SIZE,
1021                            CREAT_NUM_ONE, INT_INIT_VAL,
1022                            ceil(SUB_DATA_SIZE / POINT_LIGHT_COUNT) * ceil(SUB_DATA_SIZE / POINT_LIGHT_COUNT) * RGB_SIZE,
1023                            textureData);
1024     glCompressedTexSubImage3D(
1025         GL_TEXTURE_2D_ARRAY, INT_INIT_VAL, INT_INIT_VAL, INT_INIT_VAL, INT_INIT_VAL, SUB_DATA_SIZE, SUB_DATA_SIZE,
1026         CREAT_NUM_ONE, GL_COMPRESSED_R11_EAC,
1027         ceil(SUB_DATA_SIZE / POINT_LIGHT_COUNT) * ceil(SUB_DATA_SIZE / POINT_LIGHT_COUNT) * RGB_SIZE, textureData);
1028     GLenum glError = glGetError();
1029     glDeleteTextures(CREAT_NUM_ONE, &texture);
1030     destroyGLES();
1031     return getError(env, glError);
1032 }
1033 
GLCopyBufferSubData(napi_env env,napi_callback_info info)1034 static napi_value GLCopyBufferSubData(napi_env env, napi_callback_info info)
1035 {
1036     initGLES();
1037     GLuint buffer1 = INT_INIT_VAL, buffer2 = INT_INIT_VAL;
1038     glGenBuffers(CREAT_NUM_ONE, &buffer1);
1039     glGenBuffers(CREAT_NUM_ONE, &buffer2);
1040     glBindBuffer(GL_COPY_READ_BUFFER, buffer1);
1041     glBindBuffer(GL_COPY_WRITE_BUFFER, buffer2);
1042     GLfloat vertices[] = {CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_00};
1043     glBufferData(GL_COPY_READ_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
1044     glBufferData(GL_COPY_WRITE_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
1045     GLintptr readOffset = INT_INIT_VAL;
1046     GLintptr writeOffset = INT_INIT_VAL;
1047     GLsizeiptr size = SUB_DATA_SIZE;
1048     glCopyBufferSubData(GL_COPY_READ_BUFFER, GL_COPY_WRITE_BUFFER, readOffset, writeOffset, size);
1049     GLenum glError = glGetError();
1050     glDeleteBuffers(CREAT_NUM_ONE, &buffer1);
1051     glDeleteBuffers(CREAT_NUM_ONE, &buffer2);
1052     destroyGLES();
1053     return getError(env, glError);
1054 }
1055 
GLCopyImageSubData(napi_env env,napi_callback_info info)1056 static napi_value GLCopyImageSubData(napi_env env, napi_callback_info info)
1057 {
1058     initGLES();
1059     GLuint sourceTex, destTex;
1060     glGenTextures(CREAT_NUM_ONE, &sourceTex);
1061     glGenTextures(CREAT_NUM_ONE, &destTex);
1062     glBindTexture(GL_TEXTURE_2D, sourceTex);
1063     glTexStorage2D(GL_TEXTURE_2D, CREAT_NUM_ONE, GL_RGBA8, IMAGE_WIDTH, IMAGE_HEIGHT);
1064     glBindTexture(GL_TEXTURE_2D, destTex);
1065     glTexStorage2D(GL_TEXTURE_2D, CREAT_NUM_ONE, GL_RGBA8, IMAGE_WIDTH, IMAGE_HEIGHT);
1066     GLint srcX = INT_INIT_VAL;
1067     GLint srcY = INT_INIT_VAL;
1068     GLsizei srcWidth = IMAGE_WIDTH;
1069     GLsizei srcHeight = IMAGE_WIDTH;
1070     GLint destX = INT_INIT_VAL;
1071     GLint destY = INT_INIT_VAL;
1072     glCopyImageSubData(sourceTex, GL_TEXTURE_2D, INT_INIT_VAL, srcX, srcY, INT_INIT_VAL, destTex, GL_TEXTURE_2D,
1073                        INT_INIT_VAL, destX, destY, INT_INIT_VAL, srcWidth, srcHeight, CREAT_NUM_ONE);
1074     GLenum glError = glGetError();
1075     glDeleteTextures(CREAT_NUM_ONE, &destTex);
1076     glDeleteTextures(CREAT_NUM_ONE, &sourceTex);
1077     destroyGLES();
1078     return getError(env, glError);
1079 }
1080 
GLCopyTexImage2D(napi_env env,napi_callback_info info)1081 static napi_value GLCopyTexImage2D(napi_env env, napi_callback_info info)
1082 {
1083     initGLES();
1084     GLuint texture;
1085     GLuint fbo;
1086     glGenFramebuffers(CREAT_NUM_ONE, &fbo);
1087     glBindFramebuffer(GL_FRAMEBUFFER, fbo);
1088     glGenTextures(CREAT_NUM_ONE, &texture);
1089     glBindTexture(GL_TEXTURE_2D, texture);
1090     glTexImage2D(GL_TEXTURE_2D, INT_INIT_VAL, GL_RGB, IMAGE_WIDTH, IMAGE_HEIGHT, INT_INIT_VAL, GL_RGB, GL_UNSIGNED_BYTE,
1091                  nullptr);
1092     glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texture, INT_INIT_VAL);
1093     glCopyTexImage2D(GL_TEXTURE_2D, INT_INIT_VAL, GL_RGB, INT_INIT_VAL, INT_INIT_VAL, IMAGE_WIDTH, IMAGE_HEIGHT,
1094                      INT_INIT_VAL);
1095     GLenum glError = glGetError();
1096     glDeleteFramebuffers(CREAT_NUM_ONE, &fbo);
1097     glDeleteTextures(CREAT_NUM_ONE, &texture);
1098     destroyGLES();
1099     return getError(env, glError);
1100 }
1101 
GLCopyTexSubImage2D(napi_env env,napi_callback_info info)1102 static napi_value GLCopyTexSubImage2D(napi_env env, napi_callback_info info)
1103 {
1104     initGLES();
1105     GLuint texture;
1106     GLuint fbo;
1107     glGenFramebuffers(CREAT_NUM_ONE, &fbo);
1108     glBindFramebuffer(GL_FRAMEBUFFER, fbo);
1109     glGenTextures(CREAT_NUM_ONE, &texture);
1110     glBindTexture(GL_TEXTURE_2D, texture);
1111     glTexImage2D(GL_TEXTURE_2D, INT_INIT_VAL, GL_RGB, IMAGE_WIDTH, IMAGE_HEIGHT, INT_INIT_VAL, GL_RGB, GL_UNSIGNED_BYTE,
1112                  nullptr);
1113     glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texture, INT_INIT_VAL);
1114     glCopyTexSubImage2D(GL_TEXTURE_2D, INT_INIT_VAL, INT_INIT_VAL, INT_INIT_VAL, INT_INIT_VAL, INT_INIT_VAL,
1115                         IMAGE_WIDTH, IMAGE_HEIGHT);
1116     GLenum glError = glGetError();
1117     glDeleteFramebuffers(CREAT_NUM_ONE, &fbo);
1118     glDeleteTextures(CREAT_NUM_ONE, &texture);
1119     destroyGLES();
1120     return getError(env, glError);
1121 }
1122 
GLCopyTexSubImage3D(napi_env env,napi_callback_info info)1123 static napi_value GLCopyTexSubImage3D(napi_env env, napi_callback_info info)
1124 {
1125     initGLES();
1126     GLuint texture;
1127     glGenTextures(CREAT_NUM_ONE, &texture);
1128     glBindTexture(GL_TEXTURE_3D, texture);
1129     glTexImage3D(GL_TEXTURE_3D, INT_INIT_VAL, GL_R8, MATRIX_8, MATRIX_8, MATRIX_8, INT_INIT_VAL,
1130                  GL_RED, GL_UNSIGNED_BYTE, nullptr);
1131     GLuint framebuffer;
1132     glGenFramebuffers(CREAT_NUM_ONE, &framebuffer);
1133     glBindFramebuffer(GL_FRAMEBUFFER, framebuffer);
1134     glFramebufferTextureLayer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, texture, INT_INIT_VAL, MATRIX_8);
1135     glGenerateMipmap(GL_TEXTURE_3D);
1136     glTexImage3D(GL_TEXTURE_3D, INT_INIT_VAL, GL_R8UI, MATRIX_16, MATRIX_16, MATRIX_16, INT_INIT_VAL,
1137                  GL_RED_INTEGER, GL_UNSIGNED_BYTE, nullptr);
1138     glCopyTexSubImage3D(GL_TEXTURE_3D, INT_INIT_VAL, INT_INIT_VAL, INT_INIT_VAL, MATRIX_2, MATRIX_2,
1139                         MATRIX_15, MATRIX_16, MATRIX_16);
1140     GLenum glError = glGetError();
1141     destroyGLES();
1142     return getError(env, glError);
1143 }
1144 
GLCreateProgram(napi_env env,napi_callback_info info)1145 static napi_value GLCreateProgram(napi_env env, napi_callback_info info)
1146 {
1147     napi_value result = nullptr;
1148     initGLES();
1149     GLuint programObject = glCreateProgram();
1150     if (CREAT_ERROR != programObject) {
1151         napi_create_int32(env, SUCCESS, &result);
1152     } else {
1153         napi_create_int32(env, FAILED, &result);
1154     }
1155     glDeleteProgram(programObject);
1156     destroyGLES();
1157     return result;
1158 }
1159 
GLCreateShader(napi_env env,napi_callback_info info)1160 static napi_value GLCreateShader(napi_env env, napi_callback_info info)
1161 {
1162     napi_value result = nullptr;
1163     initGLES();
1164     GLuint shader = glCreateShader(GL_VERTEX_SHADER);
1165     if (CREAT_ERROR != shader) {
1166         napi_create_int32(env, SUCCESS, &result);
1167     } else {
1168         napi_create_int32(env, FAILED, &result);
1169     }
1170     glDeleteShader(shader);
1171     destroyGLES();
1172     return result;
1173 }
1174 
GLCreateShaderProgramv(napi_env env,napi_callback_info info)1175 static napi_value GLCreateShaderProgramv(napi_env env, napi_callback_info info)
1176 {
1177     initGLES();
1178     GLuint shader = glCreateShaderProgramv(GL_VERTEX_SHADER, CREAT_NUM_ONE, &vertexShaderSource);
1179     napi_value result = nullptr;
1180     if (CREAT_ERROR == shader) {
1181         napi_create_int32(env, FAILED, &result);
1182     } else {
1183         napi_create_int32(env, SUCCESS, &result);
1184     }
1185     glDeleteShader(shader);
1186     destroyGLES();
1187     return result;
1188 }
1189 
GLCullFace(napi_env env,napi_callback_info info)1190 static napi_value GLCullFace(napi_env env, napi_callback_info info)
1191 {
1192     initGLES();
1193     glCullFace(GL_BACK);
1194     GLenum glError = glGetError();
1195     destroyGLES();
1196     return getError(env, glError);
1197 }
1198 
GLDebugMessageCallback(napi_env env,napi_callback_info info)1199 static napi_value GLDebugMessageCallback(napi_env env, napi_callback_info info)
1200 {
1201     initGLES();
1202     glDebugMessageCallback(nullptr, nullptr);
1203     GLenum glError = glGetError();
1204     destroyGLES();
1205     return getError(env, glError);
1206 }
1207 
GLDebugMessageControl(napi_env env,napi_callback_info info)1208 static napi_value GLDebugMessageControl(napi_env env, napi_callback_info info)
1209 {
1210     initGLES();
1211     glDebugMessageControl(GL_DONT_CARE, GL_DEBUG_TYPE_OTHER, GL_DEBUG_SEVERITY_LOW, INT_INIT_VAL, nullptr, GL_FALSE);
1212     GLenum glError = glGetError();
1213     destroyGLES();
1214     return getError(env, glError);
1215 }
1216 
GLDebugMessageInsert(napi_env env,napi_callback_info info)1217 static napi_value GLDebugMessageInsert(napi_env env, napi_callback_info info)
1218 {
1219     initGLES();
1220     glDebugMessageInsert(GL_DEBUG_SOURCE_APPLICATION, GL_DEBUG_TYPE_ERROR, INT_INIT_VAL, GL_DEBUG_SEVERITY_HIGH,
1221                          SUB_DATA_SIZE, "Fragment shader compilation failed");
1222     GLenum glError = glGetError();
1223     destroyGLES();
1224     return getError(env, glError);
1225 }
1226 
GLDeleteBuffers(napi_env env,napi_callback_info info)1227 static napi_value GLDeleteBuffers(napi_env env, napi_callback_info info)
1228 {
1229     initGLES();
1230     GLuint buffer = INT_INIT_VAL;
1231     glGenBuffers(CREAT_NUM_ONE, &buffer);
1232     glDeleteBuffers(CREAT_NUM_ONE, &buffer);
1233     GLenum glError = glGetError();
1234     destroyGLES();
1235     return getError(env, glError);
1236 }
1237 
GLDeleteFramebuffers(napi_env env,napi_callback_info info)1238 static napi_value GLDeleteFramebuffers(napi_env env, napi_callback_info info)
1239 {
1240     initGLES();
1241     GLuint buffer = INT_INIT_VAL;
1242     glGenFramebuffers(CREAT_NUM_ONE, &buffer);
1243     glDeleteFramebuffers(CREAT_NUM_ONE, &buffer);
1244     GLenum glError = glGetError();
1245     destroyGLES();
1246     return getError(env, glError);
1247 }
1248 
GLDeleteProgram(napi_env env,napi_callback_info info)1249 static napi_value GLDeleteProgram(napi_env env, napi_callback_info info)
1250 {
1251     initGLES();
1252     GLuint programObject = glCreateProgram();
1253     glDeleteProgram(programObject);
1254     GLenum glError = glGetError();
1255     destroyGLES();
1256     return getError(env, glError);
1257 }
1258 
GLDeleteProgramPipelines(napi_env env,napi_callback_info info)1259 static napi_value GLDeleteProgramPipelines(napi_env env, napi_callback_info info)
1260 {
1261     initGLES();
1262     GLuint pipeline = INT_INIT_VAL;
1263     glGenProgramPipelines(PIPELINES_NUM_ONE, &pipeline);
1264     glDeleteProgramPipelines(PIPELINES_NUM_ONE, &pipeline);
1265     GLenum glError = glGetError();
1266     destroyGLES();
1267     return getError(env, glError);
1268 }
1269 
GLDeleteQueries(napi_env env,napi_callback_info info)1270 static napi_value GLDeleteQueries(napi_env env, napi_callback_info info)
1271 {
1272     initGLES();
1273     GLuint queryIds = INT_INIT_VAL;
1274     glGenQueries(CREAT_NUM_ONE, &queryIds);
1275     glDeleteQueries(CREAT_NUM_ONE, &queryIds);
1276     GLenum glError = glGetError();
1277     destroyGLES();
1278     return getError(env, glError);
1279 }
1280 
GLDeleteRenderbuffers(napi_env env,napi_callback_info info)1281 static napi_value GLDeleteRenderbuffers(napi_env env, napi_callback_info info)
1282 {
1283     initGLES();
1284     GLuint rbo = INT_INIT_VAL;
1285     glGenRenderbuffers(CREAT_NUM_ONE, &rbo);
1286     glDeleteRenderbuffers(CREAT_NUM_ONE, &rbo);
1287     GLenum glError = glGetError();
1288     destroyGLES();
1289     return getError(env, glError);
1290 }
1291 
GLDeleteSamplers(napi_env env,napi_callback_info info)1292 static napi_value GLDeleteSamplers(napi_env env, napi_callback_info info)
1293 {
1294     initGLES();
1295     GLuint sampler = INT_INIT_VAL;
1296     glGenSamplers(CREAT_NUM_ONE, &sampler);
1297     glDeleteSamplers(CREAT_NUM_ONE, &sampler);
1298     GLenum glError = glGetError();
1299     destroyGLES();
1300     return getError(env, glError);
1301 }
1302 
GLDeleteShader(napi_env env,napi_callback_info info)1303 static napi_value GLDeleteShader(napi_env env, napi_callback_info info)
1304 {
1305     initGLES();
1306     GLuint shader = glCreateShader(GL_VERTEX_SHADER);
1307     glDeleteShader(shader);
1308     GLenum glError = glGetError();
1309     destroyGLES();
1310     return getError(env, glError);
1311 }
1312 
GLDeleteSync(napi_env env,napi_callback_info info)1313 static napi_value GLDeleteSync(napi_env env, napi_callback_info info)
1314 {
1315     initGLES();
1316     GLsync sync = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, INT_INIT_VAL);
1317     glClientWaitSync(sync, INT_INIT_VAL, INT_INIT_VAL);
1318     glDeleteSync(sync);
1319     GLenum glError = glGetError();
1320     destroyGLES();
1321     return getError(env, glError);
1322 }
1323 
GLDeleteTextures(napi_env env,napi_callback_info info)1324 static napi_value GLDeleteTextures(napi_env env, napi_callback_info info)
1325 {
1326     initGLES();
1327     GLuint texture = INT_INIT_VAL;
1328     glGenTextures(CREAT_NUM_ONE, &texture);
1329     glDeleteTextures(CREAT_NUM_ONE, &texture);
1330     GLenum glError = glGetError();
1331     destroyGLES();
1332     return getError(env, glError);
1333 }
1334 
GLDeleteTransformFeedbacks(napi_env env,napi_callback_info info)1335 static napi_value GLDeleteTransformFeedbacks(napi_env env, napi_callback_info info)
1336 {
1337     initGLES();
1338     GLuint transformFeedback = INT_INIT_VAL;
1339     glGenTransformFeedbacks(CREAT_NUM_ONE, &transformFeedback);
1340     glDeleteTransformFeedbacks(CREAT_NUM_ONE, &transformFeedback);
1341     GLenum glError = glGetError();
1342     destroyGLES();
1343     return getError(env, glError);
1344 }
1345 
GLDeleteVertexArrays(napi_env env,napi_callback_info info)1346 static napi_value GLDeleteVertexArrays(napi_env env, napi_callback_info info)
1347 {
1348     initGLES();
1349     GLuint vao = INT_INIT_VAL;
1350     glGenVertexArrays(CREAT_NUM_ONE, &vao);
1351     glDeleteVertexArrays(CREAT_NUM_ONE, &vao);
1352     GLenum glError = glGetError();
1353     destroyGLES();
1354     return getError(env, glError);
1355 }
1356 
GLDepthFunc(napi_env env,napi_callback_info info)1357 static napi_value GLDepthFunc(napi_env env, napi_callback_info info)
1358 {
1359     initGLES();
1360     glDepthFunc(GL_LEQUAL);
1361     GLenum glError = glGetError();
1362     destroyGLES();
1363     return getError(env, glError);
1364 }
1365 
GLDepthMask(napi_env env,napi_callback_info info)1366 static napi_value GLDepthMask(napi_env env, napi_callback_info info)
1367 {
1368     initGLES();
1369     glDepthMask(GL_TRUE);
1370     glDepthMask(GL_FALSE);
1371     GLenum glError = glGetError();
1372     destroyGLES();
1373     return getError(env, glError);
1374 }
1375 
GLDepthRangef(napi_env env,napi_callback_info info)1376 static napi_value GLDepthRangef(napi_env env, napi_callback_info info)
1377 {
1378     initGLES();
1379     glDepthRangef(CLEAR_01, CLEAR_10);
1380     GLenum glError = glGetError();
1381     destroyGLES();
1382     return getError(env, glError);
1383 }
GLDetachShader(napi_env env,napi_callback_info info)1384 static napi_value GLDetachShader(napi_env env, napi_callback_info info)
1385 {
1386     initGLES();
1387     GLuint shaderVertex = esLoadShader(GL_VERTEX_SHADER, vertexShaderSource);
1388     GLuint shaderFragment = esLoadShader(GL_FRAGMENT_SHADER, fragmentShaderSource);
1389     GLuint programObject = glCreateProgram();
1390     glAttachShader(programObject, shaderVertex);
1391     glAttachShader(programObject, shaderFragment);
1392     glLinkProgram(programObject);
1393     glDetachShader(programObject, shaderFragment);
1394     GLenum glError = glGetError();
1395     glDeleteShader(shaderVertex);
1396     glDeleteShader(shaderFragment);
1397     glDeleteProgram(programObject);
1398     destroyGLES();
1399     return getError(env, glError);
1400 }
1401 
GLDisable(napi_env env,napi_callback_info info)1402 static napi_value GLDisable(napi_env env, napi_callback_info info)
1403 {
1404     initGLES();
1405     glEnable(GL_BLEND);
1406     glDisable(GL_BLEND);
1407     GLenum glError = glGetError();
1408     destroyGLES();
1409     return getError(env, glError);
1410 }
1411 
GLDisablei(napi_env env,napi_callback_info info)1412 static napi_value GLDisablei(napi_env env, napi_callback_info info)
1413 {
1414     initGLES();
1415     glEnable(GL_BLEND);
1416     glDisablei(GL_BLEND, INT_INIT_VAL);
1417     GLenum glError = glGetError();
1418     destroyGLES();
1419     return getError(env, glError);
1420 }
1421 
GLDisableVertexAttribArray(napi_env env,napi_callback_info info)1422 static napi_value GLDisableVertexAttribArray(napi_env env, napi_callback_info info)
1423 {
1424     initGLES();
1425     GLuint vao = INT_INIT_VAL, vbo = INT_INIT_VAL;
1426     glGenVertexArrays(CREAT_NUM_ONE, &vao);
1427     glGenBuffers(CREAT_NUM_ONE, &vbo);
1428     glBindVertexArray(vao);
1429     glBindBuffer(GL_ARRAY_BUFFER, vbo);
1430     glEnableVertexAttribArray(INT_INIT_VAL);
1431     glDisableVertexAttribArray(INT_INIT_VAL);
1432     GLenum glError = glGetError();
1433     glDeleteBuffers(CREAT_NUM_ONE, &vbo);
1434     glDeleteVertexArrays(CREAT_NUM_ONE, &vao);
1435     destroyGLES();
1436     return getError(env, glError);
1437 }
1438 
GLDispatchCompute(napi_env env,napi_callback_info info)1439 static napi_value GLDispatchCompute(napi_env env, napi_callback_info info)
1440 {
1441     initGLES();
1442     GLuint shader = esLoadShader(GL_COMPUTE_SHADER, fragmentShaderSourceCompute);
1443     GLuint program = glCreateProgram();
1444     glAttachShader(program, shader);
1445     glLinkProgram(program);
1446     GLuint buffer = INT_INIT_VAL;
1447     glGenBuffers(CREAT_NUM_ONE, &buffer);
1448     glBindBuffer(GL_SHADER_STORAGE_BUFFER, buffer);
1449     glBufferData(GL_SHADER_STORAGE_BUFFER, sizeof(float) * COMPUTE_VAL, nullptr, GL_STATIC_DRAW);
1450     glBindBufferBase(GL_SHADER_STORAGE_BUFFER, INT_INIT_VAL, buffer);
1451     glUseProgram(program);
1452     glDispatchCompute(COMPUTE_VAL, CREAT_NUM_ONE, CREAT_NUM_ONE);
1453     GLenum glError = glGetError();
1454     glDeleteShader(shader);
1455     glDeleteProgram(program);
1456     glDeleteBuffers(CREAT_NUM_ONE, &buffer);
1457     destroyGLES();
1458     return getError(env, glError);
1459 }
1460 
GLDispatchComputeIndirect(napi_env env,napi_callback_info info)1461 static napi_value GLDispatchComputeIndirect(napi_env env, napi_callback_info info)
1462 {
1463     initGLES();
1464     typedef struct {
1465         GLuint num_groups_x;
1466         GLuint num_groups_y;
1467         GLuint num_groups_z;
1468     } DispatchIndirectCommand;
1469     DispatchIndirectCommand command = {INT_INIT_VAL};
1470     command.num_groups_x = COMPUTE_VAL;
1471     command.num_groups_y = CREAT_NUM_ONE;
1472     command.num_groups_z = CREAT_NUM_ONE;
1473     GLuint shader = esLoadShader(GL_COMPUTE_SHADER, fragmentShaderSourceComputeIndirect);
1474     GLuint program = glCreateProgram();
1475     glAttachShader(program, shader);
1476     glLinkProgram(program);
1477     GLuint indirectCommandBuffer = INT_INIT_VAL;
1478     glGenBuffers(CREAT_NUM_ONE, &indirectCommandBuffer);
1479     glBindBuffer(GL_DISPATCH_INDIRECT_BUFFER, indirectCommandBuffer);
1480     glBufferData(GL_DISPATCH_INDIRECT_BUFFER, sizeof(DispatchIndirectCommand), &command, GL_STATIC_DRAW);
1481     glUseProgram(program);
1482     glDispatchComputeIndirect(INT_INIT_VAL);
1483     GLenum glError = glGetError();
1484     glMemoryBarrier(GL_SHADER_STORAGE_BARRIER_BIT);
1485     glDeleteShader(shader);
1486     glDeleteProgram(program);
1487     glDeleteBuffers(CREAT_NUM_ONE, &indirectCommandBuffer);
1488     destroyGLES();
1489     return getError(env, glError);
1490 }
1491 
GLDrawArrays(napi_env env,napi_callback_info info)1492 static napi_value GLDrawArrays(napi_env env, napi_callback_info info)
1493 {
1494     initGLES();
1495     glDrawArrays(GL_TRIANGLES, ARRAY_INDEX_ZERO, ARRAY_INDEX_THREE);
1496     GLenum glError = glGetError();
1497     destroyGLES();
1498     return getError(env, glError);
1499 }
1500 
GLDrawArraysIndirect(napi_env env,napi_callback_info info)1501 static napi_value GLDrawArraysIndirect(napi_env env, napi_callback_info info)
1502 {
1503     initGLES();
1504     GLfloat vertices[] = {CLEAR_00, 0.5f, 0.5f, -0.5f, -0.5f, -0.5f};
1505     typedef struct {
1506         GLuint count;
1507         GLuint primCount;
1508         GLuint first;
1509         GLuint baseInstance;
1510     } DrawArraysIndirectCommand;
1511     DrawArraysIndirectCommand cmd;
1512     cmd.count = ARRAY_INDEX_THREE;
1513     cmd.primCount = CREAT_NUM_ONE;
1514     cmd.first = INT_INIT_VAL;
1515     cmd.baseInstance = INT_INIT_VAL;
1516     GLuint vao = GL_NO_ERROR;
1517     glGenVertexArrays(CREAT_NUM_ONE, &vao);
1518     glBindVertexArray(vao);
1519     GLuint vbo = GL_NO_ERROR;
1520     glGenBuffers(CREAT_NUM_ONE, &vbo);
1521     glBindBuffer(GL_ARRAY_BUFFER, vbo);
1522     glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
1523     GLuint drawCmdBuf = GL_NO_ERROR;
1524     glGenBuffers(CREAT_NUM_ONE, &drawCmdBuf);
1525     glBindBuffer(GL_DRAW_INDIRECT_BUFFER, drawCmdBuf);
1526     glBufferData(GL_DRAW_INDIRECT_BUFFER, sizeof(cmd), &cmd, GL_STATIC_DRAW);
1527     glDrawArraysIndirect(GL_TRIANGLES, INT_INIT_VAL);
1528     GLenum glError = glGetError();
1529     glDeleteBuffers(CREAT_NUM_ONE, &vbo);
1530     glDeleteBuffers(CREAT_NUM_ONE, &drawCmdBuf);
1531     glDeleteVertexArrays(CREAT_NUM_ONE, &vao);
1532     destroyGLES();
1533     return getError(env, glError);
1534 }
1535 
GLDrawArraysInstanced(napi_env env,napi_callback_info info)1536 static napi_value GLDrawArraysInstanced(napi_env env, napi_callback_info info)
1537 {
1538     initGLES();
1539     glDrawArraysInstanced(GL_TRIANGLES, ARRAY_INDEX_ZERO, ARRAY_INDEX_THREE, ARRAY_INDEX_THREE);
1540     GLenum glError = glGetError();
1541     destroyGLES();
1542     return getError(env, glError);
1543 }
1544 
GLDrawBuffers(napi_env env,napi_callback_info info)1545 static napi_value GLDrawBuffers(napi_env env, napi_callback_info info)
1546 {
1547     initGLES();
1548     GLuint fbo = INT_INIT_VAL;
1549     glGenFramebuffers(CREAT_NUM_ONE, &fbo);
1550     glBindFramebuffer(GL_FRAMEBUFFER, fbo);
1551     GLenum drawBufs[] = {GL_COLOR_ATTACHMENT0, GL_COLOR_ATTACHMENT1};
1552     glDrawBuffers(ARRAY_INDEX_TWO, drawBufs);
1553     GLenum glError = glGetError();
1554     glDeleteFramebuffers(CREAT_NUM_ONE, &fbo);
1555     destroyGLES();
1556     return getError(env, glError);
1557 }
1558 
GLDrawElements(napi_env env,napi_callback_info info)1559 static napi_value GLDrawElements(napi_env env, napi_callback_info info)
1560 {
1561     initGLES();
1562     glDrawElements(GL_TRIANGLES, ARRAY_INDEX_TWO, GL_UNSIGNED_SHORT, ARRAY_INDEX_ZERO);
1563     GLenum glError = glGetError();
1564     destroyGLES();
1565     return getError(env, glError);
1566 }
1567 
GLDrawElementsBaseVertex(napi_env env,napi_callback_info info)1568 static napi_value GLDrawElementsBaseVertex(napi_env env, napi_callback_info info)
1569 {
1570     initGLES();
1571     GLuint ibo = INT_INIT_VAL;
1572     GLint baseVertex = ARRAY_INDEX_ZERO;
1573     glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibo);
1574     glDrawElementsBaseVertex(GL_TRIANGLES, ARRAY_INDEX_TWO, GL_UNSIGNED_SHORT, ARRAY_INDEX_ZERO, baseVertex);
1575     GLenum glError = glGetError();
1576     glBindVertexArray(ARRAY_INDEX_ZERO);
1577     destroyGLES();
1578     return getError(env, glError);
1579 }
1580 
GLDrawElementsIndirect(napi_env env,napi_callback_info info)1581 static napi_value GLDrawElementsIndirect(napi_env env, napi_callback_info info)
1582 {
1583     initGLES();
1584     GLfloat vertices[] = {CLEAR_00, 0.5f, CLEAR_00, 0.5f, -0.5f, CLEAR_00, -0.5f, -0.5f, CLEAR_00};
1585     GLuint indices[] = {0, 1, 2};
1586     typedef struct {
1587         GLuint count;
1588         GLuint instanceCount;
1589         GLuint firstIndex;
1590         GLuint baseVertex;
1591         GLuint baseInstance;
1592     } DrawElementsIndirectCommand;
1593     DrawElementsIndirectCommand cmd;
1594     GLuint vertexBuffer, indexBuffer, indirectBuffer;
1595     unsigned int VAO;
1596     glGenVertexArrays(CREAT_NUM_ONE, &VAO);
1597     glBindVertexArray(VAO);
1598     glGenBuffers(CREAT_NUM_ONE, &vertexBuffer);
1599     glBindBuffer(GL_ARRAY_BUFFER, vertexBuffer);
1600     glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
1601     glGenBuffers(CREAT_NUM_ONE, &indexBuffer);
1602     glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indexBuffer);
1603     glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);
1604     glGenBuffers(CREAT_NUM_ONE, &indirectBuffer);
1605     cmd.count = ARRAY_INDEX_THREE;
1606     cmd.instanceCount = CREAT_NUM_ONE;
1607     cmd.firstIndex = INT_INIT_VAL;
1608     cmd.baseVertex = INT_INIT_VAL;
1609     cmd.baseInstance = INT_INIT_VAL;
1610     glBindBuffer(GL_DRAW_INDIRECT_BUFFER, indirectBuffer);
1611     glBufferData(GL_DRAW_INDIRECT_BUFFER, sizeof(DrawElementsIndirectCommand), &cmd, GL_STATIC_DRAW);
1612     glBindBuffer(GL_ARRAY_BUFFER, vertexBuffer);
1613     glEnableVertexAttribArray(INT_INIT_VAL);
1614     glVertexAttribPointer(INT_INIT_VAL, ARRAY_INDEX_THREE, GL_FLOAT, GL_FALSE, INT_INIT_VAL, INT_INIT_VAL);
1615     glBindBuffer(GL_DRAW_INDIRECT_BUFFER, indirectBuffer);
1616     glDrawElementsIndirect(GL_TRIANGLES, GL_UNSIGNED_INT, INT_INIT_VAL);
1617     GLenum glError = glGetError();
1618     glDeleteBuffers(CREAT_NUM_ONE, &vertexBuffer);
1619     glDeleteBuffers(CREAT_NUM_ONE, &indexBuffer);
1620     glDeleteBuffers(CREAT_NUM_ONE, &indirectBuffer);
1621     glDeleteVertexArrays(CREAT_NUM_ONE, &VAO);
1622     destroyGLES();
1623     return getError(env, glError);
1624 }
1625 
GLDrawElementsInstanced(napi_env env,napi_callback_info info)1626 static napi_value GLDrawElementsInstanced(napi_env env, napi_callback_info info)
1627 {
1628     GLenum glError = GL_NO_ERROR;
1629     initGLES();
1630     GLuint vbo;
1631     GLuint ibo;
1632     GLfloat vertices[] = {-0.5f, CLEAR_00, CLEAR_00, 0.5f, CLEAR_00, CLEAR_00, CLEAR_00, 0.5f, CLEAR_00};
1633     GLubyte indices[] = {0, 1, 2};
1634     glGenBuffers(ARRAY_INDEX_ONE, &vbo);
1635     glGenBuffers(ARRAY_INDEX_ONE, &ibo);
1636     glBindBuffer(GL_ARRAY_BUFFER, vbo);
1637     glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
1638     glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibo);
1639     glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);
1640     glVertexAttribPointer(ARRAY_INDEX_ZERO, ARRAY_INDEX_THREE, GL_FLOAT, GL_FALSE, ARRAY_INDEX_ZERO, ARRAY_INDEX_ZERO);
1641     glEnableVertexAttribArray(ARRAY_INDEX_ZERO);
1642     glDrawElementsInstanced(GL_TRIANGLES, ARRAY_INDEX_THREE, GL_UNSIGNED_BYTE, ARRAY_INDEX_ZERO, ARRAY_INDEX_TWO);
1643     glError = glGetError();
1644     glDeleteBuffers(CREAT_NUM_ONE, &vbo);
1645     glDeleteBuffers(CREAT_NUM_ONE, &ibo);
1646     destroyGLES();
1647     return getError(env, glError);
1648 }
1649 
GLDrawElementsInstancedBaseVertex(napi_env env,napi_callback_info info)1650 static napi_value GLDrawElementsInstancedBaseVertex(napi_env env, napi_callback_info info)
1651 {
1652     GLenum glError = GL_NO_ERROR;
1653     initGLES();
1654     GLuint vbo = INT_INIT_VAL;
1655     GLuint ibo = INT_INIT_VAL;
1656     GLfloat vertices[] = {-0.5f, -0.5f, CLEAR_00, 0.5f, -0.5f, CLEAR_00, CLEAR_00, 0.5f, CLEAR_00};
1657     GLubyte indices[] = {0, 1, 2};
1658     glGenBuffers(ARRAY_INDEX_ONE, &vbo);
1659     glGenBuffers(ARRAY_INDEX_ONE, &ibo);
1660     glBindBuffer(GL_ARRAY_BUFFER, vbo);
1661     glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
1662     glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibo);
1663     glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);
1664     glVertexAttribPointer(ARRAY_INDEX_ZERO, ARRAY_INDEX_THREE, GL_FLOAT, GL_FALSE, ARRAY_INDEX_ZERO, ARRAY_INDEX_ZERO);
1665     glEnableVertexAttribArray(ARRAY_INDEX_ZERO);
1666     glDrawElementsInstancedBaseVertex(GL_TRIANGLES, ARRAY_INDEX_THREE, GL_UNSIGNED_BYTE, ARRAY_INDEX_ZERO,
1667                                       ARRAY_INDEX_THREE, ARRAY_INDEX_ONE);
1668     glError = glGetError();
1669     glDeleteBuffers(CREAT_NUM_ONE, &vbo);
1670     glDeleteBuffers(CREAT_NUM_ONE, &ibo);
1671     destroyGLES();
1672     return getError(env, glError);
1673 }
1674 
GLDrawRangeElements(napi_env env,napi_callback_info info)1675 static napi_value GLDrawRangeElements(napi_env env, napi_callback_info info)
1676 {
1677     GLenum glError = GL_NO_ERROR;
1678     initGLES();
1679     GLuint vbo = INT_INIT_VAL;
1680     GLuint ibo = INT_INIT_VAL;
1681     glGenBuffers(CREAT_NUM_ONE, &vbo);
1682     glGenBuffers(CREAT_NUM_ONE, &ibo);
1683     GLfloat vertices[] = {-0.5f, -0.5f, CLEAR_00, 0.5f, -0.5f, CLEAR_00, CLEAR_00, 0.5f, CLEAR_00};
1684     glBindBuffer(GL_ARRAY_BUFFER, vbo);
1685     glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
1686     GLuint indices[] = {ARRAY_INDEX_ZERO, ARRAY_INDEX_ONE, ARRAY_INDEX_TWO};
1687     glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibo);
1688     glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);
1689     glVertexAttribPointer(ARRAY_INDEX_ZERO, ARRAY_INDEX_THREE, GL_FLOAT, GL_FALSE, ARRAY_INDEX_ZERO, ARRAY_INDEX_ZERO);
1690     glEnableVertexAttribArray(ARRAY_INDEX_ZERO);
1691     glDrawRangeElements(GL_TRIANGLES, ARRAY_INDEX_ONE, ARRAY_INDEX_TWO, ARRAY_INDEX_TWO, GL_UNSIGNED_BYTE,
1692                         ARRAY_INDEX_ZERO);
1693     glError = glGetError();
1694     glDeleteBuffers(CREAT_NUM_ONE, &vbo);
1695     glDeleteBuffers(CREAT_NUM_ONE, &ibo);
1696     destroyGLES();
1697     return getError(env, glError);
1698 }
1699 
GLDrawRangeElementsBaseVertex(napi_env env,napi_callback_info info)1700 static napi_value GLDrawRangeElementsBaseVertex(napi_env env, napi_callback_info info)
1701 {
1702     GLenum glError = GL_NO_ERROR;
1703     initGLES();
1704     GLuint vbo = INT_INIT_VAL;
1705     GLuint ibo = INT_INIT_VAL;
1706     GLuint vao = INT_INIT_VAL;
1707     glGenBuffers(ARRAY_INDEX_ONE, &vbo);
1708     glGenBuffers(ARRAY_INDEX_ONE, &ibo);
1709     GLfloat vertices[] = {-0.5f, -0.5f, CLEAR_00, 0.5f, -0.5f, CLEAR_00, CLEAR_00, 0.5f, CLEAR_00};
1710     GLuint indices[] = {0, 1, 2};
1711     glBindVertexArray(vao);
1712     glBindBuffer(GL_ARRAY_BUFFER, vbo);
1713     glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
1714     glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibo);
1715     glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);
1716     glVertexAttribPointer(ARRAY_INDEX_ZERO, ARRAY_INDEX_THREE, GL_FLOAT, GL_FALSE, ARRAY_INDEX_ZERO, ARRAY_INDEX_ZERO);
1717     glEnableVertexAttribArray(ARRAY_INDEX_ZERO);
1718     glDrawRangeElementsBaseVertex(GL_TRIANGLES, ARRAY_INDEX_ONE, ARRAY_INDEX_TWO, ARRAY_INDEX_TWO, GL_UNSIGNED_INT,
1719                                   ARRAY_INDEX_ZERO, ARRAY_INDEX_ONE);
1720     glError = glGetError();
1721     glDeleteBuffers(CREAT_NUM_ONE, &vbo);
1722     glDeleteBuffers(CREAT_NUM_ONE, &ibo);
1723     destroyGLES();
1724     return getError(env, glError);
1725 }
1726 
GLEnable(napi_env env,napi_callback_info info)1727 static napi_value GLEnable(napi_env env, napi_callback_info info)
1728 {
1729     initGLES();
1730     glEnable(GL_BLEND);
1731     GLenum glError = glGetError();
1732     destroyGLES();
1733     return getError(env, glError);
1734 }
1735 
GLEnablei(napi_env env,napi_callback_info info)1736 static napi_value GLEnablei(napi_env env, napi_callback_info info)
1737 {
1738     initGLES();
1739     glEnablei(GL_BLEND, ARRAY_INDEX_ZERO);
1740     GLenum glError = glGetError();
1741     glDisablei(GL_BLEND, ARRAY_INDEX_ZERO);
1742     destroyGLES();
1743     return getError(env, glError);
1744 }
1745 
GLEnableVertexAttribArray(napi_env env,napi_callback_info info)1746 static napi_value GLEnableVertexAttribArray(napi_env env, napi_callback_info info)
1747 {
1748     initGLES();
1749     GLfloat vertices[] = {CLEAR_00, 0.5f, CLEAR_00, -0.5f, -0.5f, CLEAR_00, 0.5f, -0.5f, CLEAR_00};
1750     GLuint VAO = INT_INIT_VAL;
1751     GLuint VBO = INT_INIT_VAL;
1752     glGenVertexArrays(CREAT_NUM_ONE, &VAO);
1753     glBindVertexArray(VAO);
1754     glGenBuffers(CREAT_NUM_ONE, &VBO);
1755     glBindBuffer(GL_ARRAY_BUFFER, VBO);
1756     glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
1757     glVertexAttribPointer(INT_INIT_VAL, ATTRIB_SIZE, GL_FLOAT, GL_FALSE, INT_INIT_VAL, INT_INIT_VAL);
1758     glEnableVertexAttribArray(INT_INIT_VAL);
1759     GLenum glError = glGetError();
1760     glDeleteBuffers(CREAT_NUM_ONE, &VBO);
1761     glDeleteVertexArrays(CREAT_NUM_ONE, &VAO);
1762     destroyGLES();
1763     return getError(env, glError);
1764 }
1765 
GLEndQuery(napi_env env,napi_callback_info info)1766 static napi_value GLEndQuery(napi_env env, napi_callback_info info)
1767 {
1768     initGLES();
1769     GLuint queryID = INT_INIT_VAL;
1770     glGenQueries(CREAT_NUM_ONE, &queryID);
1771     glBeginQuery(GL_ANY_SAMPLES_PASSED, queryID);
1772     glEndQuery(GL_ANY_SAMPLES_PASSED);
1773     GLenum glError = glGetError();
1774     glDeleteQueries(CREAT_NUM_ONE, &queryID);
1775     destroyGLES();
1776     return getError(env, glError);
1777 }
1778 
GLEndTransformFeedback(napi_env env,napi_callback_info info)1779 static napi_value GLEndTransformFeedback(napi_env env, napi_callback_info info)
1780 {
1781     GLenum glError = GL_NO_ERROR;
1782     initGLES();
1783     GLuint tfBuffer = INT_INIT_VAL;
1784     glGenBuffers(CREAT_NUM_ONE, &tfBuffer);
1785     GLuint vao = INT_INIT_VAL;
1786     glGenVertexArrays(CREAT_NUM_ONE, &vao);
1787     glBindVertexArray(vao);
1788     GLuint shaderVertex = esLoadShader(GL_VERTEX_SHADER, vertexShaderSource);
1789     GLuint shaderFragment = esLoadShader(GL_FRAGMENT_SHADER, fragmentShaderSource);
1790     GLuint programObject = glCreateProgram();
1791     glAttachShader(programObject, shaderVertex);
1792     glAttachShader(programObject, shaderFragment);
1793     glLinkProgram(programObject);
1794     glUseProgram(programObject);
1795     glBindBufferBase(GL_TRANSFORM_FEEDBACK_BUFFER, INT_INIT_VAL, tfBuffer);
1796     glTransformFeedbackVaryings(programObject, VARYING_NUM, (const char *[]){"gl_Position", "vColor"},
1797                                 GL_SEPARATE_ATTRIBS);
1798     glEnable(GL_RASTERIZER_DISCARD);
1799     glBeginTransformFeedback(GL_POINTS);
1800     glEndTransformFeedback();
1801     glError = glGetError();
1802     glDeleteShader(shaderVertex);
1803     glDeleteShader(shaderFragment);
1804     glDeleteProgram(programObject);
1805     glDeleteVertexArrays(CREAT_NUM_ONE, &vao);
1806     destroyGLES();
1807     return getError(env, glError);
1808 }
1809 
GLFenceSync(napi_env env,napi_callback_info info)1810 static napi_value GLFenceSync(napi_env env, napi_callback_info info)
1811 {
1812     initGLES();
1813     glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, ARRAY_INDEX_ZERO);
1814     GLenum glError = glGetError();
1815     destroyGLES();
1816     return getError(env, glError);
1817 }
1818 
GLFinish(napi_env env,napi_callback_info info)1819 static napi_value GLFinish(napi_env env, napi_callback_info info)
1820 {
1821     initGLES();
1822     glClearColor(INT_INIT_VAL, INT_INIT_VAL, INT_INIT_VAL, INT_INIT_VAL);
1823     glClear(GL_COLOR_BUFFER_BIT);
1824     glFinish();
1825     GLenum glError = glGetError();
1826     destroyGLES();
1827     return getError(env, glError);
1828 }
1829 
GLFlush(napi_env env,napi_callback_info info)1830 static napi_value GLFlush(napi_env env, napi_callback_info info)
1831 {
1832     initGLES();
1833     glClearColor(INT_INIT_VAL, INT_INIT_VAL, INT_INIT_VAL, INT_INIT_VAL);
1834     glClear(GL_COLOR_BUFFER_BIT);
1835     glFlush();
1836     GLenum glError = glGetError();
1837     destroyGLES();
1838     return getError(env, glError);
1839 }
1840 
GLFlushMappedBufferRange(napi_env env,napi_callback_info info)1841 static napi_value GLFlushMappedBufferRange(napi_env env, napi_callback_info info)
1842 {
1843     initGLES();
1844     GLuint buffer = INT_INIT_VAL;
1845     glGenBuffers(CREAT_NUM_ONE, &buffer);
1846     glBindBuffer(GL_ARRAY_BUFFER, buffer);
1847     glBufferData(GL_ARRAY_BUFFER, GL_BUF_SIZE, nullptr, GL_DYNAMIC_DRAW);
1848     glMapBufferRange(GL_ARRAY_BUFFER, INT_INIT_VAL, GL_BUF_SIZE,
1849                      GL_MAP_WRITE_BIT | GL_MAP_UNSYNCHRONIZED_BIT | GL_MAP_FLUSH_EXPLICIT_BIT);
1850 
1851     glFlushMappedBufferRange(GL_ARRAY_BUFFER, INT_INIT_VAL, GL_BUF_SIZE);
1852     GLenum glError = glGetError();
1853     glUnmapBuffer(GL_ARRAY_BUFFER);
1854     glDeleteBuffers(CREAT_NUM_ONE, &buffer);
1855     destroyGLES();
1856     return getError(env, glError);
1857 }
1858 
GLFramebufferParameteri(napi_env env,napi_callback_info info)1859 static napi_value GLFramebufferParameteri(napi_env env, napi_callback_info info)
1860 {
1861     initGLES();
1862     GLuint framebuffer = INT_INIT_VAL;
1863     glGenFramebuffers(CREAT_NUM_ONE, &framebuffer);
1864 
1865     glBindFramebuffer(GL_FRAMEBUFFER, framebuffer);
1866     glFramebufferParameteri(GL_FRAMEBUFFER, GL_FRAMEBUFFER_DEFAULT_WIDTH, INIT_HEIGHT);
1867     GLenum glError = glGetError();
1868     glDeleteFramebuffers(CREAT_NUM_ONE, &framebuffer);
1869     destroyGLES();
1870     return getError(env, glError);
1871 }
1872 
GLFramebufferRenderbuffer(napi_env env,napi_callback_info info)1873 static napi_value GLFramebufferRenderbuffer(napi_env env, napi_callback_info info)
1874 {
1875     initGLES();
1876     GLuint framebuffer;
1877     GLuint renderbuffer;
1878     glGenFramebuffers(CREAT_NUM_ONE, &framebuffer);
1879     glGenRenderbuffers(CREAT_NUM_ONE, &renderbuffer);
1880 
1881     glBindRenderbuffer(GL_RENDERBUFFER, renderbuffer);
1882     glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, INIT_HEIGHT, INIT_WIDTH);
1883     glBindFramebuffer(GL_FRAMEBUFFER, framebuffer);
1884     glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, renderbuffer);
1885 
1886     GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
1887     napi_value result = nullptr;
1888     if (status == GL_FRAMEBUFFER_COMPLETE) {
1889         napi_create_int32(env, SUCCESS, &result);
1890     } else {
1891         napi_create_int32(env, FAILED, &result);
1892     }
1893 
1894     glDeleteFramebuffers(CREAT_NUM_ONE, &framebuffer);
1895     glDeleteRenderbuffers(CREAT_NUM_ONE, &renderbuffer);
1896     destroyGLES();
1897     return result;
1898 }
1899 
GLFramebufferTexture(napi_env env,napi_callback_info info)1900 static napi_value GLFramebufferTexture(napi_env env, napi_callback_info info)
1901 {
1902     initGLES();
1903     GLuint texture = INT_INIT_VAL;
1904     glGenTextures(CREAT_NUM_ONE, &texture);
1905     glBindTexture(GL_TEXTURE_2D, texture);
1906     glTexImage2D(GL_TEXTURE_2D, INT_INIT_VAL, GL_RGB, INIT_HEIGHT, INIT_WIDTH, INT_INIT_VAL, GL_RGB, GL_UNSIGNED_BYTE,
1907                  nullptr);
1908     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
1909 
1910     GLuint framebuffer = INT_INIT_VAL;
1911     glGenFramebuffers(CREAT_NUM_ONE, &framebuffer);
1912     glBindFramebuffer(GL_FRAMEBUFFER, framebuffer);
1913 
1914     glFramebufferTexture(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, texture, INT_INIT_VAL);
1915     GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
1916 
1917     napi_value result = nullptr;
1918     if (status == GL_FRAMEBUFFER_COMPLETE) {
1919         napi_create_int32(env, SUCCESS, &result);
1920     } else {
1921         napi_create_int32(env, FAILED, &result);
1922     }
1923 
1924     glDeleteFramebuffers(INFO_LEN_ONE, &framebuffer);
1925     glDeleteTextures(INFO_LEN_ONE, &texture);
1926     destroyGLES();
1927     return result;
1928 }
1929 
GLFramebufferTexture2D(napi_env env,napi_callback_info info)1930 static napi_value GLFramebufferTexture2D(napi_env env, napi_callback_info info)
1931 {
1932     initGLES();
1933     GLuint texture = INT_INIT_VAL;
1934     glGenTextures(CREAT_NUM_ONE, &texture);
1935     glBindTexture(GL_TEXTURE_2D, texture);
1936     glTexImage2D(GL_TEXTURE_2D, INT_INIT_VAL, GL_RGB, INIT_WIDTH, INIT_WIDTH, INT_INIT_VAL, GL_RGB, GL_UNSIGNED_BYTE,
1937                  nullptr);
1938 
1939     GLuint framebuffer = INT_INIT_VAL;
1940     glGenFramebuffers(CREAT_NUM_ONE, &framebuffer);
1941     glBindFramebuffer(GL_FRAMEBUFFER, framebuffer);
1942 
1943     glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texture, INT_INIT_VAL);
1944     GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
1945     napi_value result = nullptr;
1946     if (status == GL_FRAMEBUFFER_COMPLETE) {
1947         napi_create_int32(env, SUCCESS, &result);
1948     } else {
1949         napi_create_int32(env, FAILED, &result);
1950     }
1951     glDeleteFramebuffers(INFO_LEN_ONE, &framebuffer);
1952     glDeleteTextures(INFO_LEN_ONE, &texture);
1953     destroyGLES();
1954     return result;
1955 }
1956 
GLFramebufferTextureLayer(napi_env env,napi_callback_info info)1957 static napi_value GLFramebufferTextureLayer(napi_env env, napi_callback_info info)
1958 {
1959     initGLES();
1960     GLuint texture = INT_INIT_VAL;
1961     glGenTextures(CREAT_NUM_ONE, &texture);
1962     glBindTexture(GL_TEXTURE_2D_ARRAY, texture);
1963     glTexStorage3D(GL_TEXTURE_2D_ARRAY, IMAGE2D_LEVEL_ONE, GL_RGBA8, INIT_WIDTH, INIT_HEIGHT, VARYING_NUM);
1964 
1965     GLuint framebuffer = INT_INIT_VAL;
1966     glGenFramebuffers(CREAT_NUM_ONE, &framebuffer);
1967     glBindFramebuffer(GL_FRAMEBUFFER, framebuffer);
1968 
1969     glFramebufferTextureLayer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, texture, INT_INIT_VAL, INT_INIT_VAL);
1970     GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
1971 
1972     napi_value result = nullptr;
1973     if (status == GL_FRAMEBUFFER_COMPLETE) {
1974         napi_create_int32(env, SUCCESS, &result);
1975     } else {
1976         napi_create_int32(env, FAILED, &result);
1977     }
1978     glDeleteFramebuffers(INFO_LEN_ONE, &framebuffer);
1979     glDeleteTextures(CREAT_NUM_ONE, &texture);
1980     destroyGLES();
1981     return result;
1982 }
1983 
GLFrontFace(napi_env env,napi_callback_info info)1984 static napi_value GLFrontFace(napi_env env, napi_callback_info info)
1985 {
1986     initGLES();
1987     glClearColor(CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_10);
1988     glClear(GL_COLOR_BUFFER_BIT);
1989     glFrontFace(GL_CW);
1990     GLenum glError = glGetError();
1991     destroyGLES();
1992     return getError(env, glError);
1993 }
1994 
GLGenBuffers(napi_env env,napi_callback_info info)1995 static napi_value GLGenBuffers(napi_env env, napi_callback_info info)
1996 {
1997     initGLES();
1998     GLuint buffer = INT_INIT_VAL;
1999     glGenBuffers(CREAT_NUM_ONE, &buffer);
2000     GLenum glError = glGetError();
2001     glDeleteBuffers(CREAT_NUM_ONE, &buffer);
2002     destroyGLES();
2003     return getError(env, glError);
2004 }
2005 
GLGenerateMipmap(napi_env env,napi_callback_info info)2006 static napi_value GLGenerateMipmap(napi_env env, napi_callback_info info)
2007 {
2008     initGLES();
2009     unsigned char pixels[] = {255, 255, 255, 0, 0, 0, 255, 255, 255, 0, 0, 0};
2010     GLuint texture;
2011     glGenTextures(CREAT_NUM_ONE, &texture);
2012     glBindTexture(GL_TEXTURE_2D, texture);
2013     glTexImage2D(GL_TEXTURE_2D, INT_INIT_VAL, GL_RGB, VARYING_NUM, VARYING_NUM, INT_INIT_VAL, GL_RGB, GL_UNSIGNED_BYTE,
2014                  pixels);
2015     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);
2016 
2017     glGenerateMipmap(GL_TEXTURE_2D);
2018     GLenum glError = glGetError();
2019     glDeleteTextures(CREAT_NUM_ONE, &texture);
2020     destroyGLES();
2021     return getError(env, glError);
2022 }
2023 
GLGenFramebuffers(napi_env env,napi_callback_info info)2024 static napi_value GLGenFramebuffers(napi_env env, napi_callback_info info)
2025 {
2026     initGLES();
2027     GLuint framebuffer = INT_INIT_VAL;
2028     glGenFramebuffers(CREAT_NUM_ONE, &framebuffer);
2029     GLenum glError = glGetError();
2030     glDeleteFramebuffers(CREAT_NUM_ONE, &framebuffer);
2031     destroyGLES();
2032     return getError(env, glError);
2033 }
2034 
GLGenProgramPipelines(napi_env env,napi_callback_info info)2035 static napi_value GLGenProgramPipelines(napi_env env, napi_callback_info info)
2036 {
2037     initGLES();
2038     GLuint pipeline = INT_INIT_VAL;
2039     glGenProgramPipelines(PIPELINES_NUM_ONE, &pipeline);
2040     GLenum glError = glGetError();
2041     glDeleteProgramPipelines(CREAT_NUM_ONE, &pipeline);
2042     destroyGLES();
2043     return getError(env, glError);
2044 }
2045 
GLGenQueries(napi_env env,napi_callback_info info)2046 static napi_value GLGenQueries(napi_env env, napi_callback_info info)
2047 {
2048     initGLES();
2049     GLuint query = INT_INIT_VAL;
2050     glGenQueries(CREAT_NUM_ONE, &query);
2051     GLenum glError = glGetError();
2052     glDeleteQueries(CREAT_NUM_ONE, &query);
2053     destroyGLES();
2054     return getError(env, glError);
2055 }
2056 
GLGenRenderbuffers(napi_env env,napi_callback_info info)2057 static napi_value GLGenRenderbuffers(napi_env env, napi_callback_info info)
2058 {
2059     initGLES();
2060     GLuint renderbuffer = INT_INIT_VAL;
2061     glGenRenderbuffers(CREAT_NUM_ONE, &renderbuffer);
2062     GLenum glError = glGetError();
2063     glDeleteRenderbuffers(CREAT_NUM_ONE, &renderbuffer);
2064     destroyGLES();
2065     return getError(env, glError);
2066 }
2067 
GLGenSamplers(napi_env env,napi_callback_info info)2068 static napi_value GLGenSamplers(napi_env env, napi_callback_info info)
2069 {
2070     initGLES();
2071     GLuint sampler = INT_INIT_VAL;
2072     glGenSamplers(CREAT_NUM_ONE, &sampler);
2073     GLenum glError = glGetError();
2074     glDeleteSamplers(CREAT_NUM_ONE, &sampler);
2075 
2076     destroyGLES();
2077     return getError(env, glError);
2078 }
2079 
GLGenTextures(napi_env env,napi_callback_info info)2080 static napi_value GLGenTextures(napi_env env, napi_callback_info info)
2081 {
2082     initGLES();
2083     GLuint texture = INT_INIT_VAL;
2084     glGenTextures(CREAT_NUM_ONE, &texture);
2085     GLenum glError = glGetError();
2086     glDeleteTextures(CREAT_NUM_ONE, &texture);
2087     destroyGLES();
2088     return getError(env, glError);
2089 }
2090 
GLGenTransformFeedbacks(napi_env env,napi_callback_info info)2091 static napi_value GLGenTransformFeedbacks(napi_env env, napi_callback_info info)
2092 {
2093     initGLES();
2094     GLuint transformFeedback;
2095     glGenTransformFeedbacks(CREAT_NUM_ONE, &transformFeedback);
2096     GLenum glError = glGetError();
2097     glDeleteTextures(CREAT_NUM_ONE, &transformFeedback);
2098     destroyGLES();
2099     return getError(env, glError);
2100 }
2101 
GLGenVertexArrays(napi_env env,napi_callback_info info)2102 static napi_value GLGenVertexArrays(napi_env env, napi_callback_info info)
2103 {
2104     initGLES();
2105     GLuint vertex;
2106     glGenVertexArrays(CREAT_NUM_ONE, &vertex);
2107     GLenum glError = glGetError();
2108     glDeleteVertexArrays(CREAT_NUM_ONE, &vertex);
2109     destroyGLES();
2110     return getError(env, glError);
2111 }
2112 
GLGetActiveAttrib(napi_env env,napi_callback_info info)2113 static napi_value GLGetActiveAttrib(napi_env env, napi_callback_info info)
2114 {
2115     initGLES();
2116     GLuint shaderVertex = esLoadShader(GL_VERTEX_SHADER, vertexShaderSource);
2117     GLuint shaderFragment = esLoadShader(GL_FRAGMENT_SHADER, fragmentShaderSource);
2118     GLuint programObjectRed = glCreateProgram();
2119     glAttachShader(programObjectRed, shaderVertex);
2120     glAttachShader(programObjectRed, shaderFragment);
2121     glLinkProgram(programObjectRed);
2122     glUseProgram(programObjectRed);
2123 
2124     GLint numAttribs = INT_INIT_VAL;
2125     glGetProgramiv(programObjectRed, GL_ACTIVE_ATTRIBUTES, &numAttribs);
2126     if (numAttribs == INT_INIT_VAL) {
2127         napi_value result = nullptr;
2128         napi_create_int32(env, FAILED, &result);
2129         return result;
2130     }
2131     char name[GL_BUF_SIZE];
2132     glGetActiveAttrib(programObjectRed, INT_INIT_VAL, GL_BUF_SIZE, nullptr, nullptr, nullptr, name);
2133     GLenum glError = glGetError();
2134 
2135     glDeleteShader(shaderVertex);
2136     glDeleteShader(shaderFragment);
2137     glDeleteProgram(programObjectRed);
2138     destroyGLES();
2139     return getError(env, glError);
2140 }
2141 
GLGetAttachedShaders(napi_env env,napi_callback_info info)2142 static napi_value GLGetAttachedShaders(napi_env env, napi_callback_info info)
2143 {
2144     initGLES();
2145     GLuint shaderVertex = esLoadShader(GL_VERTEX_SHADER, vertexShaderSource);
2146     GLuint shaderFragment = esLoadShader(GL_FRAGMENT_SHADER, fragmentShaderSource);
2147     GLuint programObjectRed = glCreateProgram();
2148     glAttachShader(programObjectRed, shaderVertex);
2149     glAttachShader(programObjectRed, shaderFragment);
2150     glLinkProgram(programObjectRed);
2151     glUseProgram(programObjectRed);
2152 
2153     GLint shaderCount;
2154     glGetProgramiv(programObjectRed, GL_ATTACHED_SHADERS, &shaderCount);
2155     GLuint *shaders = (GLuint *)malloc(shaderCount * sizeof(GLuint));
2156     glGetAttachedShaders(programObjectRed, shaderCount, nullptr, shaders);
2157     GLenum glError = glGetError();
2158     glDeleteShader(shaderVertex);
2159     glDeleteShader(shaderFragment);
2160     glDeleteProgram(programObjectRed);
2161     free(shaders);
2162     destroyGLES();
2163     return getError(env, glError);
2164 }
2165 
GLGetAttribLocation(napi_env env,napi_callback_info info)2166 static napi_value GLGetAttribLocation(napi_env env, napi_callback_info info)
2167 {
2168     initGLES();
2169     GLuint shaderVertex = esLoadShader(GL_VERTEX_SHADER, vertexShaderSource);
2170     GLuint shaderFragment = esLoadShader(GL_FRAGMENT_SHADER, fragmentShaderSource);
2171     GLuint programObjectRed = glCreateProgram();
2172     glAttachShader(programObjectRed, shaderVertex);
2173     glAttachShader(programObjectRed, shaderFragment);
2174     glLinkProgram(programObjectRed);
2175     glUseProgram(programObjectRed);
2176 
2177     glGetAttribLocation(programObjectRed, "vPosition");
2178     GLenum glError = glGetError();
2179     glDeleteShader(shaderVertex);
2180     glDeleteShader(shaderFragment);
2181     glDeleteProgram(programObjectRed);
2182     destroyGLES();
2183     return getError(env, glError);
2184 }
2185 
GLGetBooleani_v(napi_env env,napi_callback_info info)2186 static napi_value GLGetBooleani_v(napi_env env, napi_callback_info info)
2187 {
2188     initGLES();
2189     GLint max = INT_INIT_VAL;
2190     glGetIntegerv(GL_MAX_COLOR_ATTACHMENTS, &max);
2191     GLboolean attachments[max];
2192     glGetBooleani_v(GL_COLOR_WRITEMASK, INT_INIT_VAL, attachments);
2193     GLenum glError = glGetError();
2194     destroyGLES();
2195     return getError(env, glError);
2196 }
2197 
GLGetBooleanv(napi_env env,napi_callback_info info)2198 static napi_value GLGetBooleanv(napi_env env, napi_callback_info info)
2199 {
2200     initGLES();
2201     GLboolean val = INT_INIT_VAL;
2202     glGetBooleanv(GL_DEPTH_WRITEMASK, &val);
2203     GLenum glError = glGetError();
2204     destroyGLES();
2205     return getError(env, glError);
2206 }
2207 
GLGetBufferParameteri64v(napi_env env,napi_callback_info info)2208 static napi_value GLGetBufferParameteri64v(napi_env env, napi_callback_info info)
2209 {
2210     initGLES();
2211     GLuint buffer = INT_INIT_VAL;
2212     GLint64 bufferSize = INT_INIT_VAL;
2213     glGenBuffers(CREAT_NUM_ONE, &buffer);
2214     glBindBuffer(GL_ARRAY_BUFFER, buffer);
2215     glGetBufferParameteri64v(GL_ARRAY_BUFFER, GL_BUFFER_SIZE, &bufferSize);
2216     GLenum glError = glGetError();
2217 
2218     glDeleteBuffers(CREAT_NUM_ONE, &buffer);
2219     destroyGLES();
2220     return getError(env, glError);
2221 }
2222 
GLGetBufferParameteriv(napi_env env,napi_callback_info info)2223 static napi_value GLGetBufferParameteriv(napi_env env, napi_callback_info info)
2224 {
2225     initGLES();
2226     GLuint buffer = INT_INIT_VAL;
2227     GLint bufferUsage = INT_INIT_VAL;
2228     glGenBuffers(CREAT_NUM_ONE, &buffer);
2229     glBindBuffer(GL_ARRAY_BUFFER, buffer);
2230     glGetBufferParameteriv(GL_ARRAY_BUFFER, GL_BUFFER_USAGE, &bufferUsage);
2231     GLenum glError = glGetError();
2232 
2233     glDeleteBuffers(CREAT_NUM_ONE, &buffer);
2234     destroyGLES();
2235     return getError(env, glError);
2236 }
2237 
GLGetBufferPointerv(napi_env env,napi_callback_info info)2238 static napi_value GLGetBufferPointerv(napi_env env, napi_callback_info info)
2239 {
2240     initGLES();
2241     GLuint buffer = INT_INIT_VAL;
2242     GLvoid *bufferPtr = nullptr;
2243     glGenBuffers(CREAT_NUM_ONE, &buffer);
2244     glBindBuffer(GL_ARRAY_BUFFER, buffer);
2245     glGetBufferPointerv(GL_ARRAY_BUFFER, GL_BUFFER_MAP_POINTER, &bufferPtr);
2246     GLenum glError = glGetError();
2247     glDeleteBuffers(CREAT_NUM_ONE, &buffer);
2248     destroyGLES();
2249     return getError(env, glError);
2250 }
2251 
GLGetDebugMessageLog(napi_env env,napi_callback_info info)2252 static napi_value GLGetDebugMessageLog(napi_env env, napi_callback_info info)
2253 {
2254     initGLES();
2255     GLuint count = COUNT_NUM;
2256     GLenum source = INT_INIT_VAL;
2257     GLenum type = INT_INIT_VAL;
2258     GLuint id = INT_INIT_VAL;
2259     GLenum severity = INT_INIT_VAL;
2260     GLsizei length = INT_INIT_VAL;
2261     GLchar messageLog[GL_BUF_SIZE];
2262     GLuint countSize = GL_BUF_SIZE;
2263     glEnable(GL_DEBUG_OUTPUT);
2264     glGetDebugMessageLog(count, countSize, &source, &type, &id, &severity, &length, messageLog);
2265 
2266     GLenum glError = glGetError();
2267     destroyGLES();
2268     return getError(env, glError);
2269 }
2270 
GLGetError(napi_env env,napi_callback_info info)2271 static napi_value GLGetError(napi_env env, napi_callback_info info)
2272 {
2273     initGLES();
2274     GLenum glError = glGetError();
2275     destroyGLES();
2276     return getError(env, glError);
2277 }
2278 
GLGetFloatv(napi_env env,napi_callback_info info)2279 static napi_value GLGetFloatv(napi_env env, napi_callback_info info)
2280 {
2281     initGLES();
2282     GLfloat currentLineWidth;
2283     glLineWidth(CLEAR_50);
2284     glGetFloatv(GL_LINE_WIDTH, &currentLineWidth);
2285     GLenum glError = glGetError();
2286     destroyGLES();
2287     return getError(env, glError);
2288 }
2289 
GLGetFragDataLocation(napi_env env,napi_callback_info info)2290 static napi_value GLGetFragDataLocation(napi_env env, napi_callback_info info)
2291 {
2292     initGLES();
2293     GLuint shaderVertex = esLoadShader(GL_VERTEX_SHADER, vertexShaderSource);
2294     GLuint shaderFragment = esLoadShader(GL_FRAGMENT_SHADER, fragmentShaderSource);
2295     GLuint programObjectRed = glCreateProgram();
2296     glAttachShader(programObjectRed, shaderVertex);
2297     glAttachShader(programObjectRed, shaderFragment);
2298     glLinkProgram(programObjectRed);
2299     glUseProgram(programObjectRed);
2300 
2301     glGetFragDataLocation(programObjectRed, "fragColor");
2302     GLenum glError = glGetError();
2303     glDeleteShader(shaderVertex);
2304     glDeleteShader(shaderFragment);
2305     glDeleteProgram(programObjectRed);
2306     destroyGLES();
2307     return getError(env, glError);
2308 }
2309 
GLGetFramebufferAttachmentParameteriv(napi_env env,napi_callback_info info)2310 static napi_value GLGetFramebufferAttachmentParameteriv(napi_env env, napi_callback_info info)
2311 {
2312     initGLES();
2313     GLuint framebuffer = INT_INIT_VAL;
2314     glGenFramebuffers(CREAT_NUM_ONE, &framebuffer);
2315     glBindFramebuffer(GL_FRAMEBUFFER, framebuffer);
2316     GLint param = INT_INIT_VAL;
2317     glGetFramebufferAttachmentParameteriv(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE,
2318                                           &param);
2319     GLenum glError = glGetError();
2320 
2321     glDeleteFramebuffers(CREAT_NUM_ONE, &framebuffer);
2322     destroyGLES();
2323     return getError(env, glError);
2324 }
2325 
GLGetFramebufferParameteriv(napi_env env,napi_callback_info info)2326 static napi_value GLGetFramebufferParameteriv(napi_env env, napi_callback_info info)
2327 {
2328     initGLES();
2329     GLuint framebuffer = INT_INIT_VAL;
2330     glGenFramebuffers(CREAT_NUM_ONE, &framebuffer);
2331     glBindFramebuffer(GL_FRAMEBUFFER, framebuffer);
2332     GLint param = INT_INIT_VAL;
2333     glGetFramebufferParameteriv(GL_FRAMEBUFFER, GL_FRAMEBUFFER_DEFAULT_WIDTH, &param);
2334     GLenum glError = glGetError();
2335 
2336     glDeleteFramebuffers(CREAT_NUM_ONE, &framebuffer);
2337     destroyGLES();
2338     return getError(env, glError);
2339 }
2340 
GLGetGraphicsResetStatus(napi_env env,napi_callback_info info)2341 static napi_value GLGetGraphicsResetStatus(napi_env env, napi_callback_info info)
2342 {
2343     initGLES();
2344     napi_value result = nullptr;
2345     GLenum resetStatus = glGetGraphicsResetStatus();
2346     if (resetStatus == GL_NO_ERROR || resetStatus == GL_GUILTY_CONTEXT_RESET ||
2347         resetStatus == GL_INNOCENT_CONTEXT_RESET || resetStatus == GL_UNKNOWN_CONTEXT_RESET) {
2348         napi_create_int32(env, SUCCESS, &result);
2349     } else {
2350         napi_create_int32(env, FAILED, &result);
2351     }
2352     destroyGLES();
2353     return result;
2354 }
2355 
GLGetInteger64i_v(napi_env env,napi_callback_info info)2356 static napi_value GLGetInteger64i_v(napi_env env, napi_callback_info info)
2357 {
2358     initGLES();
2359     GLuint buffer = INT_INIT_VAL;
2360     glGenBuffers(CREAT_NUM_ONE, &buffer);
2361     glBindBuffer(GL_SHADER_STORAGE_BUFFER, buffer);
2362     GLint64 bufferSize = INT_INIT_VAL;
2363     glGetInteger64i_v(GL_SHADER_STORAGE_BUFFER_SIZE, buffer, &bufferSize);
2364     GLenum glError = glGetError();
2365     glDeleteBuffers(CREAT_NUM_ONE, &buffer);
2366     destroyGLES();
2367     return getError(env, glError);
2368 }
2369 
GLGetInteger64v(napi_env env,napi_callback_info info)2370 static napi_value GLGetInteger64v(napi_env env, napi_callback_info info)
2371 {
2372     initGLES();
2373     GLint64 value = INT_INIT_VAL;
2374     glGetInteger64v(GL_MAX_TEXTURE_SIZE, &value);
2375     GLenum glError = glGetError();
2376     return getError(env, glError);
2377 }
2378 
GLGetIntegeri_v(napi_env env,napi_callback_info info)2379 static napi_value GLGetIntegeri_v(napi_env env, napi_callback_info info)
2380 {
2381     initGLES();
2382     GLint index = INT_INIT_VAL;
2383     glGetIntegeri_v(GL_UNIFORM_BUFFER_BINDING, INT_INIT_VAL, &index);
2384     GLenum glError = glGetError();
2385     destroyGLES();
2386     return getError(env, glError);
2387 }
2388 
GLGetIntegerv(napi_env env,napi_callback_info info)2389 static napi_value GLGetIntegerv(napi_env env, napi_callback_info info)
2390 {
2391     initGLES();
2392     GLint max = INT_INIT_VAL;
2393     glGetIntegerv(GL_MAX_COLOR_ATTACHMENTS, &max);
2394     GLenum glError = glGetError();
2395     destroyGLES();
2396     return getError(env, glError);
2397 }
2398 
GLGetInternalformativ(napi_env env,napi_callback_info info)2399 static napi_value GLGetInternalformativ(napi_env env, napi_callback_info info)
2400 {
2401     initGLES();
2402     GLint numFormats = INT_INIT_VAL;
2403     glGetInternalformativ(GL_RENDERBUFFER, GL_RGB, GL_NUM_SAMPLE_COUNTS, COUNT_NUM, &numFormats);
2404     GLenum glError = glGetError();
2405     destroyGLES();
2406     return getError(env, glError);
2407 }
2408 
GLGetMultisamplefv(napi_env env,napi_callback_info info)2409 static napi_value GLGetMultisamplefv(napi_env env, napi_callback_info info)
2410 {
2411     initGLES();
2412     GLuint framebuffer = INT_INIT_VAL;
2413     GLuint renderbuffer = INT_INIT_VAL;
2414     GLuint texture = INT_INIT_VAL;
2415     glGenRenderbuffers(CREAT_NUM_ONE, &renderbuffer);
2416     glBindRenderbuffer(GL_RENDERBUFFER, renderbuffer);
2417     glRenderbufferStorageMultisample(GL_RENDERBUFFER, SAMPLES, GL_DEPTH_COMPONENT24, IMAGE_WIDTH, IMAGE_HEIGHT);
2418 
2419     glGenFramebuffers(CREAT_NUM_ONE, &framebuffer);
2420     glBindFramebuffer(GL_DRAW_FRAMEBUFFER, framebuffer);
2421     glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texture, INT_INIT_VAL);
2422     glFramebufferRenderbuffer(GL_DRAW_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, renderbuffer);
2423     GLfloat samplePositions[8][2];
2424     glGetMultisamplefv(GL_SAMPLE_POSITION, INT_INIT_VAL, &samplePositions[0][0]);
2425     GLenum glError = glGetError();
2426 
2427     glDeleteFramebuffers(CREAT_NUM_ONE, &framebuffer);
2428     glDeleteRenderbuffers(CREAT_NUM_ONE, &renderbuffer);
2429     destroyGLES();
2430     return getError(env, glError);
2431 }
2432 
GLGetObjectLabel(napi_env env,napi_callback_info info)2433 static napi_value GLGetObjectLabel(napi_env env, napi_callback_info info)
2434 {
2435     initGLES();
2436     GLuint vertexShader = esLoadShader(GL_VERTEX_SHADER, vertexShaderSource);
2437     glObjectLabel(GL_SHADER, vertexShader, FAILED, "Vertex Shader");
2438     GLsizei len;
2439     glGetObjectLabel(GL_SHADER, vertexShader, GL_MAX_LABEL_LENGTH, &len, nullptr);
2440     char label[len];
2441     glGetObjectLabel(GL_SHADER, vertexShader, len, nullptr, label);
2442     GLenum glError = glGetError();
2443     glDeleteShader(vertexShader);
2444     destroyGLES();
2445     return getError(env, glError);
2446 }
2447 
GLGetObjectPtrLabel(napi_env env,napi_callback_info info)2448 static napi_value GLGetObjectPtrLabel(napi_env env, napi_callback_info info)
2449 {
2450     initGLES();
2451     GLsync syncObject = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, INT_INIT_VAL);
2452     GLsizei outLen = INT_INIT_VAL;
2453     glGetObjectPtrLabel(syncObject, INT_INIT_VAL, &outLen, nullptr);
2454     GLenum glError = glGetError();
2455     glDeleteSync(syncObject);
2456     destroyGLES();
2457     return getError(env, glError);
2458 }
2459 
GLGetPointerv(napi_env env,napi_callback_info info)2460 static napi_value GLGetPointerv(napi_env env, napi_callback_info info)
2461 {
2462     initGLES();
2463     GLvoid *params = nullptr;
2464     glGetPointerv(GL_DEBUG_CALLBACK_USER_PARAM, &params);
2465     GLenum glError = glGetError();
2466     destroyGLES();
2467     return getError(env, glError);
2468 }
2469 
GLGetProgramBinary(napi_env env,napi_callback_info info)2470 static napi_value GLGetProgramBinary(napi_env env, napi_callback_info info)
2471 {
2472     initGLES();
2473     GLuint shaderVertex = esLoadShader(GL_VERTEX_SHADER, vertexShaderSource);
2474     GLuint shaderFragment = esLoadShader(GL_FRAGMENT_SHADER, fragmentShaderSource);
2475     GLuint program = glCreateProgram();
2476     glObjectLabel(GL_SHADER, shaderVertex, FAILED, "Vertex Shader");
2477 
2478     glAttachShader(program, shaderVertex);
2479     glAttachShader(program, shaderFragment);
2480     glLinkProgram(program);
2481 
2482     GLint binaryLength = INT_INIT_VAL;
2483     glGetProgramiv(program, GL_PROGRAM_BINARY_LENGTH, &binaryLength);
2484     GLubyte *binary = (GLubyte *)malloc(binaryLength);
2485     GLenum binaryFormat = INT_INIT_VAL;
2486     GLsizei length = INT_INIT_VAL;
2487     glGetProgramBinary(program, binaryLength, &length, &binaryFormat, binary);
2488     GLenum glError = glGetError();
2489     free(binary);
2490     glDeleteShader(shaderVertex);
2491     glDeleteShader(shaderFragment);
2492     glDeleteProgram(program);
2493     destroyGLES();
2494     return getError(env, glError);
2495 }
2496 
GLGetProgramInfoLog(napi_env env,napi_callback_info info)2497 static napi_value GLGetProgramInfoLog(napi_env env, napi_callback_info info)
2498 {
2499     initGLES();
2500     GLuint shaderVertex = esLoadShader(GL_VERTEX_SHADER, vertexShaderSource);
2501     GLuint shaderFragment = esLoadShader(GL_FRAGMENT_SHADER, fragmentShaderSource);
2502     GLuint program = glCreateProgram();
2503     glAttachShader(program, shaderVertex);
2504     glAttachShader(program, shaderFragment);
2505     glLinkProgram(program);
2506 
2507     char log[] = "My program log";
2508     glObjectLabel(GL_PROGRAM, program, sizeof(log), log);
2509 
2510     GLint length;
2511     glGetProgramiv(program, GL_INFO_LOG_LENGTH, &length);
2512     GLchar outLog[length];
2513     glGetProgramInfoLog(program, length, nullptr, outLog);
2514     GLenum glError = glGetError();
2515 
2516     glDeleteShader(shaderVertex);
2517     glDeleteShader(shaderFragment);
2518     glDeleteProgram(program);
2519     destroyGLES();
2520     return getError(env, glError);
2521 }
2522 
GLGetProgramInterfaceiv(napi_env env,napi_callback_info info)2523 static napi_value GLGetProgramInterfaceiv(napi_env env, napi_callback_info info)
2524 {
2525     initGLES();
2526     GLuint program = glCreateProgram();
2527     GLint numInterfaces;
2528     glGetProgramInterfaceiv(program, GL_UNIFORM_BLOCK, GL_ACTIVE_RESOURCES, &numInterfaces);
2529     GLenum glError = glGetError();
2530 
2531     glDeleteProgram(program);
2532     destroyGLES();
2533     return getError(env, glError);
2534 }
2535 
GLGetProgramiv(napi_env env,napi_callback_info info)2536 static napi_value GLGetProgramiv(napi_env env, napi_callback_info info)
2537 {
2538     initGLES();
2539     GLuint program = glCreateProgram();
2540     glLinkProgram(program);
2541     GLint length;
2542     glGetProgramiv(program, GL_INFO_LOG_LENGTH, &length);
2543     GLenum glError = glGetError();
2544     glDeleteProgram(program);
2545     destroyGLES();
2546     return getError(env, glError);
2547 }
2548 
GLGetProgramPipelineiv(napi_env env,napi_callback_info info)2549 static napi_value GLGetProgramPipelineiv(napi_env env, napi_callback_info info)
2550 {
2551     initGLES();
2552     GLuint pipeline = INT_INIT_VAL;
2553     glGenProgramPipelines(CREAT_NUM_ONE, &pipeline);
2554     GLint param = INT_INIT_VAL;
2555     glGetProgramPipelineiv(pipeline, GL_ACTIVE_PROGRAM, &param);
2556     GLenum glError = glGetError();
2557     glDeleteProgramPipelines(CREAT_NUM_ONE, &pipeline);
2558     destroyGLES();
2559     return getError(env, glError);
2560 }
2561 
GLGetProgramResourceIndex(napi_env env,napi_callback_info info)2562 static napi_value GLGetProgramResourceIndex(napi_env env, napi_callback_info info)
2563 {
2564     initGLES();
2565     GLuint shaderVertex = esLoadShader(GL_VERTEX_SHADER, vertexShaderSource);
2566     GLuint shaderFragment = esLoadShader(GL_FRAGMENT_SHADER, fragmentShaderSource);
2567     GLuint program = glCreateProgram();
2568     glAttachShader(program, shaderVertex);
2569     glAttachShader(program, shaderFragment);
2570     glLinkProgram(program);
2571 
2572     glGetProgramResourceIndex(program, GL_PROGRAM_INPUT, "vPosition");
2573     GLenum glError = glGetError();
2574 
2575     glDeleteShader(shaderVertex);
2576     glDeleteShader(shaderFragment);
2577     glDeleteProgram(program);
2578     destroyGLES();
2579     return getError(env, glError);
2580 }
2581 
GLGetProgramResourceiv(napi_env env,napi_callback_info info)2582 static napi_value GLGetProgramResourceiv(napi_env env, napi_callback_info info)
2583 {
2584     initGLES();
2585     GLuint shaderVertex = esLoadShader(GL_VERTEX_SHADER, vertexShaderSource);
2586     GLuint shaderFragment = esLoadShader(GL_FRAGMENT_SHADER, fragmentShaderSource);
2587     GLuint program = glCreateProgram();
2588     glAttachShader(program, shaderVertex);
2589     glAttachShader(program, shaderFragment);
2590     glLinkProgram(program);
2591 
2592     GLint numAttrs = INT_INIT_VAL;
2593     glGetProgramInterfaceiv(program, GL_PROGRAM_INPUT, GL_ACTIVE_RESOURCES, &numAttrs);
2594     GLenum properties[] = {GL_NAME_LENGTH, GL_TYPE, GL_LOCATION};
2595     GLuint index = glGetProgramResourceIndex(program, GL_PROGRAM_INPUT, "vPosition");
2596 
2597     napi_value result;
2598     if (index != GL_INVALID_INDEX) {
2599         GLint values[GL_BUF_SIZE];
2600         GLsizei length = INT_INIT_VAL;
2601         glGetProgramResourceiv(program, GL_PROGRAM_INPUT, index, VERTEX_NUM, properties, GL_BUF_SIZE, &length, values);
2602         GLenum glError = glGetError();
2603         result = getError(env, glError);
2604 
2605     } else {
2606         napi_create_int32(env, FAILED, &result);
2607     }
2608     glDeleteShader(shaderVertex);
2609     glDeleteShader(shaderFragment);
2610     glDeleteProgram(program);
2611     destroyGLES();
2612     return result;
2613 }
2614 
GLGetProgramResourceLocation(napi_env env,napi_callback_info info)2615 static napi_value GLGetProgramResourceLocation(napi_env env, napi_callback_info info)
2616 {
2617     initGLES();
2618     GLuint shaderVertex = esLoadShader(GL_VERTEX_SHADER, vertexShaderSource);
2619     GLuint shaderFragment = esLoadShader(GL_FRAGMENT_SHADER, fragmentShaderSource);
2620     GLuint program = glCreateProgram();
2621     glAttachShader(program, shaderVertex);
2622     glAttachShader(program, shaderFragment);
2623     glLinkProgram(program);
2624 
2625     glGetProgramResourceLocation(program, GL_PROGRAM_INPUT, "vPosition");
2626     GLenum glError = glGetError();
2627 
2628     glDeleteShader(shaderVertex);
2629     glDeleteShader(shaderFragment);
2630     glDeleteProgram(program);
2631     destroyGLES();
2632     return getError(env, glError);
2633 }
2634 
GLGetProgramResourceName(napi_env env,napi_callback_info info)2635 static napi_value GLGetProgramResourceName(napi_env env, napi_callback_info info)
2636 {
2637     initGLES();
2638     GLuint shaderVertex = esLoadShader(GL_VERTEX_SHADER, vertexShaderSource);
2639     GLuint shaderFragment = esLoadShader(GL_FRAGMENT_SHADER, fragmentShaderSource);
2640     GLuint program = glCreateProgram();
2641     glAttachShader(program, shaderVertex);
2642     glAttachShader(program, shaderFragment);
2643     glLinkProgram(program);
2644 
2645     GLsizei length = INT_INIT_VAL;
2646     char name[GL_BUF_SIZE];
2647     glGetProgramResourceName(program, GL_PROGRAM_INPUT, INT_INIT_VAL, GL_BUF_SIZE, &length, name);
2648     GLenum glError = glGetError();
2649 
2650     glDeleteShader(shaderVertex);
2651     glDeleteShader(shaderFragment);
2652     glDeleteProgram(program);
2653     destroyGLES();
2654     return getError(env, glError);
2655 }
2656 
GLGetQueryiv(napi_env env,napi_callback_info info)2657 static napi_value GLGetQueryiv(napi_env env, napi_callback_info info)
2658 {
2659     initGLES();
2660     GLuint query = INT_INIT_VAL;
2661     glGenQueries(CREAT_NUM_ONE, &query);
2662     glBeginQuery(GL_ANY_SAMPLES_PASSED, query);
2663     glEndQuery(GL_ANY_SAMPLES_PASSED);
2664     GLint available = INT_INIT_VAL;
2665     glGetQueryiv(GL_ANY_SAMPLES_PASSED, GL_CURRENT_QUERY, &available);
2666     GLenum glError = glGetError();
2667 
2668     glDeleteQueries(CREAT_NUM_ONE, &query);
2669     destroyGLES();
2670     return getError(env, glError);
2671 }
2672 
GLGetQueryObjectuiv(napi_env env,napi_callback_info info)2673 static napi_value GLGetQueryObjectuiv(napi_env env, napi_callback_info info)
2674 {
2675     initGLES();
2676     GLuint query = INT_INIT_VAL;
2677     glGenQueries(CREAT_NUM_ONE, &query);
2678     glBeginQuery(GL_ANY_SAMPLES_PASSED, query);
2679     glEndQuery(GL_ANY_SAMPLES_PASSED);
2680     GLint available = INT_INIT_VAL;
2681     glGetQueryObjectuiv(query, GL_QUERY_RESULT_AVAILABLE, (GLuint *)&available);
2682     GLenum glError = glGetError();
2683 
2684     glDeleteQueries(CREAT_NUM_ONE, &query);
2685     destroyGLES();
2686     return getError(env, glError);
2687 }
2688 
GLGetRenderbufferParameteriv(napi_env env,napi_callback_info info)2689 static napi_value GLGetRenderbufferParameteriv(napi_env env, napi_callback_info info)
2690 {
2691     initGLES();
2692     GLuint renderbuffer;
2693     glGenRenderbuffers(CREAT_NUM_ONE, &renderbuffer);
2694     glBindRenderbuffer(GL_RENDERBUFFER, renderbuffer);
2695     glRenderbufferStorage(GL_RENDERBUFFER, GL_RGBA4, INIT_WIDTH, INIT_HEIGHT);
2696     GLint width;
2697     glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &width);
2698     GLenum glError = glGetError();
2699     glDeleteRenderbuffers(CREAT_NUM_ONE, &renderbuffer);
2700     destroyGLES();
2701     return getError(env, glError);
2702 }
2703 
GLGetSamplerParameterfv(napi_env env,napi_callback_info info)2704 static napi_value GLGetSamplerParameterfv(napi_env env, napi_callback_info info)
2705 {
2706     initGLES();
2707     GLuint sampler = INT_INIT_VAL;
2708     glGenSamplers(CREAT_NUM_ONE, &sampler);
2709     glSamplerParameteri(sampler, GL_TEXTURE_WRAP_S, GL_REPEAT);
2710     GLfloat param = INT_INIT_VAL;
2711     glGetSamplerParameterfv(sampler, GL_TEXTURE_WRAP_S, &param);
2712     GLenum glError = glGetError();
2713     glDeleteSamplers(CREAT_NUM_ONE, &sampler);
2714     destroyGLES();
2715     return getError(env, glError);
2716 }
GLGetSamplerParameterIiv(napi_env env,napi_callback_info info)2717 static napi_value GLGetSamplerParameterIiv(napi_env env, napi_callback_info info)
2718 {
2719     initGLES();
2720     GLuint sampler = INT_INIT_VAL;
2721     glGenSamplers(CREAT_NUM_ONE, &sampler);
2722     glSamplerParameteri(sampler, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
2723 
2724     GLint param = INT_INIT_VAL;
2725     glGetSamplerParameterIiv(sampler, GL_TEXTURE_MIN_FILTER, &param);
2726     GLenum glError = glGetError();
2727     glDeleteSamplers(CREAT_NUM_ONE, &sampler);
2728     destroyGLES();
2729     return getError(env, glError);
2730 }
GLGetSamplerParameterIuiv(napi_env env,napi_callback_info info)2731 static napi_value GLGetSamplerParameterIuiv(napi_env env, napi_callback_info info)
2732 {
2733     initGLES();
2734     GLuint sampler = INT_INIT_VAL;
2735     glGenSamplers(CREAT_NUM_ONE, &sampler);
2736     glSamplerParameteri(sampler, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
2737     GLuint param = INT_INIT_VAL;
2738     glGetSamplerParameterIuiv(sampler, GL_TEXTURE_MIN_FILTER, &param);
2739     GLenum glError = glGetError();
2740     destroyGLES();
2741     return getError(env, glError);
2742 }
GLGetSamplerParameteriv(napi_env env,napi_callback_info info)2743 static napi_value GLGetSamplerParameteriv(napi_env env, napi_callback_info info)
2744 {
2745     initGLES();
2746     GLuint sampler = INT_INIT_VAL;
2747     glGenSamplers(CREAT_NUM_ONE, &sampler);
2748     glSamplerParameteri(sampler, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
2749     GLint param = INT_INIT_VAL;
2750     glGetSamplerParameteriv(sampler, GL_TEXTURE_MIN_FILTER, &param);
2751     GLenum glError = glGetError();
2752     glDeleteSamplers(CREAT_NUM_ONE, &sampler);
2753     destroyGLES();
2754     return getError(env, glError);
2755 }
2756 
GLGetShaderInfoLog(napi_env env,napi_callback_info info)2757 static napi_value GLGetShaderInfoLog(napi_env env, napi_callback_info info)
2758 {
2759     initGLES();
2760     GLuint shaderFragment = esLoadShader(GL_FRAGMENT_SHADER, fragmentShaderSource);
2761     GLchar log[SUB_DATA_SIZE];
2762     glGetShaderInfoLog(shaderFragment, SUB_DATA_SIZE, nullptr, log);
2763     GLenum glError = glGetError();
2764     glDeleteShader(shaderFragment);
2765     destroyGLES();
2766     return getError(env, glError);
2767 }
2768 
GLGetShaderiv(napi_env env,napi_callback_info info)2769 static napi_value GLGetShaderiv(napi_env env, napi_callback_info info)
2770 {
2771     initGLES();
2772     GLuint shaderVertex = esLoadShader(GL_VERTEX_SHADER, vertexShaderSource);
2773     GLint params;
2774     glGetShaderiv(shaderVertex, GL_COMPILE_STATUS, &params);
2775     GLenum glError = glGetError();
2776     glDeleteShader(shaderVertex);
2777     destroyGLES();
2778     return getError(env, glError);
2779 }
2780 
GLGetShaderPrecisionFormat(napi_env env,napi_callback_info info)2781 static napi_value GLGetShaderPrecisionFormat(napi_env env, napi_callback_info info)
2782 {
2783     initGLES();
2784     GLint range[2];
2785     GLint precision;
2786     glGetShaderPrecisionFormat(GL_FRAGMENT_SHADER, GL_HIGH_FLOAT, range, &precision);
2787     GLenum glError = glGetError();
2788     destroyGLES();
2789     return getError(env, glError);
2790 }
2791 
GLGetShaderSource(napi_env env,napi_callback_info info)2792 static napi_value GLGetShaderSource(napi_env env, napi_callback_info info)
2793 {
2794     initGLES();
2795     GLuint shaderVertex = esLoadShader(GL_VERTEX_SHADER, vertexShaderSource);
2796     GLsizei length;
2797     glGetShaderiv(shaderVertex, GL_SHADER_SOURCE_LENGTH, &length);
2798     GLenum glError = FAILED;
2799     if (length > 0) {
2800         GLchar source[length];
2801         glGetShaderSource(shaderVertex, length, nullptr, source);
2802         glError = glGetError();
2803     }
2804     glDeleteShader(shaderVertex);
2805     destroyGLES();
2806     return getError(env, glError);
2807 }
2808 
GLGetString(napi_env env,napi_callback_info info)2809 static napi_value GLGetString(napi_env env, napi_callback_info info)
2810 {
2811     initGLES();
2812     napi_value result = nullptr;
2813     const GLubyte *renderer = glGetString(GL_RENDERER);
2814     if (renderer != nullptr) {
2815         napi_create_int32(env, SUCCESS, &result);
2816     } else {
2817         napi_create_int32(env, FAILED, &result);
2818     }
2819     destroyGLES();
2820     return result;
2821 }
2822 
GLGetStringi(napi_env env,napi_callback_info info)2823 static napi_value GLGetStringi(napi_env env, napi_callback_info info)
2824 {
2825     initGLES();
2826     napi_value result = nullptr;
2827     const GLubyte *renderer = glGetStringi(GL_EXTENSIONS, INT_INIT_VAL);
2828     if (renderer != nullptr) {
2829         napi_create_int32(env, SUCCESS, &result);
2830     } else {
2831         napi_create_int32(env, FAILED, &result);
2832     }
2833     destroyGLES();
2834     return result;
2835 }
2836 
GLGetSynciv(napi_env env,napi_callback_info info)2837 static napi_value GLGetSynciv(napi_env env, napi_callback_info info)
2838 {
2839     initGLES();
2840     GLsync sync = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, INT_INIT_VAL);
2841     GLsizei sizei = INT_INIT_VAL;
2842     GLint buff[256];
2843     glGetSynciv(sync, GL_OBJECT_TYPE, sizei, nullptr, buff);
2844     GLenum glError = glGetError();
2845     glDeleteSync(sync);
2846     destroyGLES();
2847     return getError(env, glError);
2848 }
2849 
GLGetTexLevelParameterfv(napi_env env,napi_callback_info info)2850 static napi_value GLGetTexLevelParameterfv(napi_env env, napi_callback_info info)
2851 {
2852     initGLES();
2853     GLuint texture = INT_INIT_VAL;
2854     glGenTextures(CREAT_NUM_ONE, &texture);
2855     glBindTexture(GL_TEXTURE_2D, texture);
2856     GLfloat width;
2857     glGetTexLevelParameterfv(GL_TEXTURE_2D, INT_INIT_VAL, GL_TEXTURE_WIDTH, &width);
2858     GLenum glError = glGetError();
2859     glDeleteTextures(CREAT_NUM_ONE, &texture);
2860     destroyGLES();
2861     return getError(env, glError);
2862 }
2863 
GLGetTexLevelParameteriv(napi_env env,napi_callback_info info)2864 static napi_value GLGetTexLevelParameteriv(napi_env env, napi_callback_info info)
2865 {
2866     initGLES();
2867     GLuint texture = INT_INIT_VAL;
2868     glGenTextures(CREAT_NUM_ONE, &texture);
2869     glBindTexture(GL_TEXTURE_2D, texture);
2870     GLint width;
2871     glGetTexLevelParameteriv(GL_TEXTURE_2D, INT_INIT_VAL, GL_TEXTURE_WIDTH, &width);
2872     GLenum glError = glGetError();
2873     glDeleteTextures(CREAT_NUM_ONE, &texture);
2874     destroyGLES();
2875     return getError(env, glError);
2876 }
2877 
GLGetTexParameterfv(napi_env env,napi_callback_info info)2878 static napi_value GLGetTexParameterfv(napi_env env, napi_callback_info info)
2879 {
2880     initGLES();
2881     GLuint texture = INT_INIT_VAL;
2882     glGenTextures(CREAT_NUM_ONE, &texture);
2883     glBindTexture(GL_TEXTURE_2D, texture);
2884     GLfloat params;
2885     glGetTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, &params);
2886     GLenum glError = glGetError();
2887     glDeleteTextures(CREAT_NUM_ONE, &texture);
2888     destroyGLES();
2889     return getError(env, glError);
2890 }
2891 
GLGetTexParameterIiv(napi_env env,napi_callback_info info)2892 static napi_value GLGetTexParameterIiv(napi_env env, napi_callback_info info)
2893 {
2894     initGLES();
2895     GLuint texture = INT_INIT_VAL;
2896     glGenTextures(CREAT_NUM_ONE, &texture);
2897     glBindTexture(GL_TEXTURE_2D, texture);
2898     GLint params;
2899     glGetTexParameterIiv(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, &params);
2900     GLenum glError = glGetError();
2901     glDeleteTextures(CREAT_NUM_ONE, &texture);
2902     destroyGLES();
2903     return getError(env, glError);
2904 }
2905 
GLGetTexParameterIuiv(napi_env env,napi_callback_info info)2906 static napi_value GLGetTexParameterIuiv(napi_env env, napi_callback_info info)
2907 {
2908     initGLES();
2909     GLuint texture = INT_INIT_VAL;
2910     glGenTextures(CREAT_NUM_ONE, &texture);
2911     glBindTexture(GL_TEXTURE_2D, texture);
2912     GLuint params;
2913     glGetTexParameterIuiv(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, &params);
2914     GLenum glError = glGetError();
2915     glDeleteTextures(CREAT_NUM_ONE, &texture);
2916     destroyGLES();
2917     return getError(env, glError);
2918 }
2919 
GLGetTexParameteriv(napi_env env,napi_callback_info info)2920 static napi_value GLGetTexParameteriv(napi_env env, napi_callback_info info)
2921 {
2922     initGLES();
2923     GLuint texture = INT_INIT_VAL;
2924     glGenTextures(CREAT_NUM_ONE, &texture);
2925     glBindTexture(GL_TEXTURE_2D, texture);
2926     GLint params;
2927     glGetTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, &params);
2928     GLenum glError = glGetError();
2929     glDeleteTextures(CREAT_NUM_ONE, &texture);
2930     destroyGLES();
2931     return getError(env, glError);
2932 }
2933 
GLGetTransformFeedbackVarying(napi_env env,napi_callback_info info)2934 static napi_value GLGetTransformFeedbackVarying(napi_env env, napi_callback_info info)
2935 {
2936     initGLES();
2937     GLuint program = initProgram(vertexShaderSource, fragmentShaderSource);
2938     GLint index = glGetAttribLocation(program, "vPosition");
2939     glBindAttribLocation(program, index, "vPosition");
2940     const char *varyings = "gl_Position";
2941     glTransformFeedbackVaryings(program, COUNT_NUM, &varyings, GL_INTERLEAVED_ATTRIBS);
2942     glLinkProgram(program);
2943     GLsizei size;
2944     GLenum type;
2945     GLchar name[SUB_DATA_SIZE];
2946     glGetTransformFeedbackVarying(program, INT_INIT_VAL, SUB_DATA_SIZE, nullptr, &size, &type, name);
2947     GLenum glError = glGetError();
2948     deleteProgram();
2949     glDeleteProgram(program);
2950     destroyGLES();
2951     return getError(env, glError);
2952 }
2953 
GLGetUniformBlockIndex(napi_env env,napi_callback_info info)2954 static napi_value GLGetUniformBlockIndex(napi_env env, napi_callback_info info)
2955 {
2956     initGLES();
2957     GLuint program = initProgram();
2958     GLuint blockIndex = glGetUniformBlockIndex(program, "MatrixBlock");
2959     GLenum glError = glGetError();
2960     if (blockIndex != GL_INVALID_INDEX) {
2961         glError = SUCCESS;
2962     }
2963     deleteProgram();
2964     glDeleteProgram(program);
2965     destroyGLES();
2966     return getError(env, glError);
2967 }
2968 
GLGetUniformfv(napi_env env,napi_callback_info info)2969 static napi_value GLGetUniformfv(napi_env env, napi_callback_info info)
2970 {
2971     initGLES();
2972     GLuint program = initProgram(vertexSource, fragmentSource);
2973     GLint location = glGetUniformLocation(program, "color");
2974     GLfloat param[4];
2975     glGetUniformfv(program, location, param);
2976     GLenum glError = glGetError();
2977     deleteProgram();
2978     glDeleteProgram(program);
2979     destroyGLES();
2980     return getError(env, glError);
2981 }
2982 
GLGetUniformIndices(napi_env env,napi_callback_info info)2983 static napi_value GLGetUniformIndices(napi_env env, napi_callback_info info)
2984 {
2985     initGLES();
2986     GLuint program = initProgram(vertexShaderSource, fragmentShaderSource);
2987     GLuint Indices[2];
2988     GLchar *names[] = {};
2989     glGetUniformIndices(program, INT_INIT_VAL, names, Indices);
2990     GLenum glError = glGetError();
2991     deleteProgram();
2992     glDeleteProgram(program);
2993     destroyGLES();
2994     return getError(env, glError);
2995 }
2996 
GLGetUniformiv(napi_env env,napi_callback_info info)2997 static napi_value GLGetUniformiv(napi_env env, napi_callback_info info)
2998 {
2999     initGLES();
3000     GLuint program = initProgram(vertexSource, fragmentSource);
3001     GLint location = glGetUniformLocation(program, "color");
3002     GLint param[4];
3003     glGetUniformiv(program, location, param);
3004     GLenum glError = glGetError();
3005     deleteProgram();
3006     glDeleteProgram(program);
3007     destroyGLES();
3008     return getError(env, glError);
3009 }
3010 
GLGetUniformLocation(napi_env env,napi_callback_info info)3011 static napi_value GLGetUniformLocation(napi_env env, napi_callback_info info)
3012 {
3013     initGLES();
3014     napi_value result = nullptr;
3015     GLuint program = initProgram(vertexSource, fragmentSource);
3016     GLint location = glGetUniformLocation(program, "color");
3017     if (location != FAILED) {
3018         napi_create_int32(env, SUCCESS, &result);
3019     } else {
3020         napi_create_int32(env, FAILED, &result);
3021     }
3022     deleteProgram();
3023     glDeleteProgram(program);
3024     destroyGLES();
3025     return result;
3026 }
3027 
GLGetUniformuiv(napi_env env,napi_callback_info info)3028 static napi_value GLGetUniformuiv(napi_env env, napi_callback_info info)
3029 {
3030     initGLES();
3031     GLuint program = initProgram(vertexSource, fragmentSource);
3032     GLint location = glGetUniformLocation(program, "color");
3033     GLuint param[4];
3034     glGetUniformuiv(program, location, param);
3035     GLenum glError = glGetError();
3036     deleteProgram();
3037     glDeleteProgram(program);
3038     destroyGLES();
3039     return getError(env, glError);
3040 }
3041 
GLGetVertexAttribfv(napi_env env,napi_callback_info info)3042 static napi_value GLGetVertexAttribfv(napi_env env, napi_callback_info info)
3043 {
3044     initGLES();
3045     GLenum glError = FAILED;
3046     shaderVertex = esLoadShader(GL_VERTEX_SHADER, vertexSource);
3047     GLint maxVertexAttribs;
3048     glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, &maxVertexAttribs);
3049     GLfloat params[4];
3050     if (maxVertexAttribs > INT_INIT_VAL) {
3051         glGetVertexAttribfv(ARRAY_INDEX_ZERO, GL_CURRENT_VERTEX_ATTRIB, params);
3052         glError = glGetError();
3053     }
3054     glDeleteShader(shaderVertex);
3055     destroyGLES();
3056     return getError(env, glError);
3057 }
3058 
GLGetVertexAttribIiv(napi_env env,napi_callback_info info)3059 static napi_value GLGetVertexAttribIiv(napi_env env, napi_callback_info info)
3060 {
3061     initGLES();
3062     GLenum glError = FAILED;
3063     shaderVertex = esLoadShader(GL_VERTEX_SHADER, vertexSource);
3064     GLint maxVertexAttribs;
3065     glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, &maxVertexAttribs);
3066     GLint params[4];
3067     if (maxVertexAttribs > INT_INIT_VAL) {
3068         glGetVertexAttribIiv(ARRAY_INDEX_ZERO, GL_CURRENT_VERTEX_ATTRIB, params);
3069         glError = glGetError();
3070     }
3071     glDeleteShader(shaderVertex);
3072     destroyGLES();
3073     return getError(env, glError);
3074 }
3075 
GLGetVertexAttribIuiv(napi_env env,napi_callback_info info)3076 static napi_value GLGetVertexAttribIuiv(napi_env env, napi_callback_info info)
3077 {
3078     initGLES();
3079     GLenum glError = FAILED;
3080     shaderVertex = esLoadShader(GL_VERTEX_SHADER, vertexSource);
3081     GLint maxVertexAttribs;
3082     glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, &maxVertexAttribs);
3083     GLuint params[4];
3084     if (maxVertexAttribs > INT_INIT_VAL) {
3085         glGetVertexAttribIuiv(ARRAY_INDEX_ZERO, GL_CURRENT_VERTEX_ATTRIB, params);
3086     }
3087     glError = glGetError();
3088     glDeleteShader(shaderVertex);
3089     destroyGLES();
3090     return getError(env, glError);
3091 }
3092 
GLGetVertexAttribiv(napi_env env,napi_callback_info info)3093 static napi_value GLGetVertexAttribiv(napi_env env, napi_callback_info info)
3094 {
3095     initGLES();
3096     GLenum glError = FAILED;
3097     shaderVertex = esLoadShader(GL_VERTEX_SHADER, vertexSource);
3098     GLint maxVertexAttribs;
3099     glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, &maxVertexAttribs);
3100     GLint params[4];
3101     if (maxVertexAttribs > INT_INIT_VAL) {
3102         glGetVertexAttribiv(ARRAY_INDEX_ZERO, GL_CURRENT_VERTEX_ATTRIB, params);
3103     }
3104     glError = glGetError();
3105     glDeleteShader(shaderVertex);
3106     destroyGLES();
3107     return getError(env, glError);
3108 }
3109 
GLGetVertexAttribPointerv(napi_env env,napi_callback_info info)3110 static napi_value GLGetVertexAttribPointerv(napi_env env, napi_callback_info info)
3111 {
3112     initGLES();
3113     GLvoid *attribPointer;
3114     glGetVertexAttribPointerv(INT_INIT_VAL, GL_VERTEX_ATTRIB_ARRAY_POINTER, &attribPointer);
3115     GLenum glError = glGetError();
3116     destroyGLES();
3117     return getError(env, glError);
3118 }
3119 
GLHint(napi_env env,napi_callback_info info)3120 static napi_value GLHint(napi_env env, napi_callback_info info)
3121 {
3122     initGLES();
3123     glHint(GL_FRAGMENT_SHADER_DERIVATIVE_HINT, GL_FASTEST);
3124     GLenum glError = glGetError();
3125     destroyGLES();
3126     return getError(env, glError);
3127 }
3128 
GLInvalidateFramebuffer(napi_env env,napi_callback_info info)3129 static napi_value GLInvalidateFramebuffer(napi_env env, napi_callback_info info)
3130 {
3131     initGLES();
3132     GLuint fbo, tex, rbo;
3133     glGenTextures(CREAT_NUM_ONE, &tex);
3134     glBindTexture(GL_TEXTURE_2D, tex);
3135     glTexStorage2D(GL_TEXTURE_2D, CREAT_NUM_ONE, GL_RGBA8, INIT_WIDTH, INIT_HEIGHT);
3136     glGenRenderbuffers(CREAT_NUM_ONE, &rbo);
3137     glBindRenderbuffer(GL_RENDERBUFFER, rbo);
3138     glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, INIT_WIDTH, INIT_HEIGHT);
3139 
3140     glGenFramebuffers(CREAT_NUM_ONE, &fbo);
3141     glBindFramebuffer(GL_FRAMEBUFFER, fbo);
3142     glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, tex, INT_INIT_VAL);
3143     glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER, rbo);
3144     GLenum attachments[2] = {GL_DEPTH_STENCIL_ATTACHMENT, GL_COLOR_ATTACHMENT0};
3145     glInvalidateFramebuffer(GL_FRAMEBUFFER, 2, attachments);
3146     GLenum glError = glGetError();
3147 
3148     glDeleteFramebuffers(CREAT_NUM_ONE, &fbo);
3149     glDeleteRenderbuffers(CREAT_NUM_ONE, &rbo);
3150     glDeleteTextures(CREAT_NUM_ONE, &tex);
3151     destroyGLES();
3152     return getError(env, glError);
3153 }
3154 
GLInvalidateSubFramebuffer(napi_env env,napi_callback_info info)3155 static napi_value GLInvalidateSubFramebuffer(napi_env env, napi_callback_info info)
3156 {
3157     initGLES();
3158     GLuint fbo, tex;
3159     glGenFramebuffers(CREAT_NUM_ONE, &fbo);
3160     glBindFramebuffer(GL_FRAMEBUFFER, fbo);
3161     glGenTextures(CREAT_NUM_ONE, &tex);
3162     glBindTexture(GL_TEXTURE_2D, tex);
3163     glTexStorage2D(GL_TEXTURE_2D, IMAGE2D_LEVEL_ONE, GL_RGBA8, INIT_WIDTH, INIT_HEIGHT);
3164     glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, tex, INT_INIT_VAL);
3165     GLenum attachments[1] = {GL_COLOR_ATTACHMENT0};
3166     glInvalidateSubFramebuffer(GL_FRAMEBUFFER, COUNT_NUM, attachments, 100, 100, 300, 300);
3167     GLenum glError = glGetError();
3168 
3169     glDeleteFramebuffers(CREAT_NUM_ONE, &fbo);
3170     glDeleteTextures(CREAT_NUM_ONE, &tex);
3171     destroyGLES();
3172     return getError(env, glError);
3173 }
3174 
GLIsBuffer(napi_env env,napi_callback_info info)3175 static napi_value GLIsBuffer(napi_env env, napi_callback_info info)
3176 {
3177     initGLES();
3178     napi_value result = nullptr;
3179     GLuint buffer = INT_INIT_VAL;
3180     glGenBuffers(CREAT_NUM_ONE, &buffer);
3181     glBindBuffer(GL_SHADER_STORAGE_BUFFER, buffer);
3182     GLboolean isBuffer = glIsBuffer(buffer);
3183     if (isBuffer) {
3184         napi_create_int32(env, SUCCESS, &result);
3185     } else {
3186         napi_create_int32(env, FAILED, &result);
3187     }
3188     glDeleteBuffers(CREAT_NUM_ONE, &buffer);
3189     destroyGLES();
3190     return result;
3191 }
3192 
GLIsEnabled(napi_env env,napi_callback_info info)3193 static napi_value GLIsEnabled(napi_env env, napi_callback_info info)
3194 {
3195     initGLES();
3196     napi_value result = nullptr;
3197     GLboolean isEnabled = glIsEnabled(GL_DITHER);
3198     if (isEnabled) {
3199         napi_create_int32(env, SUCCESS, &result);
3200     } else {
3201         napi_create_int32(env, FAILED, &result);
3202     }
3203     destroyGLES();
3204     return result;
3205 }
3206 
GLIsEnabledi(napi_env env,napi_callback_info info)3207 static napi_value GLIsEnabledi(napi_env env, napi_callback_info info)
3208 {
3209     initGLES();
3210     napi_value result = nullptr;
3211     glEnablei(GL_BLEND, INT_INIT_VAL);
3212     GLboolean isEnabled = glIsEnabledi(GL_BLEND, INT_INIT_VAL);
3213     if (isEnabled) {
3214         napi_create_int32(env, SUCCESS, &result);
3215     } else {
3216         napi_create_int32(env, FAILED, &result);
3217     }
3218     destroyGLES();
3219     return result;
3220 }
3221 
GLIsFramebuffer(napi_env env,napi_callback_info info)3222 static napi_value GLIsFramebuffer(napi_env env, napi_callback_info info)
3223 {
3224     initGLES();
3225     napi_value result = nullptr;
3226     GLuint framebuffer = INT_INIT_VAL;
3227     glGenFramebuffers(CREAT_NUM_ONE, &framebuffer);
3228     glBindFramebuffer(GL_FRAMEBUFFER, framebuffer);
3229     GLboolean isFramebuffer = glIsFramebuffer(framebuffer);
3230     if (isFramebuffer) {
3231         napi_create_int32(env, SUCCESS, &result);
3232     } else {
3233         napi_create_int32(env, FAILED, &result);
3234     }
3235     glDeleteFramebuffers(CREAT_NUM_ONE, &framebuffer);
3236     destroyGLES();
3237     return result;
3238 }
3239 
GLIsProgram(napi_env env,napi_callback_info info)3240 static napi_value GLIsProgram(napi_env env, napi_callback_info info)
3241 {
3242     initGLES();
3243     napi_value result = nullptr;
3244     GLuint Program = glCreateProgram();
3245     GLboolean isProgram = glIsProgram(Program);
3246     if (isProgram) {
3247         napi_create_int32(env, SUCCESS, &result);
3248     } else {
3249         napi_create_int32(env, FAILED, &result);
3250     }
3251     glDeleteProgram(Program);
3252     destroyGLES();
3253     return result;
3254 }
3255 
GLIsProgramPipeline(napi_env env,napi_callback_info info)3256 static napi_value GLIsProgramPipeline(napi_env env, napi_callback_info info)
3257 {
3258     initGLES();
3259     napi_value result = nullptr;
3260     GLuint pipeline = INT_INIT_VAL;
3261     glGenProgramPipelines(PIPELINES_NUM_ONE, &pipeline);
3262     glBindProgramPipeline(pipeline);
3263     GLboolean isPipeline = glIsProgramPipeline(pipeline);
3264     if (isPipeline) {
3265         napi_create_int32(env, SUCCESS, &result);
3266     } else {
3267         napi_create_int32(env, FAILED, &result);
3268     }
3269     glDeleteProgramPipelines(CREAT_NUM_ONE, &pipeline);
3270     destroyGLES();
3271     return result;
3272 }
3273 
GLIsQuery(napi_env env,napi_callback_info info)3274 static napi_value GLIsQuery(napi_env env, napi_callback_info info)
3275 {
3276     initGLES();
3277     napi_value result = nullptr;
3278     GLuint query = INT_INIT_VAL;
3279     glGenQueries(CREAT_NUM_ONE, &query);
3280     glBeginQuery(GL_ANY_SAMPLES_PASSED, query);
3281     GLboolean isQuery = glIsQuery(query);
3282     if (isQuery) {
3283         napi_create_int32(env, SUCCESS, &result);
3284     } else {
3285         napi_create_int32(env, FAILED, &result);
3286     }
3287     glDeleteQueries(CREAT_NUM_ONE, &query);
3288     destroyGLES();
3289     return result;
3290 }
3291 
GLIsRenderbuffer(napi_env env,napi_callback_info info)3292 static napi_value GLIsRenderbuffer(napi_env env, napi_callback_info info)
3293 {
3294     initGLES();
3295     napi_value result = nullptr;
3296     GLuint renderBuffer = INT_INIT_VAL;
3297     glGenRenderbuffers(CREAT_NUM_ONE, &renderBuffer);
3298     glBindRenderbuffer(GL_RENDERBUFFER, renderBuffer);
3299     GLboolean isRenderbuffer = glIsRenderbuffer(renderBuffer);
3300     if (isRenderbuffer) {
3301         napi_create_int32(env, SUCCESS, &result);
3302     } else {
3303         napi_create_int32(env, FAILED, &result);
3304     }
3305     glDeleteRenderbuffers(CREAT_NUM_ONE, &renderBuffer);
3306     destroyGLES();
3307     return result;
3308 }
3309 
GLIsSampler(napi_env env,napi_callback_info info)3310 static napi_value GLIsSampler(napi_env env, napi_callback_info info)
3311 {
3312     initGLES();
3313     napi_value result = nullptr;
3314     GLuint sampler = INT_INIT_VAL;
3315     glGenSamplers(CREAT_NUM_ONE, &sampler);
3316     GLboolean isSampler = glIsSampler(sampler);
3317     if (isSampler) {
3318         napi_create_int32(env, SUCCESS, &result);
3319     } else {
3320         napi_create_int32(env, FAILED, &result);
3321     }
3322     glDeleteSamplers(CREAT_NUM_ONE, &sampler);
3323     destroyGLES();
3324     return result;
3325 }
3326 
GLIsShader(napi_env env,napi_callback_info info)3327 static napi_value GLIsShader(napi_env env, napi_callback_info info)
3328 {
3329     initGLES();
3330     napi_value result = nullptr;
3331     GLuint shader = glCreateShader(GL_VERTEX_SHADER);
3332     GLboolean isShader = glIsShader(shader);
3333     if (isShader) {
3334         napi_create_int32(env, SUCCESS, &result);
3335     } else {
3336         napi_create_int32(env, FAILED, &result);
3337     }
3338     glDeleteSamplers(CREAT_NUM_ONE, &shader);
3339     destroyGLES();
3340     return result;
3341 }
3342 
GLIsSync(napi_env env,napi_callback_info info)3343 static napi_value GLIsSync(napi_env env, napi_callback_info info)
3344 {
3345     initGLES();
3346     napi_value result = nullptr;
3347     GLsync sync = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, INT_INIT_VAL);
3348     GLboolean isSync = glIsSync(sync);
3349     if (isSync) {
3350         napi_create_int32(env, SUCCESS, &result);
3351     } else {
3352         napi_create_int32(env, FAILED, &result);
3353     }
3354     glDeleteSync(sync);
3355     destroyGLES();
3356     return result;
3357 }
3358 
GLIsTexture(napi_env env,napi_callback_info info)3359 static napi_value GLIsTexture(napi_env env, napi_callback_info info)
3360 {
3361     initGLES();
3362     napi_value result = nullptr;
3363     GLuint texture = INT_INIT_VAL;
3364     glGenTextures(CREAT_NUM_ONE, &texture);
3365     glBindTexture(GL_TEXTURE_2D, texture);
3366     GLboolean isTexture = glIsTexture(texture);
3367     if (isTexture) {
3368         napi_create_int32(env, SUCCESS, &result);
3369     } else {
3370         napi_create_int32(env, FAILED, &result);
3371     }
3372     glDeleteTextures(CREAT_NUM_ONE, &texture);
3373     destroyGLES();
3374     return result;
3375 }
3376 
GLIsTransformFeedback(napi_env env,napi_callback_info info)3377 static napi_value GLIsTransformFeedback(napi_env env, napi_callback_info info)
3378 {
3379     initGLES();
3380     napi_value result = nullptr;
3381     GLuint id = INT_INIT_VAL;
3382     glGenTransformFeedbacks(CREAT_NUM_ONE, &id);
3383     glBindTransformFeedback(GL_TRANSFORM_FEEDBACK, id);
3384     GLboolean isId = glIsTransformFeedback(id);
3385     if (isId) {
3386         napi_create_int32(env, SUCCESS, &result);
3387     } else {
3388         napi_create_int32(env, FAILED, &result);
3389     }
3390     glDeleteTransformFeedbacks(CREAT_NUM_ONE, &id);
3391     destroyGLES();
3392     return result;
3393 }
3394 
GLIsVertexArray(napi_env env,napi_callback_info info)3395 static napi_value GLIsVertexArray(napi_env env, napi_callback_info info)
3396 {
3397     initGLES();
3398     napi_value result = nullptr;
3399     GLuint array = INT_INIT_VAL;
3400     glGenVertexArrays(CREAT_NUM_ONE, &array);
3401     glBindVertexArray(array);
3402     GLboolean isArray = glIsVertexArray(array);
3403     if (isArray) {
3404         napi_create_int32(env, SUCCESS, &result);
3405     } else {
3406         napi_create_int32(env, FAILED, &result);
3407     }
3408     glDeleteVertexArrays(CREAT_NUM_ONE, &array);
3409     destroyGLES();
3410     return result;
3411 }
3412 
GLLineWidth(napi_env env,napi_callback_info info)3413 static napi_value GLLineWidth(napi_env env, napi_callback_info info)
3414 {
3415     initGLES();
3416     glLineWidth(CLEAR_50);
3417     GLenum glError = glGetError();
3418     destroyGLES();
3419     return getError(env, glError);
3420 }
3421 
GLLinkProgram(napi_env env,napi_callback_info info)3422 static napi_value GLLinkProgram(napi_env env, napi_callback_info info)
3423 {
3424     initGLES();
3425     GLuint program = glCreateProgram();
3426     glLinkProgram(program);
3427     GLenum glError = glGetError();
3428     glDeleteProgram(program);
3429     destroyGLES();
3430     return getError(env, glError);
3431 }
3432 
GLMapBufferRange(napi_env env,napi_callback_info info)3433 static napi_value GLMapBufferRange(napi_env env, napi_callback_info info)
3434 {
3435     initGLES();
3436     napi_value result = nullptr;
3437     GLuint buffer = INT_INIT_VAL;
3438     glGenBuffers(CREAT_NUM_ONE, &buffer);
3439     glBindBuffer(GL_ARRAY_BUFFER, buffer);
3440     glBufferData(GL_ARRAY_BUFFER, GL_BUF_SIZE, nullptr, GL_DYNAMIC_DRAW);
3441     GLvoid *ptr = glMapBufferRange(GL_ARRAY_BUFFER, INT_INIT_VAL, GL_BUF_SIZE, GL_MAP_WRITE_BIT);
3442     if (ptr) {
3443         napi_create_int32(env, SUCCESS, &result);
3444     } else {
3445         napi_create_int32(env, FAILED, &result);
3446     }
3447     glDeleteBuffers(CREAT_NUM_ONE, &buffer);
3448     destroyGLES();
3449     return result;
3450 }
3451 
GLMemoryBarrier(napi_env env,napi_callback_info info)3452 static napi_value GLMemoryBarrier(napi_env env, napi_callback_info info)
3453 {
3454     initGLES();
3455     glMemoryBarrier(GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT);
3456     GLenum glError = glGetError();
3457     destroyGLES();
3458     return getError(env, glError);
3459 }
3460 
GLMemoryBarrierByRegion(napi_env env,napi_callback_info info)3461 static napi_value GLMemoryBarrierByRegion(napi_env env, napi_callback_info info)
3462 {
3463     initGLES();
3464     GLuint framebuffer = INT_INIT_VAL;
3465     GLuint texture = INT_INIT_VAL;
3466     glGenFramebuffers(CREAT_NUM_ONE, &framebuffer);
3467     glBindFramebuffer(GL_FRAMEBUFFER, framebuffer);
3468     glGenTextures(CREAT_NUM_ONE, &texture);
3469     glBindTexture(GL_TEXTURE_2D, texture);
3470     glTexStorage2D(GL_TEXTURE_2D, IMAGE2D_LEVEL_ONE, GL_RGBA8, INIT_WIDTH, INIT_HEIGHT);
3471     glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texture, INT_INIT_VAL);
3472     glMemoryBarrierByRegion(GL_FRAMEBUFFER_BARRIER_BIT);
3473     GLenum glError = glGetError();
3474     glDeleteFramebuffers(CREAT_NUM_ONE, &framebuffer);
3475     glDeleteTextures(CREAT_NUM_ONE, &texture);
3476     destroyGLES();
3477     return getError(env, glError);
3478 }
3479 
GLMinSampleShading(napi_env env,napi_callback_info info)3480 static napi_value GLMinSampleShading(napi_env env, napi_callback_info info)
3481 {
3482     initGLES();
3483     glMinSampleShading(INT_INIT_VAL);
3484     GLenum glError = glGetError();
3485     destroyGLES();
3486     return getError(env, glError);
3487 }
3488 
GLObjectLabel(napi_env env,napi_callback_info info)3489 static napi_value GLObjectLabel(napi_env env, napi_callback_info info)
3490 {
3491     initGLES();
3492     GLuint program = initProgram(vertexShaderSource, fragmentShaderSource);
3493     char log[] = "My program log";
3494     glObjectLabel(GL_PROGRAM, program, sizeof(log), log);
3495     GLenum glError = glGetError();
3496     deleteProgram();
3497     glDeleteProgram(program);
3498     destroyGLES();
3499     return getError(env, glError);
3500 }
3501 
GLObjectPtrLabel(napi_env env,napi_callback_info info)3502 static napi_value GLObjectPtrLabel(napi_env env, napi_callback_info info)
3503 {
3504     initGLES();
3505     GLsync syncObject = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, INT_INIT_VAL);
3506     char log[] = "My program log";
3507     glObjectPtrLabel(syncObject, sizeof(log), log);
3508     GLenum glError = glGetError();
3509     glDeleteSync(syncObject);
3510     destroyGLES();
3511     return getError(env, glError);
3512 }
3513 
GLPatchParameteri(napi_env env,napi_callback_info info)3514 static napi_value GLPatchParameteri(napi_env env, napi_callback_info info)
3515 {
3516     initGLES();
3517     GLuint array;
3518     glGenVertexArrays(CREAT_NUM_ONE, &array);
3519     glBindVertexArray(array);
3520     glPatchParameteri(GL_PATCH_VERTICES, ARRAY_INDEX_THREE);
3521     GLenum glError = glGetError();
3522     glDeleteVertexArrays(CREAT_NUM_ONE, &array);
3523     destroyGLES();
3524     return getError(env, glError);
3525 }
3526 
GLPauseTransformFeedback(napi_env env,napi_callback_info info)3527 static napi_value GLPauseTransformFeedback(napi_env env, napi_callback_info info)
3528 {
3529     initGLES();
3530     GLuint array;
3531     GLuint buffer;
3532     GLuint feedbackBuffer;
3533     GLuint tbBuffer;
3534     glGenBuffers(CREAT_NUM_ONE, &tbBuffer);
3535     glGenBuffers(CREAT_NUM_ONE, &feedbackBuffer);
3536     GLuint program = initProgram(vertexShaderSource, fragmentShaderSource);
3537     glUseProgram(program);
3538     GLuint transformFeedback;
3539     glGenTransformFeedbacks(CREAT_NUM_ONE, &transformFeedback);
3540     glBindTransformFeedback(GL_TRANSFORM_FEEDBACK, transformFeedback);
3541     glGenVertexArrays(CREAT_NUM_ONE, &array);
3542     glGenBuffers(CREAT_NUM_ONE, &buffer);
3543     glBindVertexArray(array);
3544     glBindBuffer(GL_ARRAY_BUFFER, buffer);
3545 
3546     glBindBufferBase(GL_TRANSFORM_FEEDBACK_BUFFER, INT_INIT_VAL, feedbackBuffer);
3547     glEnable(GL_RASTERIZER_DISCARD);
3548     glBindBufferBase(GL_TRANSFORM_FEEDBACK_BUFFER, INT_INIT_VAL, tbBuffer);
3549     glTransformFeedbackVaryings(program, VARYING_NUM, (const char*[]){"gl_Position", "vColor"}, GL_SEPARATE_ATTRIBS);
3550     glLinkProgram(program);
3551 
3552     glBeginTransformFeedback(GL_POINTS);
3553     glPauseTransformFeedback();
3554     GLenum glError = glGetError();
3555 
3556     deleteProgram();
3557     glDeleteProgram(program);
3558     glDeleteBuffers(CREAT_NUM_ONE, &buffer);
3559     glDeleteBuffers(CREAT_NUM_ONE, &feedbackBuffer);
3560     glDeleteVertexArrays(CREAT_NUM_ONE, &array);
3561     destroyGLES();
3562     return getError(env, glError);
3563 }
3564 
GLPixelStorei(napi_env env,napi_callback_info info)3565 static napi_value GLPixelStorei(napi_env env, napi_callback_info info)
3566 {
3567     initGLES();
3568     GLuint texture = INT_INIT_VAL;
3569     glGenTextures(CREAT_NUM_ONE, &texture);
3570     glBindTexture(GL_TEXTURE_2D, texture);
3571     glPixelStorei(GL_UNPACK_ALIGNMENT, CREAT_NUM_ONE);
3572     GLenum glError = glGetError();
3573     glDeleteTextures(CREAT_NUM_ONE, &texture);
3574     destroyGLES();
3575     return getError(env, glError);
3576 }
3577 
GLPolygonOffset(napi_env env,napi_callback_info info)3578 static napi_value GLPolygonOffset(napi_env env, napi_callback_info info)
3579 {
3580     initGLES();
3581     glEnable(GL_DEPTH_TEST);
3582     glPolygonOffset(CLEAR_10, CLEAR_10);
3583     GLenum glError = glGetError();
3584     destroyGLES();
3585     return getError(env, glError);
3586 }
3587 
GLPopDebugGroup(napi_env env,napi_callback_info info)3588 static napi_value GLPopDebugGroup(napi_env env, napi_callback_info info)
3589 {
3590     initGLES();
3591     glPushDebugGroup(GL_DEBUG_SOURCE_APPLICATION, INT_INIT_VAL, FAILED, "Draw Scene");
3592     glPopDebugGroup();
3593     GLenum glError = glGetError();
3594     destroyGLES();
3595     return getError(env, glError);
3596 }
3597 
GLPrimitiveBoundingBox(napi_env env,napi_callback_info info)3598 static napi_value GLPrimitiveBoundingBox(napi_env env, napi_callback_info info)
3599 {
3600     initGLES();
3601     glPrimitiveBoundingBox(CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_10, CLEAR_10, CLEAR_10, CLEAR_10);
3602     GLenum glError = glGetError();
3603     destroyGLES();
3604     return getError(env, glError);
3605 }
3606 
GLProgramBinary(napi_env env,napi_callback_info info)3607 static napi_value GLProgramBinary(napi_env env, napi_callback_info info)
3608 {
3609     initGLES();
3610     GLuint program = initProgram();
3611     GLuint programBin = glCreateProgram();
3612     GLint binaryLength = INT_INIT_VAL;
3613     glGetProgramiv(program, GL_PROGRAM_BINARY_LENGTH, &binaryLength);
3614     GLubyte *binary = (GLubyte *)malloc(binaryLength);
3615     GLenum binaryFormat = INT_INIT_VAL;
3616     GLsizei length = INT_INIT_VAL;
3617     glGetProgramBinary(program, binaryLength, &length, &binaryFormat, binary);
3618     glProgramBinary(programBin, binaryFormat, binary, length);
3619     GLenum glError = glGetError();
3620     free(binary);
3621     deleteProgram();
3622     glDeleteProgram(program);
3623     glDeleteProgram(programBin);
3624     destroyGLES();
3625     return getError(env, glError);
3626 }
3627 
GLProgramParameteri(napi_env env,napi_callback_info info)3628 static napi_value GLProgramParameteri(napi_env env, napi_callback_info info)
3629 {
3630     initGLES();
3631     GLuint program = glCreateProgram();
3632     glProgramParameteri(program, GL_PROGRAM_BINARY_RETRIEVABLE_HINT, GL_TRUE);
3633     GLenum glError = glGetError();
3634     glDeleteProgram(program);
3635     destroyGLES();
3636     return getError(env, glError);
3637 }
3638 
GLProgramUniform1f(napi_env env,napi_callback_info info)3639 static napi_value GLProgramUniform1f(napi_env env, napi_callback_info info)
3640 {
3641     initGLES();
3642     GLuint programObject = initProgram();
3643     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
3644     glProgramUniform1f(programObject, uniformLocation, CLEAR_10);
3645     GLenum glError = glGetError();
3646     deleteProgram();
3647     glDeleteProgram(programObject);
3648     destroyGLES();
3649     return getError(env, glError);
3650 }
3651 
GLProgramUniform1fv(napi_env env,napi_callback_info info)3652 static napi_value GLProgramUniform1fv(napi_env env, napi_callback_info info)
3653 {
3654     initGLES();
3655     GLuint programObject = initProgram();
3656     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
3657     GLfloat brightness[POINT_LIGHT_COUNT] = {CLEAR_10, CLEAR_10, CLEAR_10, CLEAR_10};
3658     glProgramUniform1fv(programObject, uniformLocation, POINT_LIGHT_COUNT, brightness);
3659     GLenum glError = glGetError();
3660     deleteProgram();
3661     glDeleteProgram(programObject);
3662     destroyGLES();
3663     return getError(env, glError);
3664 }
3665 
GLProgramUniform1i(napi_env env,napi_callback_info info)3666 static napi_value GLProgramUniform1i(napi_env env, napi_callback_info info)
3667 {
3668     initGLES();
3669     GLuint programObject = initProgram();
3670     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
3671     glProgramUniform1i(programObject, uniformLocation, COUNT_NUM);
3672     GLenum glError = glGetError();
3673     deleteProgram();
3674     glDeleteProgram(programObject);
3675     destroyGLES();
3676     return getError(env, glError);
3677 }
3678 
GLProgramUniform1iv(napi_env env,napi_callback_info info)3679 static napi_value GLProgramUniform1iv(napi_env env, napi_callback_info info)
3680 {
3681     initGLES();
3682     GLuint programObject = initProgram();
3683     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
3684     GLint brightness[POINT_LIGHT_COUNT] = {COUNT_NUM, COUNT_NUM, COUNT_NUM, COUNT_NUM};
3685     glProgramUniform1iv(programObject, uniformLocation, POINT_LIGHT_COUNT, brightness);
3686     GLenum glError = glGetError();
3687     deleteProgram();
3688     glDeleteProgram(programObject);
3689     destroyGLES();
3690     return getError(env, glError);
3691 }
3692 
GLProgramUniform1ui(napi_env env,napi_callback_info info)3693 static napi_value GLProgramUniform1ui(napi_env env, napi_callback_info info)
3694 {
3695     initGLES();
3696     GLuint programObject = initProgram();
3697     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
3698     glProgramUniform1ui(programObject, uniformLocation, COUNT_NUM);
3699     GLenum glError = glGetError();
3700     deleteProgram();
3701     glDeleteProgram(programObject);
3702     destroyGLES();
3703     return getError(env, glError);
3704 }
3705 
GLProgramUniform1uiv(napi_env env,napi_callback_info info)3706 static napi_value GLProgramUniform1uiv(napi_env env, napi_callback_info info)
3707 {
3708     initGLES();
3709     GLuint programObject = initProgram();
3710     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
3711     GLuint brightness[POINT_LIGHT_COUNT] = {COUNT_NUM, COUNT_NUM, COUNT_NUM, COUNT_NUM};
3712     glProgramUniform1uiv(programObject, uniformLocation, POINT_LIGHT_COUNT, brightness);
3713     GLenum glError = glGetError();
3714     deleteProgram();
3715     glDeleteProgram(programObject);
3716     destroyGLES();
3717     return getError(env, glError);
3718 }
3719 
GLProgramUniform2f(napi_env env,napi_callback_info info)3720 static napi_value GLProgramUniform2f(napi_env env, napi_callback_info info)
3721 {
3722     initGLES();
3723     GLuint programObject = initProgram();
3724     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
3725     glProgramUniform2f(programObject, uniformLocation, CLEAR_10, CLEAR_10);
3726     GLenum glError = glGetError();
3727     deleteProgram();
3728     glDeleteProgram(programObject);
3729     destroyGLES();
3730     return getError(env, glError);
3731 }
3732 
GLProgramUniform2fv(napi_env env,napi_callback_info info)3733 static napi_value GLProgramUniform2fv(napi_env env, napi_callback_info info)
3734 {
3735     initGLES();
3736     GLuint programObject = initProgram();
3737     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
3738     GLfloat brightness[POINT_LIGHT_COUNT] = {CLEAR_10, CLEAR_10, CLEAR_10, CLEAR_10};
3739     glProgramUniform2fv(programObject, uniformLocation, POINT_LIGHT_COUNT, brightness);
3740     GLenum glError = glGetError();
3741     deleteProgram();
3742     glDeleteProgram(programObject);
3743     destroyGLES();
3744     return getError(env, glError);
3745 }
3746 
GLProgramUniform2i(napi_env env,napi_callback_info info)3747 static napi_value GLProgramUniform2i(napi_env env, napi_callback_info info)
3748 {
3749     initGLES();
3750     GLuint programObject = initProgram();
3751     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
3752     glProgramUniform2i(programObject, uniformLocation, COUNT_NUM, COUNT_NUM);
3753     GLenum glError = glGetError();
3754     deleteProgram();
3755     glDeleteProgram(programObject);
3756     destroyGLES();
3757     return getError(env, glError);
3758 }
3759 
GLProgramUniform2iv(napi_env env,napi_callback_info info)3760 static napi_value GLProgramUniform2iv(napi_env env, napi_callback_info info)
3761 {
3762     initGLES();
3763     GLuint programObject = initProgram();
3764     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
3765     GLint brightness[POINT_LIGHT_COUNT] = {COUNT_NUM, COUNT_NUM, COUNT_NUM, COUNT_NUM};
3766     glProgramUniform2iv(programObject, uniformLocation, POINT_LIGHT_COUNT, brightness);
3767     GLenum glError = glGetError();
3768     deleteProgram();
3769     glDeleteProgram(programObject);
3770     destroyGLES();
3771     return getError(env, glError);
3772 }
3773 
GLProgramUniform2ui(napi_env env,napi_callback_info info)3774 static napi_value GLProgramUniform2ui(napi_env env, napi_callback_info info)
3775 {
3776     initGLES();
3777     GLuint programObject = initProgram();
3778     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
3779     glProgramUniform2ui(programObject, uniformLocation, COUNT_NUM, COUNT_NUM);
3780     GLenum glError = glGetError();
3781     deleteProgram();
3782     glDeleteProgram(programObject);
3783     destroyGLES();
3784     return getError(env, glError);
3785 }
3786 
GLProgramUniform2uiv(napi_env env,napi_callback_info info)3787 static napi_value GLProgramUniform2uiv(napi_env env, napi_callback_info info)
3788 {
3789     initGLES();
3790     GLuint programObject = initProgram();
3791     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
3792     GLuint brightness[POINT_LIGHT_COUNT] = {COUNT_NUM, COUNT_NUM, COUNT_NUM, COUNT_NUM};
3793     glProgramUniform2uiv(programObject, uniformLocation, POINT_LIGHT_COUNT, brightness);
3794     GLenum glError = glGetError();
3795     deleteProgram();
3796     glDeleteProgram(programObject);
3797     destroyGLES();
3798     return getError(env, glError);
3799 }
3800 
GLProgramUniform3f(napi_env env,napi_callback_info info)3801 static napi_value GLProgramUniform3f(napi_env env, napi_callback_info info)
3802 {
3803     initGLES();
3804     GLuint programObject = initProgram();
3805     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
3806     glProgramUniform3f(programObject, uniformLocation, CLEAR_10, CLEAR_10, CLEAR_10);
3807     GLenum glError = glGetError();
3808     deleteProgram();
3809     glDeleteProgram(programObject);
3810     destroyGLES();
3811     return getError(env, glError);
3812 }
3813 
GLProgramUniform3fv(napi_env env,napi_callback_info info)3814 static napi_value GLProgramUniform3fv(napi_env env, napi_callback_info info)
3815 {
3816     initGLES();
3817     GLuint programObject = initProgram();
3818     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
3819     GLfloat brightness[POINT_LIGHT_COUNT] = {CLEAR_10, CLEAR_10, CLEAR_10, CLEAR_10};
3820     glProgramUniform3fv(programObject, uniformLocation, POINT_LIGHT_COUNT, brightness);
3821     GLenum glError = glGetError();
3822     deleteProgram();
3823     glDeleteProgram(programObject);
3824     destroyGLES();
3825     return getError(env, glError);
3826 }
3827 
GLProgramUniform3i(napi_env env,napi_callback_info info)3828 static napi_value GLProgramUniform3i(napi_env env, napi_callback_info info)
3829 {
3830     initGLES();
3831     GLuint programObject = initProgram();
3832     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
3833     glProgramUniform3i(programObject, uniformLocation, COUNT_NUM, COUNT_NUM, COUNT_NUM);
3834     GLenum glError = glGetError();
3835     deleteProgram();
3836     glDeleteProgram(programObject);
3837     destroyGLES();
3838     return getError(env, glError);
3839 }
3840 
GLProgramUniform3iv(napi_env env,napi_callback_info info)3841 static napi_value GLProgramUniform3iv(napi_env env, napi_callback_info info)
3842 {
3843     initGLES();
3844     GLuint programObject = initProgram();
3845     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
3846     GLint brightness[POINT_LIGHT_COUNT] = {COUNT_NUM, COUNT_NUM, COUNT_NUM, COUNT_NUM};
3847     glProgramUniform3iv(programObject, uniformLocation, POINT_LIGHT_COUNT, brightness);
3848     GLenum glError = glGetError();
3849     deleteProgram();
3850     glDeleteProgram(programObject);
3851     destroyGLES();
3852     return getError(env, glError);
3853 }
3854 
GLProgramUniform3ui(napi_env env,napi_callback_info info)3855 static napi_value GLProgramUniform3ui(napi_env env, napi_callback_info info)
3856 {
3857     initGLES();
3858     GLuint programObject = initProgram();
3859     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
3860     glProgramUniform3ui(programObject, uniformLocation, COUNT_NUM, COUNT_NUM, COUNT_NUM);
3861     GLenum glError = glGetError();
3862     deleteProgram();
3863     glDeleteProgram(programObject);
3864     destroyGLES();
3865     return getError(env, glError);
3866 }
3867 
GLProgramUniform3uiv(napi_env env,napi_callback_info info)3868 static napi_value GLProgramUniform3uiv(napi_env env, napi_callback_info info)
3869 {
3870     initGLES();
3871     GLuint programObject = initProgram();
3872     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
3873     GLuint brightness[POINT_LIGHT_COUNT] = {COUNT_NUM, COUNT_NUM, COUNT_NUM, COUNT_NUM};
3874     glProgramUniform3uiv(programObject, uniformLocation, POINT_LIGHT_COUNT, brightness);
3875     GLenum glError = glGetError();
3876     deleteProgram();
3877     glDeleteProgram(programObject);
3878     destroyGLES();
3879     return getError(env, glError);
3880 }
3881 
GLProgramUniform4f(napi_env env,napi_callback_info info)3882 static napi_value GLProgramUniform4f(napi_env env, napi_callback_info info)
3883 {
3884     initGLES();
3885     GLuint programObject = initProgram();
3886     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
3887     glProgramUniform4f(programObject, uniformLocation, CLEAR_10, CLEAR_10, CLEAR_10, CLEAR_10);
3888     GLenum glError = glGetError();
3889     deleteProgram();
3890     glDeleteProgram(programObject);
3891     destroyGLES();
3892     return getError(env, glError);
3893 }
3894 
GLProgramUniform4fv(napi_env env,napi_callback_info info)3895 static napi_value GLProgramUniform4fv(napi_env env, napi_callback_info info)
3896 {
3897     initGLES();
3898     GLuint programObject = initProgram();
3899     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
3900     GLfloat brightness[POINT_LIGHT_COUNT] = {CLEAR_10, CLEAR_10, CLEAR_10, CLEAR_10};
3901     glProgramUniform4fv(programObject, uniformLocation, POINT_LIGHT_COUNT, brightness);
3902     GLenum glError = glGetError();
3903     deleteProgram();
3904     glDeleteProgram(programObject);
3905     destroyGLES();
3906     return getError(env, glError);
3907 }
3908 
GLProgramUniform4i(napi_env env,napi_callback_info info)3909 static napi_value GLProgramUniform4i(napi_env env, napi_callback_info info)
3910 {
3911     initGLES();
3912     GLuint programObject = initProgram();
3913     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
3914     glProgramUniform4i(programObject, uniformLocation, COUNT_NUM, COUNT_NUM, COUNT_NUM, COUNT_NUM);
3915     GLenum glError = glGetError();
3916     deleteProgram();
3917     glDeleteProgram(programObject);
3918     destroyGLES();
3919     return getError(env, glError);
3920 }
3921 
GLProgramUniform4iv(napi_env env,napi_callback_info info)3922 static napi_value GLProgramUniform4iv(napi_env env, napi_callback_info info)
3923 {
3924     initGLES();
3925     GLuint programObject = initProgram();
3926     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
3927     GLint brightness[POINT_LIGHT_COUNT] = {COUNT_NUM, COUNT_NUM, COUNT_NUM, COUNT_NUM};
3928     glProgramUniform4iv(programObject, uniformLocation, POINT_LIGHT_COUNT, brightness);
3929     GLenum glError = glGetError();
3930     deleteProgram();
3931     glDeleteProgram(programObject);
3932     destroyGLES();
3933     return getError(env, glError);
3934 }
3935 
GLProgramUniform4ui(napi_env env,napi_callback_info info)3936 static napi_value GLProgramUniform4ui(napi_env env, napi_callback_info info)
3937 {
3938     initGLES();
3939     GLuint programObject = initProgram();
3940     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
3941     glProgramUniform4ui(programObject, uniformLocation, COUNT_NUM, COUNT_NUM, COUNT_NUM, COUNT_NUM);
3942     GLenum glError = glGetError();
3943     deleteProgram();
3944     glDeleteProgram(programObject);
3945     destroyGLES();
3946     return getError(env, glError);
3947 }
3948 
GLProgramUniform4uiv(napi_env env,napi_callback_info info)3949 static napi_value GLProgramUniform4uiv(napi_env env, napi_callback_info info)
3950 {
3951     initGLES();
3952     GLuint programObject = initProgram();
3953     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
3954     GLuint brightness[POINT_LIGHT_COUNT] = {COUNT_NUM, COUNT_NUM, COUNT_NUM, COUNT_NUM};
3955     glProgramUniform4uiv(programObject, uniformLocation, POINT_LIGHT_COUNT, brightness);
3956     GLenum glError = glGetError();
3957     deleteProgram();
3958     glDeleteProgram(programObject);
3959     destroyGLES();
3960     return getError(env, glError);
3961 }
3962 
GLProgramUniformMatrix2fv(napi_env env,napi_callback_info info)3963 static napi_value GLProgramUniformMatrix2fv(napi_env env, napi_callback_info info)
3964 {
3965     initGLES();
3966     GLuint programObject = initProgram();
3967     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
3968     GLfloat matrix[MATRIX_4] = {CLEAR_10, CLEAR_00, CLEAR_00, CLEAR_10};
3969     glProgramUniformMatrix2fv(programObject, uniformLocation, CREAT_NUM_ONE, GL_TRUE, matrix);
3970     GLenum glError = glGetError();
3971     deleteProgram();
3972     glDeleteProgram(programObject);
3973     destroyGLES();
3974     return getError(env, glError);
3975 }
3976 
GLProgramUniformMatrix2x3fv(napi_env env,napi_callback_info info)3977 static napi_value GLProgramUniformMatrix2x3fv(napi_env env, napi_callback_info info)
3978 {
3979     initGLES();
3980     GLuint programObject = initProgram();
3981     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
3982     GLfloat matrix[MATRIX_6] = {CLEAR_10, CLEAR_00, CLEAR_00, CLEAR_10, CLEAR_00, CLEAR_10};
3983     glProgramUniformMatrix2x3fv(programObject, uniformLocation, CREAT_NUM_ONE, GL_TRUE, matrix);
3984     GLenum glError = glGetError();
3985     deleteProgram();
3986     glDeleteProgram(programObject);
3987     destroyGLES();
3988     return getError(env, glError);
3989 }
3990 
GLProgramUniformMatrix2x4fv(napi_env env,napi_callback_info info)3991 static napi_value GLProgramUniformMatrix2x4fv(napi_env env, napi_callback_info info)
3992 {
3993     initGLES();
3994     GLuint programObject = initProgram();
3995     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
3996     GLfloat matrix[MATRIX_8] = {CLEAR_10, CLEAR_00, CLEAR_00, CLEAR_10, CLEAR_00, CLEAR_10, CLEAR_00, CLEAR_10};
3997     glProgramUniformMatrix2x4fv(programObject, uniformLocation, CREAT_NUM_ONE, GL_TRUE, matrix);
3998     GLenum glError = glGetError();
3999     deleteProgram();
4000     glDeleteProgram(programObject);
4001     destroyGLES();
4002     return getError(env, glError);
4003 }
4004 
GLProgramUniformMatrix3fv(napi_env env,napi_callback_info info)4005 static napi_value GLProgramUniformMatrix3fv(napi_env env, napi_callback_info info)
4006 {
4007     initGLES();
4008     GLuint programObject = initProgram();
4009     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
4010     GLfloat matrix[MATRIX_9] = {CLEAR_10, CLEAR_00, CLEAR_00, CLEAR_10, CLEAR_00,
4011                                 CLEAR_10, CLEAR_00, CLEAR_10, CLEAR_10};
4012     glProgramUniformMatrix3fv(programObject, uniformLocation, CREAT_NUM_ONE, GL_TRUE, matrix);
4013     GLenum glError = glGetError();
4014     deleteProgram();
4015     glDeleteProgram(programObject);
4016     destroyGLES();
4017     return getError(env, glError);
4018 }
4019 
GLProgramUniformMatrix3x2fv(napi_env env,napi_callback_info info)4020 static napi_value GLProgramUniformMatrix3x2fv(napi_env env, napi_callback_info info)
4021 {
4022     initGLES();
4023     GLuint programObject = initProgram();
4024     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
4025     GLfloat matrix[MATRIX_6] = {CLEAR_10, CLEAR_00, CLEAR_00, CLEAR_10, CLEAR_00, CLEAR_10};
4026     glProgramUniformMatrix3x2fv(programObject, uniformLocation, CREAT_NUM_ONE, GL_TRUE, matrix);
4027     GLenum glError = glGetError();
4028     deleteProgram();
4029     glDeleteProgram(programObject);
4030     destroyGLES();
4031     return getError(env, glError);
4032 }
4033 
GLProgramUniformMatrix3x4fv(napi_env env,napi_callback_info info)4034 static napi_value GLProgramUniformMatrix3x4fv(napi_env env, napi_callback_info info)
4035 {
4036     initGLES();
4037     GLuint programObject = initProgram();
4038     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
4039     GLfloat matrix[MATRIX_12] = {CLEAR_10, CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_10,
4040                                  CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_10, CLEAR_00};
4041     glProgramUniformMatrix3x4fv(programObject, uniformLocation, CREAT_NUM_ONE, GL_TRUE, matrix);
4042     GLenum glError = glGetError();
4043     deleteProgram();
4044     glDeleteProgram(programObject);
4045     destroyGLES();
4046     return getError(env, glError);
4047 }
4048 
GLProgramUniformMatrix4fv(napi_env env,napi_callback_info info)4049 static napi_value GLProgramUniformMatrix4fv(napi_env env, napi_callback_info info)
4050 {
4051     initGLES();
4052     GLuint programObject = initProgram();
4053     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
4054     GLfloat matrix[MATRIX_16] = {CLEAR_10, CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_10, CLEAR_00, CLEAR_00,
4055                                  CLEAR_00, CLEAR_00, CLEAR_10, CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_10};
4056     glProgramUniformMatrix4fv(programObject, uniformLocation, CREAT_NUM_ONE, GL_TRUE, matrix);
4057     GLenum glError = glGetError();
4058     deleteProgram();
4059     glDeleteProgram(programObject);
4060     destroyGLES();
4061     return getError(env, glError);
4062 }
4063 
GLProgramUniformMatrix4x2fv(napi_env env,napi_callback_info info)4064 static napi_value GLProgramUniformMatrix4x2fv(napi_env env, napi_callback_info info)
4065 {
4066     initGLES();
4067     GLuint programObject = initProgram();
4068     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
4069     GLfloat matrix[MATRIX_8] = {CLEAR_10, CLEAR_00, CLEAR_00, CLEAR_10, CLEAR_00, CLEAR_10, CLEAR_00, CLEAR_10};
4070     glProgramUniformMatrix4x2fv(programObject, uniformLocation, CREAT_NUM_ONE, GL_TRUE, matrix);
4071     GLenum glError = glGetError();
4072     deleteProgram();
4073     glDeleteProgram(programObject);
4074     destroyGLES();
4075     return getError(env, glError);
4076 }
4077 
GLProgramUniformMatrix4x3fv(napi_env env,napi_callback_info info)4078 static napi_value GLProgramUniformMatrix4x3fv(napi_env env, napi_callback_info info)
4079 {
4080     initGLES();
4081     GLuint programObject = initProgram();
4082     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
4083     GLfloat matrix[MATRIX_12] = {CLEAR_10, CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_10,
4084                                  CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_10, CLEAR_00};
4085     glProgramUniformMatrix4x3fv(programObject, uniformLocation, CREAT_NUM_ONE, GL_TRUE, matrix);
4086     GLenum glError = glGetError();
4087     deleteProgram();
4088     glDeleteProgram(programObject);
4089     destroyGLES();
4090     return getError(env, glError);
4091 }
4092 
GLPushDebugGroup(napi_env env,napi_callback_info info)4093 static napi_value GLPushDebugGroup(napi_env env, napi_callback_info info)
4094 {
4095     initGLES();
4096     glEnable(GL_DEBUG_OUTPUT);
4097     glPushDebugGroup(GL_DEBUG_SOURCE_APPLICATION, CREAT_NUM_ONE, FAILED, "Render Group");
4098     GLenum glError = glGetError();
4099     glPopDebugGroup();
4100     glDisable(GL_DEBUG_OUTPUT);
4101     destroyGLES();
4102     return getError(env, glError);
4103 }
4104 
GLReadBuffer(napi_env env,napi_callback_info info)4105 static napi_value GLReadBuffer(napi_env env, napi_callback_info info)
4106 {
4107     initGLES();
4108     glReadBuffer(GL_BACK);
4109     GLenum glError = glGetError();
4110     destroyGLES();
4111     return getError(env, glError);
4112 }
4113 
GLReadnPixels(napi_env env,napi_callback_info info)4114 static napi_value GLReadnPixels(napi_env env, napi_callback_info info)
4115 {
4116     initGLES();
4117     GLubyte *pixelData = new GLubyte[MATRIX_4 * MATRIX_4 * MATRIX_4];
4118     glReadnPixels(INT_INIT_VAL, INT_INIT_VAL, MATRIX_4, MATRIX_4, GL_RGBA, GL_UNSIGNED_BYTE,
4119                   MATRIX_4 * MATRIX_4 * MATRIX_4, pixelData);
4120     GLenum glError = glGetError();
4121     destroyGLES();
4122     return getError(env, glError);
4123 }
4124 
GLReadPixels(napi_env env,napi_callback_info info)4125 static napi_value GLReadPixels(napi_env env, napi_callback_info info)
4126 {
4127     initGLES();
4128     GLubyte *pixels = new GLubyte[MATRIX_4 * MATRIX_4 * MATRIX_4];
4129     glReadPixels(INT_INIT_VAL, INT_INIT_VAL, MATRIX_4, MATRIX_4, GL_RGBA, GL_UNSIGNED_BYTE, pixels);
4130     GLenum glError = glGetError();
4131     destroyGLES();
4132     return getError(env, glError);
4133 }
4134 
GLReleaseShaderCompiler(napi_env env,napi_callback_info info)4135 static napi_value GLReleaseShaderCompiler(napi_env env, napi_callback_info info)
4136 {
4137     initGLES();
4138     GLuint shader = glCreateShader(GL_VERTEX_SHADER);
4139     glShaderSource(shader, CREAT_NUM_ONE, &vertexShaderSource, nullptr);
4140     glCompileShader(shader);
4141     glReleaseShaderCompiler();
4142     GLenum glError = glGetError();
4143     glDeleteShader(shader);
4144     destroyGLES();
4145     return getError(env, glError);
4146 }
4147 
GLRenderbufferStorage(napi_env env,napi_callback_info info)4148 static napi_value GLRenderbufferStorage(napi_env env, napi_callback_info info)
4149 {
4150     initGLES();
4151     GLuint renderbuffer = INT_INIT_VAL;
4152     glGenRenderbuffers(CREAT_NUM_ONE, &renderbuffer);
4153     glBindRenderbuffer(GL_RENDERBUFFER, renderbuffer);
4154     glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, INIT_WIDTH, INIT_WIDTH);
4155     GLenum glError = glGetError();
4156     glDeleteRenderbuffers(CREAT_NUM_ONE, &renderbuffer);
4157     destroyGLES();
4158     return getError(env, glError);
4159 }
4160 
GLRenderbufferStorageMultisample(napi_env env,napi_callback_info info)4161 static napi_value GLRenderbufferStorageMultisample(napi_env env, napi_callback_info info)
4162 {
4163     initGLES();
4164     GLuint renderbuffer = INT_INIT_VAL;
4165     glGenRenderbuffers(CREAT_NUM_ONE, &renderbuffer);
4166     glBindRenderbuffer(GL_RENDERBUFFER, renderbuffer);
4167     glRenderbufferStorageMultisample(GL_RENDERBUFFER, SAMPLES, GL_RGBA8, INIT_WIDTH, INIT_WIDTH);
4168     GLenum glError = glGetError();
4169     glDeleteRenderbuffers(CREAT_NUM_ONE, &renderbuffer);
4170     destroyGLES();
4171     return getError(env, glError);
4172 }
4173 
GLResumeTransformFeedback(napi_env env,napi_callback_info info)4174 static napi_value GLResumeTransformFeedback(napi_env env, napi_callback_info info)
4175 {
4176     initGLES();
4177     GLuint array;
4178     GLuint buffer;
4179     GLuint feedbackBuffer;
4180     GLuint tbBuffer;
4181     glGenBuffers(CREAT_NUM_ONE, &tbBuffer);
4182     glGenBuffers(CREAT_NUM_ONE, &feedbackBuffer);
4183     GLuint program = initProgram(vertexShaderSource, fragmentShaderSource);
4184     glUseProgram(program);
4185     GLuint transformFeedback;
4186     glGenTransformFeedbacks(CREAT_NUM_ONE, &transformFeedback);
4187     glBindTransformFeedback(GL_TRANSFORM_FEEDBACK, transformFeedback);
4188     glGenVertexArrays(CREAT_NUM_ONE, &array);
4189     glGenBuffers(CREAT_NUM_ONE, &buffer);
4190     glBindVertexArray(array);
4191     glBindBuffer(GL_ARRAY_BUFFER, buffer);
4192 
4193     glBindBufferBase(GL_TRANSFORM_FEEDBACK_BUFFER, INT_INIT_VAL, feedbackBuffer);
4194     glEnable(GL_RASTERIZER_DISCARD);
4195     glBindBufferBase(GL_TRANSFORM_FEEDBACK_BUFFER, INT_INIT_VAL, tbBuffer);
4196     glTransformFeedbackVaryings(program, VARYING_NUM, (const char*[]){"gl_Position", "vColor"}, GL_SEPARATE_ATTRIBS);
4197     glLinkProgram(program);
4198 
4199     glBeginTransformFeedback(GL_POINTS);
4200     glPauseTransformFeedback();
4201     glResumeTransformFeedback();
4202     GLenum glError = glGetError();
4203 
4204     deleteProgram();
4205     glDeleteProgram(program);
4206     glDeleteBuffers(CREAT_NUM_ONE, &buffer);
4207     glDeleteBuffers(CREAT_NUM_ONE, &feedbackBuffer);
4208     glDeleteVertexArrays(CREAT_NUM_ONE, &array);
4209     destroyGLES();
4210     return getError(env, glError);
4211 }
4212 
GLSampleCoverage(napi_env env,napi_callback_info info)4213 static napi_value GLSampleCoverage(napi_env env, napi_callback_info info)
4214 {
4215     initGLES();
4216     glSampleCoverage(CLEAR_10, GL_TRUE);
4217     GLenum glError = glGetError();
4218     destroyGLES();
4219     return getError(env, glError);
4220 }
4221 
GLSampleMaski(napi_env env,napi_callback_info info)4222 static napi_value GLSampleMaski(napi_env env, napi_callback_info info)
4223 {
4224     initGLES();
4225     glSampleMaski(INT_INIT_VAL, GL_TRIANGLE_STRIP);
4226     GLenum glError = glGetError();
4227     destroyGLES();
4228     return getError(env, glError);
4229 }
4230 
GLSamplerParameterf(napi_env env,napi_callback_info info)4231 static napi_value GLSamplerParameterf(napi_env env, napi_callback_info info)
4232 {
4233     initGLES();
4234     GLuint sampler = INT_INIT_VAL;
4235     glGenSamplers(CREAT_NUM_ONE, &sampler);
4236     glSamplerParameterf(sampler, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
4237     GLenum glError = glGetError();
4238     glDeleteSamplers(CREAT_NUM_ONE, &sampler);
4239     destroyGLES();
4240     return getError(env, glError);
4241 }
4242 
GLSamplerParameterfv(napi_env env,napi_callback_info info)4243 static napi_value GLSamplerParameterfv(napi_env env, napi_callback_info info)
4244 {
4245     initGLES();
4246     GLfloat params[ARRAY_INDEX_TWO] = {INT_INIT_VAL};
4247     GLuint sampler = INT_INIT_VAL;
4248     glGenSamplers(CREAT_NUM_ONE, &sampler);
4249     params[ARRAY_INDEX_ZERO] = GL_NEAREST;
4250     params[ARRAY_INDEX_ONE] = GL_LINEAR;
4251     glSamplerParameterfv(sampler, GL_TEXTURE_MIN_FILTER, params);
4252     GLenum glError = glGetError();
4253     glDeleteSamplers(CREAT_NUM_ONE, &sampler);
4254     destroyGLES();
4255     return getError(env, glError);
4256 }
4257 
GLSamplerParameteri(napi_env env,napi_callback_info info)4258 static napi_value GLSamplerParameteri(napi_env env, napi_callback_info info)
4259 {
4260     initGLES();
4261     GLuint sampler = INT_INIT_VAL;
4262     glGenSamplers(CREAT_NUM_ONE, &sampler);
4263     glSamplerParameteri(sampler, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
4264     GLenum glError = glGetError();
4265     glDeleteSamplers(CREAT_NUM_ONE, &sampler);
4266     destroyGLES();
4267     return getError(env, glError);
4268 }
4269 
GLSamplerParameterIiv(napi_env env,napi_callback_info info)4270 static napi_value GLSamplerParameterIiv(napi_env env, napi_callback_info info)
4271 {
4272     initGLES();
4273     GLint params[ARRAY_INDEX_TWO] = {INT_INIT_VAL};
4274     GLuint sampler = INT_INIT_VAL;
4275     glGenSamplers(CREAT_NUM_ONE, &sampler);
4276     params[ARRAY_INDEX_ZERO] = GL_NEAREST;
4277     params[ARRAY_INDEX_ONE] = GL_LINEAR;
4278     glSamplerParameterIiv(sampler, GL_TEXTURE_MAG_FILTER, params);
4279     GLenum glError = glGetError();
4280     glDeleteSamplers(CREAT_NUM_ONE, &sampler);
4281     destroyGLES();
4282     return getError(env, glError);
4283 }
4284 
GLSamplerParameterIuiv(napi_env env,napi_callback_info info)4285 static napi_value GLSamplerParameterIuiv(napi_env env, napi_callback_info info)
4286 {
4287     initGLES();
4288     GLuint params[ARRAY_INDEX_TWO] = {INT_INIT_VAL};
4289     GLuint sampler = INT_INIT_VAL;
4290     glGenSamplers(CREAT_NUM_ONE, &sampler);
4291     params[ARRAY_INDEX_ZERO] = GL_NEAREST;
4292     params[ARRAY_INDEX_ONE] = GL_LINEAR;
4293     glSamplerParameterIuiv(sampler, GL_TEXTURE_MAG_FILTER, params);
4294     GLenum glError = glGetError();
4295     glDeleteSamplers(CREAT_NUM_ONE, &sampler);
4296     destroyGLES();
4297     return getError(env, glError);
4298 }
4299 
GLSamplerParameteriv(napi_env env,napi_callback_info info)4300 static napi_value GLSamplerParameteriv(napi_env env, napi_callback_info info)
4301 {
4302     initGLES();
4303     GLint params[ARRAY_INDEX_TWO] = {INT_INIT_VAL};
4304     GLuint sampler = INT_INIT_VAL;
4305     glGenSamplers(CREAT_NUM_ONE, &sampler);
4306     params[ARRAY_INDEX_ZERO] = GL_NEAREST;
4307     params[ARRAY_INDEX_ONE] = GL_LINEAR;
4308     glSamplerParameteriv(sampler, GL_TEXTURE_MAG_FILTER, params);
4309     GLenum glError = glGetError();
4310     glDeleteSamplers(CREAT_NUM_ONE, &sampler);
4311     destroyGLES();
4312     return getError(env, glError);
4313 }
4314 
GLScissor(napi_env env,napi_callback_info info)4315 static napi_value GLScissor(napi_env env, napi_callback_info info)
4316 {
4317     initGLES();
4318     glEnable(GL_SCISSOR_TEST);
4319     glScissor(IMAGE_WIDTH, IMAGE_HEIGHT, INIT_WIDTH, INIT_HEIGHT);
4320     GLenum glError = glGetError();
4321     glDisable(GL_SCISSOR_TEST);
4322     destroyGLES();
4323     return getError(env, glError);
4324 }
4325 
GLShaderBinary(napi_env env,napi_callback_info info)4326 static napi_value GLShaderBinary(napi_env env, napi_callback_info info)
4327 {
4328     initGLES();
4329     GLubyte binary[TEX_BUF_SIZE] = {INT_INIT_VAL};
4330     GLuint shader = glCreateShader(GL_FRAGMENT_SHADER);
4331     glShaderBinary(CREAT_NUM_ONE, &shader, INT_INIT_VAL, binary, INT_INIT_VAL);
4332     GLenum glError = glGetError();
4333     glDeleteShader(shader);
4334     destroyGLES();
4335     return getError(env, glError);
4336 }
4337 
GLShaderSource(napi_env env,napi_callback_info info)4338 static napi_value GLShaderSource(napi_env env, napi_callback_info info)
4339 {
4340     initGLES();
4341     GLuint shader = glCreateShader(GL_VERTEX_SHADER);
4342     glShaderSource(shader, CREAT_NUM_ONE, &vertexShaderSource, nullptr);
4343     GLenum glError = glGetError();
4344     glDeleteShader(shader);
4345     destroyGLES();
4346     return getError(env, glError);
4347 }
4348 
GLStencilFunc(napi_env env,napi_callback_info info)4349 static napi_value GLStencilFunc(napi_env env, napi_callback_info info)
4350 {
4351     initGLES();
4352     glEnable(GL_STENCIL_TEST);
4353     glStencilFunc(GL_ALWAYS, CREAT_NUM_ONE, GL_INVALID_INDEX);
4354     GLenum glError = glGetError();
4355     destroyGLES();
4356     return getError(env, glError);
4357 }
4358 
GLStencilFuncSeparate(napi_env env,napi_callback_info info)4359 static napi_value GLStencilFuncSeparate(napi_env env, napi_callback_info info)
4360 {
4361     initGLES();
4362     glEnable(GL_STENCIL_TEST);
4363     glStencilFuncSeparate(GL_FRONT, GL_EQUAL, CREAT_NUM_ONE, GL_INVALID_INDEX);
4364     GLenum glError = glGetError();
4365     destroyGLES();
4366     return getError(env, glError);
4367 }
4368 
GLStencilMask(napi_env env,napi_callback_info info)4369 static napi_value GLStencilMask(napi_env env, napi_callback_info info)
4370 {
4371     initGLES();
4372     glEnable(GL_STENCIL_TEST);
4373     glStencilMask(CREAT_NUM_ONE);
4374     GLenum glError = glGetError();
4375     destroyGLES();
4376     return getError(env, glError);
4377 }
4378 
GLStencilMaskSeparate(napi_env env,napi_callback_info info)4379 static napi_value GLStencilMaskSeparate(napi_env env, napi_callback_info info)
4380 {
4381     initGLES();
4382     glEnable(GL_STENCIL_TEST);
4383     glStencilMaskSeparate(GL_FRONT_AND_BACK, CREAT_NUM_ONE);
4384     GLenum glError = glGetError();
4385     destroyGLES();
4386     return getError(env, glError);
4387 }
4388 
GLStencilOp(napi_env env,napi_callback_info info)4389 static napi_value GLStencilOp(napi_env env, napi_callback_info info)
4390 {
4391     initGLES();
4392     glEnable(GL_STENCIL_TEST);
4393     glStencilOp(GL_KEEP, GL_ZERO, GL_REPLACE);
4394     GLenum glError = glGetError();
4395     destroyGLES();
4396     return getError(env, glError);
4397 }
4398 
GLStencilOpSeparate(napi_env env,napi_callback_info info)4399 static napi_value GLStencilOpSeparate(napi_env env, napi_callback_info info)
4400 {
4401     initGLES();
4402     glEnable(GL_STENCIL_TEST);
4403     glStencilOpSeparate(GL_FRONT_AND_BACK, GL_KEEP, GL_ZERO, GL_REPLACE);
4404     GLenum glError = glGetError();
4405     destroyGLES();
4406     return getError(env, glError);
4407 }
4408 
GLTexBuffer(napi_env env,napi_callback_info info)4409 static napi_value GLTexBuffer(napi_env env, napi_callback_info info)
4410 {
4411     initGLES();
4412     GLuint texture = INT_INIT_VAL;
4413     GLuint buffer = INT_INIT_VAL;
4414     glGenBuffers(CREAT_NUM_ONE, &buffer);
4415     glBindBuffer(GL_TEXTURE_BUFFER, buffer);
4416     glBufferData(GL_TEXTURE_BUFFER, GL_BUF_SIZE, nullptr, GL_DYNAMIC_DRAW);
4417     glGenTextures(CREAT_NUM_ONE, &texture);
4418     glBindTexture(GL_TEXTURE_BUFFER, texture);
4419     glTexBuffer(GL_TEXTURE_BUFFER, GL_R32F, buffer);
4420     GLenum glError = glGetError();
4421     glDeleteBuffers(CREAT_NUM_ONE, &buffer);
4422     glDeleteTextures(CREAT_NUM_ONE, &texture);
4423     destroyGLES();
4424     return getError(env, glError);
4425 }
4426 
GLTexBufferRange(napi_env env,napi_callback_info info)4427 static napi_value GLTexBufferRange(napi_env env, napi_callback_info info)
4428 {
4429     initGLES();
4430     GLuint texture = INT_INIT_VAL;
4431     GLuint buffer = INT_INIT_VAL;
4432     glGenBuffers(CREAT_NUM_ONE, &buffer);
4433     glBindBuffer(GL_TEXTURE_BUFFER, buffer);
4434     glBufferData(GL_TEXTURE_BUFFER, GL_BUF_SIZE, nullptr, GL_DYNAMIC_DRAW);
4435     glGenTextures(CREAT_NUM_ONE, &texture);
4436     glBindTexture(GL_TEXTURE_BUFFER, texture);
4437     glTexBufferRange(GL_TEXTURE_BUFFER, GL_R32F, buffer, INT_INIT_VAL, CREAT_NUM_ONE);
4438     GLenum glError = glGetError();
4439     glDeleteBuffers(CREAT_NUM_ONE, &buffer);
4440     glDeleteTextures(CREAT_NUM_ONE, &texture);
4441     destroyGLES();
4442     return getError(env, glError);
4443 }
4444 
GLTexImage2D(napi_env env,napi_callback_info info)4445 static napi_value GLTexImage2D(napi_env env, napi_callback_info info)
4446 {
4447     initGLES();
4448     unsigned char pixels[] = {255, 255, 255, 0, 0, 0, 255, 255, 255, 0, 0, 0};
4449     GLuint texture = INT_INIT_VAL;
4450     glGenTextures(CREAT_NUM_ONE, &texture);
4451     glBindTexture(GL_TEXTURE_2D, texture);
4452     glTexImage2D(GL_TEXTURE_2D, INT_INIT_VAL, GL_RGB, VARYING_NUM, VARYING_NUM, INT_INIT_VAL, GL_RGB, GL_UNSIGNED_BYTE,
4453                  pixels);
4454     GLenum glError = glGetError();
4455     glDeleteTextures(CREAT_NUM_ONE, &texture);
4456     destroyGLES();
4457     return getError(env, glError);
4458 }
4459 
GLTexImage3D(napi_env env,napi_callback_info info)4460 static napi_value GLTexImage3D(napi_env env, napi_callback_info info)
4461 {
4462     initGLES();
4463     GLuint texture = INT_INIT_VAL;
4464     glGenTextures(CREAT_NUM_ONE, &texture);
4465     glBindTexture(GL_TEXTURE_3D, texture);
4466     glTexImage3D(GL_TEXTURE_3D, INT_INIT_VAL, GL_RGB, IMAGE_WIDTH, IMAGE_HEIGHT, IMAGE_DEPTH, INT_INIT_VAL, GL_RGB,
4467                  GL_UNSIGNED_BYTE, nullptr);
4468     GLenum glError = glGetError();
4469     glDeleteTextures(CREAT_NUM_ONE, &texture);
4470     destroyGLES();
4471     return getError(env, glError);
4472 }
4473 
GLTexParameterf(napi_env env,napi_callback_info info)4474 static napi_value GLTexParameterf(napi_env env, napi_callback_info info)
4475 {
4476     initGLES();
4477     GLuint texture = INT_INIT_VAL;
4478     glGenTextures(CREAT_NUM_ONE, &texture);
4479     glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, CLEAR_10);
4480     GLenum glError = glGetError();
4481     glDeleteTextures(CREAT_NUM_ONE, &texture);
4482     destroyGLES();
4483     return getError(env, glError);
4484 }
4485 
GLTexParameterfv(napi_env env,napi_callback_info info)4486 static napi_value GLTexParameterfv(napi_env env, napi_callback_info info)
4487 {
4488     initGLES();
4489     GLuint texture = INT_INIT_VAL;
4490     GLfloat color[] = {CLEAR_10, CLEAR_10, CLEAR_10, CLEAR_10};
4491     glGenTextures(CREAT_NUM_ONE, &texture);
4492     glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, color);
4493     GLenum glError = glGetError();
4494     glDeleteTextures(CREAT_NUM_ONE, &texture);
4495     destroyGLES();
4496     return getError(env, glError);
4497 }
4498 
GLTexParameteri(napi_env env,napi_callback_info info)4499 static napi_value GLTexParameteri(napi_env env, napi_callback_info info)
4500 {
4501     initGLES();
4502     GLuint texture = INT_INIT_VAL;
4503     glGenTextures(CREAT_NUM_ONE, &texture);
4504     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, CREAT_NUM_ONE);
4505     GLenum glError = glGetError();
4506     glDeleteTextures(CREAT_NUM_ONE, &texture);
4507     destroyGLES();
4508     return getError(env, glError);
4509 }
4510 
GLTexParameterIiv(napi_env env,napi_callback_info info)4511 static napi_value GLTexParameterIiv(napi_env env, napi_callback_info info)
4512 {
4513     initGLES();
4514     GLuint texture = INT_INIT_VAL;
4515     GLint color[] = {CREAT_NUM_ONE, CREAT_NUM_ONE, CREAT_NUM_ONE, CREAT_NUM_ONE};
4516     glGenTextures(CREAT_NUM_ONE, &texture);
4517     glTexParameterIiv(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, color);
4518     GLenum glError = glGetError();
4519     glDeleteTextures(CREAT_NUM_ONE, &texture);
4520     destroyGLES();
4521     return getError(env, glError);
4522 }
4523 
GLTexParameterIuiv(napi_env env,napi_callback_info info)4524 static napi_value GLTexParameterIuiv(napi_env env, napi_callback_info info)
4525 {
4526     initGLES();
4527     GLuint texture = INT_INIT_VAL;
4528     GLuint color[] = {CREAT_NUM_ONE, CREAT_NUM_ONE, CREAT_NUM_ONE, CREAT_NUM_ONE};
4529     glGenTextures(CREAT_NUM_ONE, &texture);
4530     glTexParameterIuiv(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, color);
4531     GLenum glError = glGetError();
4532     glDeleteTextures(CREAT_NUM_ONE, &texture);
4533     destroyGLES();
4534     return getError(env, glError);
4535 }
4536 
GLTexParameteriv(napi_env env,napi_callback_info info)4537 static napi_value GLTexParameteriv(napi_env env, napi_callback_info info)
4538 {
4539     initGLES();
4540     GLuint texture = INT_INIT_VAL;
4541     GLint color[] = {CREAT_NUM_ONE, CREAT_NUM_ONE, CREAT_NUM_ONE, CREAT_NUM_ONE};
4542     glGenTextures(CREAT_NUM_ONE, &texture);
4543     glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, color);
4544     GLenum glError = glGetError();
4545     glDeleteTextures(CREAT_NUM_ONE, &texture);
4546     destroyGLES();
4547     return getError(env, glError);
4548 }
4549 
GLTexStorage2D(napi_env env,napi_callback_info info)4550 static napi_value GLTexStorage2D(napi_env env, napi_callback_info info)
4551 {
4552     initGLES();
4553     GLuint texture;
4554     glGenTextures(CREAT_NUM_ONE, &texture);
4555     glBindTexture(GL_TEXTURE_2D, texture);
4556     glTexStorage2D(GL_TEXTURE_2D, CREAT_NUM_ONE, GL_RGBA8, IMAGE_WIDTH, IMAGE_HEIGHT);
4557     GLenum glError = glGetError();
4558     glDeleteTextures(CREAT_NUM_ONE, &texture);
4559     destroyGLES();
4560     return getError(env, glError);
4561 }
4562 
GLTexStorage2DMultisample(napi_env env,napi_callback_info info)4563 static napi_value GLTexStorage2DMultisample(napi_env env, napi_callback_info info)
4564 {
4565     initGLES();
4566     GLuint texture = INT_INIT_VAL;
4567     glGenTextures(CREAT_NUM_ONE, &texture);
4568     glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, texture);
4569     glTexStorage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE, SAMPLES, GL_RGB8, IMAGE_WIDTH, IMAGE_HEIGHT, INT_INIT_VAL);
4570     GLenum glError = glGetError();
4571     glDeleteTextures(CREAT_NUM_ONE, &texture);
4572     destroyGLES();
4573     return getError(env, glError);
4574 }
4575 
GLTexStorage3D(napi_env env,napi_callback_info info)4576 static napi_value GLTexStorage3D(napi_env env, napi_callback_info info)
4577 {
4578     initGLES();
4579     GLuint texture = INT_INIT_VAL;
4580     glGenTextures(CREAT_NUM_ONE, &texture);
4581     glBindTexture(GL_TEXTURE_2D_ARRAY, texture);
4582     glTexStorage3D(GL_TEXTURE_2D_ARRAY, IMAGE2D_LEVEL_ONE, GL_RGBA8, INIT_WIDTH, INIT_HEIGHT, VARYING_NUM);
4583     GLenum glError = glGetError();
4584     glDeleteTextures(CREAT_NUM_ONE, &texture);
4585     destroyGLES();
4586     return getError(env, glError);
4587 }
4588 
GLTexStorage3DMultisample(napi_env env,napi_callback_info info)4589 static napi_value GLTexStorage3DMultisample(napi_env env, napi_callback_info info)
4590 {
4591     initGLES();
4592     GLuint texture = INT_INIT_VAL;
4593     glGenTextures(CREAT_NUM_ONE, &texture);
4594     glBindTexture(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, texture);
4595     glTexStorage3DMultisample(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, CREAT_NUM_ONE, GL_RGBA8, SUB_DATA_SIZE, SUB_DATA_SIZE,
4596                               SUB_DATA_SIZE, GL_FALSE);
4597     GLenum glError = glGetError();
4598     glDeleteTextures(CREAT_NUM_ONE, &texture);
4599     destroyGLES();
4600     return getError(env, glError);
4601 }
4602 
GLTexSubImage2D(napi_env env,napi_callback_info info)4603 static napi_value GLTexSubImage2D(napi_env env, napi_callback_info info)
4604 {
4605     initGLES();
4606     GLuint texture = INT_INIT_VAL;
4607     glGenTextures(CREAT_NUM_ONE, &texture);
4608     glBindTexture(GL_TEXTURE_2D, texture);
4609     glTexImage2D(GL_TEXTURE_2D, INT_INIT_VAL, GL_RGB, VARYING_NUM, VARYING_NUM, INT_INIT_VAL, GL_RGB, GL_UNSIGNED_BYTE,
4610                  nullptr);
4611     glTexSubImage2D(GL_TEXTURE_2D, INT_INIT_VAL, INT_INIT_VAL, INT_INIT_VAL, VARYING_NUM, VARYING_NUM, GL_RGB,
4612                     GL_UNSIGNED_BYTE, nullptr);
4613     GLenum glError = glGetError();
4614     glDeleteTextures(CREAT_NUM_ONE, &texture);
4615     destroyGLES();
4616     return getError(env, glError);
4617 }
4618 
GLTexSubImage3D(napi_env env,napi_callback_info info)4619 static napi_value GLTexSubImage3D(napi_env env, napi_callback_info info)
4620 {
4621     initGLES();
4622     GLuint texture = INT_INIT_VAL;
4623     glGenTextures(CREAT_NUM_ONE, &texture);
4624     glBindTexture(GL_TEXTURE_2D_ARRAY, texture);
4625     glTexImage3D(GL_TEXTURE_2D_ARRAY, INT_INIT_VAL, GL_RGB, IMAGE_WIDTH, IMAGE_HEIGHT, IMAGE_DEPTH, INT_INIT_VAL,
4626                  GL_RGB, GL_UNSIGNED_BYTE, nullptr);
4627     glTexSubImage3D(GL_TEXTURE_2D_ARRAY, INT_INIT_VAL, INT_INIT_VAL, INT_INIT_VAL, INT_INIT_VAL, IMAGE_WIDTH,
4628                     IMAGE_HEIGHT, IMAGE_DEPTH, GL_RGB, GL_UNSIGNED_BYTE, nullptr);
4629     GLenum glError = glGetError();
4630     glDeleteTextures(CREAT_NUM_ONE, &texture);
4631     destroyGLES();
4632     return getError(env, glError);
4633 }
4634 
GLTransformFeedbackVaryings(napi_env env,napi_callback_info info)4635 static napi_value GLTransformFeedbackVaryings(napi_env env, napi_callback_info info)
4636 {
4637     initGLES();
4638     GLuint programObject = initProgram();
4639     GLuint feedbackObjId = INT_INIT_VAL;
4640     glGenTransformFeedbacks(CREAT_NUM_ONE, &feedbackObjId);
4641     glBindTransformFeedback(GL_TRANSFORM_FEEDBACK, feedbackObjId);
4642     const char *varyingNames[] = {"outValue"};
4643     glTransformFeedbackVaryings(programObject, CREAT_NUM_ONE, varyingNames, GL_SEPARATE_ATTRIBS);
4644     GLenum glError = glGetError();
4645     deleteProgram();
4646     glDeleteProgram(programObject);
4647     glDeleteTransformFeedbacks(CREAT_NUM_ONE, &feedbackObjId);
4648     destroyGLES();
4649     return getError(env, glError);
4650 }
4651 
GLUniform1f(napi_env env,napi_callback_info info)4652 static napi_value GLUniform1f(napi_env env, napi_callback_info info)
4653 {
4654     initGLES();
4655     GLuint programObject = initProgram();
4656     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
4657     glUseProgram(programObject);
4658     glUniform1f(uniformLocation, CLEAR_10);
4659     GLenum glError = glGetError();
4660     deleteProgram();
4661     glDeleteProgram(programObject);
4662     destroyGLES();
4663     return getError(env, glError);
4664 }
4665 
GLUniform1fv(napi_env env,napi_callback_info info)4666 static napi_value GLUniform1fv(napi_env env, napi_callback_info info)
4667 {
4668     initGLES();
4669     GLuint programObject = initProgram();
4670     GLint uniformLocation = glGetUniformLocation(programObject, "u_pointLights[0].brightness");
4671     glUseProgram(programObject);
4672     GLfloat brightness[POINT_LIGHT_COUNT] = {0.8f, 0.2f, 0.6f, 0.4f};
4673     glUniform1fv(uniformLocation, POINT_LIGHT_COUNT, brightness);
4674     GLenum glError = glGetError();
4675     deleteProgram();
4676     glDeleteProgram(programObject);
4677     destroyGLES();
4678     return getError(env, glError);
4679 }
4680 
GLUniform1i(napi_env env,napi_callback_info info)4681 static napi_value GLUniform1i(napi_env env, napi_callback_info info)
4682 {
4683     initGLES();
4684     GLuint programObject = initProgram();
4685     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
4686     glUseProgram(programObject);
4687     glUniform1i(uniformLocation, INT_INIT_VAL);
4688     GLenum glError = glGetError();
4689     deleteProgram();
4690     glDeleteProgram(programObject);
4691     destroyGLES();
4692     return getError(env, glError);
4693 }
4694 
GLUniform1iv(napi_env env,napi_callback_info info)4695 static napi_value GLUniform1iv(napi_env env, napi_callback_info info)
4696 {
4697     initGLES();
4698     GLuint programObject = initProgram();
4699     GLint uniformLocation = glGetUniformLocation(programObject, "u_pointLights[0].brightness");
4700     glUseProgram(programObject);
4701     GLint brightness[POINT_LIGHT_COUNT] = {0, 0, 0, 0};
4702     glUniform1iv(uniformLocation, POINT_LIGHT_COUNT, brightness);
4703     GLenum glError = glGetError();
4704     deleteProgram();
4705     glDeleteProgram(programObject);
4706     destroyGLES();
4707     return getError(env, glError);
4708 }
4709 
GLUniform1ui(napi_env env,napi_callback_info info)4710 static napi_value GLUniform1ui(napi_env env, napi_callback_info info)
4711 {
4712     initGLES();
4713     GLuint programObject = initProgram();
4714     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
4715     glUseProgram(programObject);
4716     glUniform1ui(uniformLocation, INT_INIT_VAL);
4717     GLenum glError = glGetError();
4718     deleteProgram();
4719     glDeleteProgram(programObject);
4720     destroyGLES();
4721     return getError(env, glError);
4722 }
4723 
GLUniform1uiv(napi_env env,napi_callback_info info)4724 static napi_value GLUniform1uiv(napi_env env, napi_callback_info info)
4725 {
4726     initGLES();
4727     GLuint programObject = initProgram();
4728     GLint uniformLocation = glGetUniformLocation(programObject, "u_pointLights[0].brightness");
4729     glUseProgram(programObject);
4730     GLuint brightness[POINT_LIGHT_COUNT] = {0, 0, 0, 0};
4731     glUniform1uiv(uniformLocation, POINT_LIGHT_COUNT, brightness);
4732     GLenum glError = glGetError();
4733     deleteProgram();
4734     glDeleteProgram(programObject);
4735     destroyGLES();
4736     return getError(env, glError);
4737 }
4738 
GLUniform2f(napi_env env,napi_callback_info info)4739 static napi_value GLUniform2f(napi_env env, napi_callback_info info)
4740 {
4741     initGLES();
4742     GLuint programObject = initProgram();
4743     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
4744     glUseProgram(programObject);
4745     glUniform2f(uniformLocation, CLEAR_10, CLEAR_10);
4746     GLenum glError = glGetError();
4747     deleteProgram();
4748     glDeleteProgram(programObject);
4749     destroyGLES();
4750     return getError(env, glError);
4751 }
4752 
GLUniform2fv(napi_env env,napi_callback_info info)4753 static napi_value GLUniform2fv(napi_env env, napi_callback_info info)
4754 {
4755     initGLES();
4756     GLuint programObject = initProgram();
4757     GLint uniformLocation = glGetUniformLocation(programObject, "u_pointLights[0].brightness");
4758     glUseProgram(programObject);
4759     GLfloat brightness[POINT_LIGHT_COUNT] = {0.8f, 0.2f, 0.6f, 0.4f};
4760     glUniform2fv(uniformLocation, POINT_LIGHT_COUNT, brightness);
4761     GLenum glError = glGetError();
4762     deleteProgram();
4763     glDeleteProgram(programObject);
4764     destroyGLES();
4765     return getError(env, glError);
4766 }
4767 
GLUniform2i(napi_env env,napi_callback_info info)4768 static napi_value GLUniform2i(napi_env env, napi_callback_info info)
4769 {
4770     initGLES();
4771     GLuint programObject = initProgram();
4772     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
4773     glUseProgram(programObject);
4774     glUniform2i(uniformLocation, INT_INIT_VAL, INT_INIT_VAL);
4775     GLenum glError = glGetError();
4776     deleteProgram();
4777     glDeleteProgram(programObject);
4778     destroyGLES();
4779     return getError(env, glError);
4780 }
4781 
GLUniform2iv(napi_env env,napi_callback_info info)4782 static napi_value GLUniform2iv(napi_env env, napi_callback_info info)
4783 {
4784     initGLES();
4785     GLuint programObject = initProgram();
4786     GLint uniformLocation = glGetUniformLocation(programObject, "u_pointLights[0].brightness");
4787     glUseProgram(programObject);
4788     GLint brightness[POINT_LIGHT_COUNT] = {0, 0, 0, 0};
4789     glUniform2iv(uniformLocation, POINT_LIGHT_COUNT, brightness);
4790     GLenum glError = glGetError();
4791     deleteProgram();
4792     glDeleteProgram(programObject);
4793     destroyGLES();
4794     return getError(env, glError);
4795 }
4796 
GLUniform2ui(napi_env env,napi_callback_info info)4797 static napi_value GLUniform2ui(napi_env env, napi_callback_info info)
4798 {
4799     initGLES();
4800     GLuint programObject = initProgram();
4801     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
4802     glUseProgram(programObject);
4803     glUniform2ui(uniformLocation, INT_INIT_VAL, INT_INIT_VAL);
4804     GLenum glError = glGetError();
4805     deleteProgram();
4806     glDeleteProgram(programObject);
4807     destroyGLES();
4808     return getError(env, glError);
4809 }
4810 
GLUniform2uiv(napi_env env,napi_callback_info info)4811 static napi_value GLUniform2uiv(napi_env env, napi_callback_info info)
4812 {
4813     initGLES();
4814     GLuint programObject = initProgram();
4815     GLint uniformLocation = glGetUniformLocation(programObject, "u_pointLights[0].brightness");
4816     glUseProgram(programObject);
4817     GLuint brightness[POINT_LIGHT_COUNT] = {0, 0, 0, 0};
4818     glUniform2uiv(uniformLocation, POINT_LIGHT_COUNT, brightness);
4819     GLenum glError = glGetError();
4820     deleteProgram();
4821     glDeleteProgram(programObject);
4822     destroyGLES();
4823     return getError(env, glError);
4824 }
4825 
GLUniform3f(napi_env env,napi_callback_info info)4826 static napi_value GLUniform3f(napi_env env, napi_callback_info info)
4827 {
4828     initGLES();
4829     GLuint programObject = initProgram();
4830     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
4831     glUseProgram(programObject);
4832     glUniform3f(uniformLocation, CLEAR_10, CLEAR_10, CLEAR_10);
4833     GLenum glError = glGetError();
4834     deleteProgram();
4835     glDeleteProgram(programObject);
4836     destroyGLES();
4837     return getError(env, glError);
4838 }
4839 
GLUniform3fv(napi_env env,napi_callback_info info)4840 static napi_value GLUniform3fv(napi_env env, napi_callback_info info)
4841 {
4842     initGLES();
4843     GLuint programObject = initProgram();
4844     GLint uniformLocation = glGetUniformLocation(programObject, "u_pointLights[0].brightness");
4845     glUseProgram(programObject);
4846     GLfloat brightness[POINT_LIGHT_COUNT] = {0.8f, 0.2f, 0.6f, 0.4f};
4847     glUniform3fv(uniformLocation, POINT_LIGHT_COUNT, brightness);
4848     GLenum glError = glGetError();
4849     deleteProgram();
4850     glDeleteProgram(programObject);
4851     destroyGLES();
4852     return getError(env, glError);
4853 }
4854 
GLUniform3i(napi_env env,napi_callback_info info)4855 static napi_value GLUniform3i(napi_env env, napi_callback_info info)
4856 {
4857     initGLES();
4858     GLuint programObject = initProgram();
4859     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
4860     glUseProgram(programObject);
4861     glUniform3i(uniformLocation, INT_INIT_VAL, INT_INIT_VAL, INT_INIT_VAL);
4862     GLenum glError = glGetError();
4863     deleteProgram();
4864     glDeleteProgram(programObject);
4865     destroyGLES();
4866     return getError(env, glError);
4867 }
4868 
GLUniform3iv(napi_env env,napi_callback_info info)4869 static napi_value GLUniform3iv(napi_env env, napi_callback_info info)
4870 {
4871     initGLES();
4872     GLuint programObject = initProgram();
4873     GLint uniformLocation = glGetUniformLocation(programObject, "u_pointLights[0].brightness");
4874     glUseProgram(programObject);
4875     GLint brightness[POINT_LIGHT_COUNT] = {0, 0, 0, 0};
4876     glUniform3iv(uniformLocation, POINT_LIGHT_COUNT, brightness);
4877     GLenum glError = glGetError();
4878     deleteProgram();
4879     glDeleteProgram(programObject);
4880     destroyGLES();
4881     return getError(env, glError);
4882 }
4883 
GLUniform3ui(napi_env env,napi_callback_info info)4884 static napi_value GLUniform3ui(napi_env env, napi_callback_info info)
4885 {
4886     initGLES();
4887     GLuint programObject = initProgram();
4888     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
4889     glUseProgram(programObject);
4890     glUniform3ui(uniformLocation, INT_INIT_VAL, INT_INIT_VAL, INT_INIT_VAL);
4891     GLenum glError = glGetError();
4892     deleteProgram();
4893     glDeleteProgram(programObject);
4894     destroyGLES();
4895     return getError(env, glError);
4896 }
4897 
GLUniform3uiv(napi_env env,napi_callback_info info)4898 static napi_value GLUniform3uiv(napi_env env, napi_callback_info info)
4899 {
4900     initGLES();
4901     GLuint programObject = initProgram();
4902     GLint uniformLocation = glGetUniformLocation(programObject, "u_pointLights[0].brightness");
4903     glUseProgram(programObject);
4904     GLuint brightness[POINT_LIGHT_COUNT] = {0, 0, 0, 0};
4905     glUniform3uiv(uniformLocation, POINT_LIGHT_COUNT, brightness);
4906     GLenum glError = glGetError();
4907     deleteProgram();
4908     glDeleteProgram(programObject);
4909     destroyGLES();
4910     return getError(env, glError);
4911 }
4912 
GLUniform4f(napi_env env,napi_callback_info info)4913 static napi_value GLUniform4f(napi_env env, napi_callback_info info)
4914 {
4915     initGLES();
4916     GLuint programObject = initProgram();
4917     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
4918     glUseProgram(programObject);
4919     glUniform4f(uniformLocation, CLEAR_10, CLEAR_10, CLEAR_10, CLEAR_10);
4920     GLenum glError = glGetError();
4921     deleteProgram();
4922     glDeleteProgram(programObject);
4923     destroyGLES();
4924     return getError(env, glError);
4925 }
4926 
GLUniform4fv(napi_env env,napi_callback_info info)4927 static napi_value GLUniform4fv(napi_env env, napi_callback_info info)
4928 {
4929     initGLES();
4930     GLuint programObject = initProgram();
4931     GLint uniformLocation = glGetUniformLocation(programObject, "u_pointLights[0].brightness");
4932     glUseProgram(programObject);
4933     GLfloat brightness[POINT_LIGHT_COUNT] = {0.8f, 0.2f, 0.6f, 0.4f};
4934     glUniform4fv(uniformLocation, POINT_LIGHT_COUNT, brightness);
4935     GLenum glError = glGetError();
4936     deleteProgram();
4937     glDeleteProgram(programObject);
4938     destroyGLES();
4939     return getError(env, glError);
4940 }
4941 
GLUniform4i(napi_env env,napi_callback_info info)4942 static napi_value GLUniform4i(napi_env env, napi_callback_info info)
4943 {
4944     initGLES();
4945     GLuint programObject = initProgram();
4946     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
4947     glUseProgram(programObject);
4948     glUniform4i(uniformLocation, INT_INIT_VAL, INT_INIT_VAL, INT_INIT_VAL, INT_INIT_VAL);
4949     GLenum glError = glGetError();
4950     deleteProgram();
4951     glDeleteProgram(programObject);
4952     destroyGLES();
4953     return getError(env, glError);
4954 }
4955 
GLUniform4iv(napi_env env,napi_callback_info info)4956 static napi_value GLUniform4iv(napi_env env, napi_callback_info info)
4957 {
4958     initGLES();
4959     GLuint programObject = initProgram();
4960     GLint uniformLocation = glGetUniformLocation(programObject, "u_pointLights[0].brightness");
4961     glUseProgram(programObject);
4962     GLint brightness[POINT_LIGHT_COUNT] = {0, 0, 0, 0};
4963     glUniform4iv(uniformLocation, POINT_LIGHT_COUNT, brightness);
4964     GLenum glError = glGetError();
4965     deleteProgram();
4966     glDeleteProgram(programObject);
4967     destroyGLES();
4968     return getError(env, glError);
4969 }
4970 
GLUniform4ui(napi_env env,napi_callback_info info)4971 static napi_value GLUniform4ui(napi_env env, napi_callback_info info)
4972 {
4973     initGLES();
4974     GLuint programObject = initProgram();
4975     GLint uniformLocation = glGetUniformLocation(programObject, "u_brightness");
4976     glUseProgram(programObject);
4977     glUniform4ui(uniformLocation, INT_INIT_VAL, INT_INIT_VAL, INT_INIT_VAL, INT_INIT_VAL);
4978     GLenum glError = glGetError();
4979     deleteProgram();
4980     glDeleteProgram(programObject);
4981     destroyGLES();
4982     return getError(env, glError);
4983 }
4984 
GLUniform4uiv(napi_env env,napi_callback_info info)4985 static napi_value GLUniform4uiv(napi_env env, napi_callback_info info)
4986 {
4987     initGLES();
4988     GLuint programObject = initProgram();
4989     GLint uniformLocation = glGetUniformLocation(programObject, "u_pointLights[0].brightness");
4990     glUseProgram(programObject);
4991     GLuint brightness[POINT_LIGHT_COUNT] = {0, 0, 0, 0};
4992     glUniform4uiv(uniformLocation, POINT_LIGHT_COUNT, brightness);
4993     GLenum glError = glGetError();
4994     deleteProgram();
4995     glDeleteProgram(programObject);
4996     destroyGLES();
4997     return getError(env, glError);
4998 }
4999 
GLUniformBlockBinding(napi_env env,napi_callback_info info)5000 static napi_value GLUniformBlockBinding(napi_env env, napi_callback_info info)
5001 {
5002     initGLES();
5003     GLuint programObject = initProgram();
5004     GLuint matricesIndex = glGetUniformBlockIndex(programObject, "MatrixBlock");
5005     glUniformBlockBinding(programObject, matricesIndex, VARYING_NUM);
5006     GLenum glError = glGetError();
5007     deleteProgram();
5008     glDeleteProgram(programObject);
5009     destroyGLES();
5010     return getError(env, glError);
5011 }
5012 
GLUniformMatrix2fv(napi_env env,napi_callback_info info)5013 static napi_value GLUniformMatrix2fv(napi_env env, napi_callback_info info)
5014 {
5015     initGLES();
5016     GLuint programObject = initProgram();
5017     GLint uniformLocation = glGetUniformLocation(programObject, "u_pointLights[0].brightness");
5018     glUseProgram(programObject);
5019     GLfloat matrix[MATRIX_4] = {CLEAR_10, CLEAR_00, CLEAR_00, CLEAR_10};
5020     glUniformMatrix2fv(uniformLocation, CREAT_NUM_ONE, GL_TRUE, matrix);
5021     GLenum glError = glGetError();
5022     deleteProgram();
5023     glDeleteProgram(programObject);
5024     destroyGLES();
5025     return getError(env, glError);
5026 }
5027 
GLUniformMatrix2x3fv(napi_env env,napi_callback_info info)5028 static napi_value GLUniformMatrix2x3fv(napi_env env, napi_callback_info info)
5029 {
5030     initGLES();
5031     GLuint programObject = initProgram();
5032     GLint uniformLocation = glGetUniformLocation(programObject, "u_pointLights[0].brightness");
5033     glUseProgram(programObject);
5034     GLfloat matrix[MATRIX_6] = {CLEAR_10, CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_10, CLEAR_00};
5035     glUniformMatrix2x3fv(uniformLocation, CREAT_NUM_ONE, GL_TRUE, matrix);
5036     GLenum glError = glGetError();
5037     deleteProgram();
5038     glDeleteProgram(programObject);
5039     destroyGLES();
5040     return getError(env, glError);
5041 }
5042 
GLUniformMatrix2x4fv(napi_env env,napi_callback_info info)5043 static napi_value GLUniformMatrix2x4fv(napi_env env, napi_callback_info info)
5044 {
5045     initGLES();
5046     GLuint programObject = initProgram();
5047     GLint uniformLocation = glGetUniformLocation(programObject, "u_pointLights[0].brightness");
5048     glUseProgram(programObject);
5049     GLfloat matrix[MATRIX_8] = {CLEAR_10, CLEAR_00, CLEAR_00, CLEAR_10, CLEAR_00, CLEAR_10, CLEAR_00, CLEAR_10};
5050     glUniformMatrix2x4fv(uniformLocation, CREAT_NUM_ONE, GL_TRUE, matrix);
5051     GLenum glError = glGetError();
5052     deleteProgram();
5053     glDeleteProgram(programObject);
5054     destroyGLES();
5055     return getError(env, glError);
5056 }
5057 
GLUniformMatrix3fv(napi_env env,napi_callback_info info)5058 static napi_value GLUniformMatrix3fv(napi_env env, napi_callback_info info)
5059 {
5060     initGLES();
5061     GLuint programObject = initProgram();
5062     GLint uniformLocation = glGetUniformLocation(programObject, "u_pointLights[0].brightness");
5063     glUseProgram(programObject);
5064     GLfloat matrix[MATRIX_9] = {CLEAR_10, CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_10,
5065                                 CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_10};
5066     glUniformMatrix3fv(uniformLocation, CREAT_NUM_ONE, GL_TRUE, matrix);
5067     GLenum glError = glGetError();
5068     deleteProgram();
5069     glDeleteProgram(programObject);
5070     destroyGLES();
5071     return getError(env, glError);
5072 }
5073 
GLUniformMatrix3x2fv(napi_env env,napi_callback_info info)5074 static napi_value GLUniformMatrix3x2fv(napi_env env, napi_callback_info info)
5075 {
5076     initGLES();
5077     GLuint programObject = initProgram();
5078     GLint uniformLocation = glGetUniformLocation(programObject, "u_pointLights[0].brightness");
5079     glUseProgram(programObject);
5080     GLfloat matrix[MATRIX_6] = {CLEAR_10, CLEAR_00, CLEAR_00, CLEAR_10, CLEAR_00, CLEAR_00};
5081     glUniformMatrix3x2fv(uniformLocation, CREAT_NUM_ONE, GL_TRUE, matrix);
5082     GLenum glError = glGetError();
5083     deleteProgram();
5084     glDeleteProgram(programObject);
5085     destroyGLES();
5086     return getError(env, glError);
5087 }
5088 
GLUniformMatrix3x4fv(napi_env env,napi_callback_info info)5089 static napi_value GLUniformMatrix3x4fv(napi_env env, napi_callback_info info)
5090 {
5091     initGLES();
5092     GLuint programObject = initProgram();
5093     GLint uniformLocation = glGetUniformLocation(programObject, "u_pointLights[0].brightness");
5094     glUseProgram(programObject);
5095     GLfloat matrix[MATRIX_12] = {CLEAR_10, CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_10,
5096                                  CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_10, CLEAR_00};
5097     glUniformMatrix3x4fv(uniformLocation, CREAT_NUM_ONE, GL_TRUE, matrix);
5098     GLenum glError = glGetError();
5099     deleteProgram();
5100     glDeleteProgram(programObject);
5101     destroyGLES();
5102     return getError(env, glError);
5103 }
5104 
GLUniformMatrix4fv(napi_env env,napi_callback_info info)5105 static napi_value GLUniformMatrix4fv(napi_env env, napi_callback_info info)
5106 {
5107     initGLES();
5108     GLuint programObject = initProgram();
5109     GLint uniformLocation = glGetUniformLocation(programObject, "u_pointLights[0].brightness");
5110     glUseProgram(programObject);
5111     GLfloat matrix[MATRIX_16] = {CLEAR_10, CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_10, CLEAR_00, CLEAR_00,
5112                                  CLEAR_00, CLEAR_00, CLEAR_10, CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_10};
5113     glUniformMatrix4fv(uniformLocation, CREAT_NUM_ONE, GL_TRUE, matrix);
5114     GLenum glError = glGetError();
5115     deleteProgram();
5116     glDeleteProgram(programObject);
5117     destroyGLES();
5118     return getError(env, glError);
5119 }
5120 
GLUniformMatrix4x2fv(napi_env env,napi_callback_info info)5121 static napi_value GLUniformMatrix4x2fv(napi_env env, napi_callback_info info)
5122 {
5123     initGLES();
5124     GLuint programObject = initProgram();
5125     GLint uniformLocation = glGetUniformLocation(programObject, "u_pointLights[0].brightness");
5126     glUseProgram(programObject);
5127     GLfloat matrix[MATRIX_8] = {
5128         CLEAR_10, CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_10, CLEAR_00, CLEAR_00,
5129     };
5130     glUniformMatrix4x2fv(uniformLocation, CREAT_NUM_ONE, GL_TRUE, matrix);
5131     GLenum glError = glGetError();
5132     deleteProgram();
5133     glDeleteProgram(programObject);
5134     destroyGLES();
5135     return getError(env, glError);
5136 }
5137 
GLUniformMatrix4x3fv(napi_env env,napi_callback_info info)5138 static napi_value GLUniformMatrix4x3fv(napi_env env, napi_callback_info info)
5139 {
5140     initGLES();
5141     GLuint programObject = initProgram();
5142     GLint uniformLocation = glGetUniformLocation(programObject, "u_pointLights[0].brightness");
5143     glUseProgram(programObject);
5144     GLfloat matrix[MATRIX_12] = {
5145         CLEAR_10, CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_10,
5146         CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_10, CLEAR_00,
5147     };
5148     glUniformMatrix4x3fv(uniformLocation, CREAT_NUM_ONE, GL_TRUE, matrix);
5149     GLenum glError = glGetError();
5150     deleteProgram();
5151     glDeleteProgram(programObject);
5152     destroyGLES();
5153     return getError(env, glError);
5154 }
5155 
GLUnmapBuffer(napi_env env,napi_callback_info info)5156 static napi_value GLUnmapBuffer(napi_env env, napi_callback_info info)
5157 {
5158     initGLES();
5159     GLuint buffer;
5160     glGenBuffers(CREAT_NUM_ONE, &buffer);
5161     glBindBuffer(GL_ARRAY_BUFFER, buffer);
5162     glBufferData(GL_ARRAY_BUFFER, GL_BUF_SIZE, nullptr, GL_DYNAMIC_DRAW);
5163     glMapBufferRange(GL_ARRAY_BUFFER, INT_INIT_VAL, GL_BUF_SIZE,
5164                      GL_MAP_WRITE_BIT | GL_MAP_UNSYNCHRONIZED_BIT | GL_MAP_FLUSH_EXPLICIT_BIT);
5165     glFlushMappedBufferRange(GL_ARRAY_BUFFER, INT_INIT_VAL, GL_BUF_SIZE);
5166     GLboolean glRet = glUnmapBuffer(GL_ARRAY_BUFFER);
5167     glDeleteBuffers(CREAT_NUM_ONE, &buffer);
5168     destroyGLES();
5169     napi_value result = nullptr;
5170     if (GL_TRUE == glRet) {
5171         napi_create_int32(env, SUCCESS, &result);
5172     } else {
5173         napi_create_int32(env, FAILED, &result);
5174     }
5175     return result;
5176 }
5177 
GLUseProgram(napi_env env,napi_callback_info info)5178 static napi_value GLUseProgram(napi_env env, napi_callback_info info)
5179 {
5180     initGLES();
5181     GLuint programObject = initProgram();
5182     glUseProgram(programObject);
5183     GLenum glError = glGetError();
5184     deleteProgram();
5185     glDeleteProgram(programObject);
5186     destroyGLES();
5187     return getError(env, glError);
5188 }
5189 
GLUseProgramStages(napi_env env,napi_callback_info info)5190 static napi_value GLUseProgramStages(napi_env env, napi_callback_info info)
5191 {
5192     initGLES();
5193     GLuint pipeline = INT_INIT_VAL;
5194     glGenProgramPipelines(PIPELINES_NUM_ONE, &pipeline);
5195     glBindProgramPipeline(pipeline);
5196     GLuint program = glCreateShaderProgramv(GL_FRAGMENT_SHADER, CREAT_NUM_ONE, &fragmentShaderSource);
5197     glUseProgramStages(pipeline, GL_FRAGMENT_SHADER_BIT, program);
5198     GLenum glError = glGetError();
5199     glDeleteProgram(program);
5200     glDeleteProgramPipelines(CREAT_NUM_ONE, &pipeline);
5201     destroyGLES();
5202     return getError(env, glError);
5203 }
5204 
GLValidateProgram(napi_env env,napi_callback_info info)5205 static napi_value GLValidateProgram(napi_env env, napi_callback_info info)
5206 {
5207     initGLES();
5208     GLuint programObject = initProgram();
5209     glValidateProgram(programObject);
5210     GLenum glError = glGetError();
5211     deleteProgram();
5212     glDeleteProgram(programObject);
5213     destroyGLES();
5214     return getError(env, glError);
5215 }
5216 
GLValidateProgramPipeline(napi_env env,napi_callback_info info)5217 static napi_value GLValidateProgramPipeline(napi_env env, napi_callback_info info)
5218 {
5219     initGLES();
5220     GLuint pipeline = INT_INIT_VAL;
5221     glGenProgramPipelines(PIPELINES_NUM_ONE, &pipeline);
5222     glBindProgramPipeline(pipeline);
5223     glValidateProgramPipeline(pipeline);
5224     GLenum glError = glGetError();
5225     glDeleteProgramPipelines(CREAT_NUM_ONE, &pipeline);
5226     return getError(env, glError);
5227 }
5228 
GLVertexAttrib1f(napi_env env,napi_callback_info info)5229 static napi_value GLVertexAttrib1f(napi_env env, napi_callback_info info)
5230 {
5231     initGLES();
5232     GLuint programObject = initProgram();
5233     glUseProgram(programObject);
5234     GLint attribLocation = glGetAttribLocation(programObject, "vPosition");
5235     glVertexAttrib1f(attribLocation, CLEAR_10);
5236     GLenum glError = glGetError();
5237     deleteProgram();
5238     glDeleteProgram(programObject);
5239     destroyGLES();
5240     return getError(env, glError);
5241 }
5242 
GLVertexAttrib1fv(napi_env env,napi_callback_info info)5243 static napi_value GLVertexAttrib1fv(napi_env env, napi_callback_info info)
5244 {
5245     initGLES();
5246     GLuint programObject = initProgram();
5247     glUseProgram(programObject);
5248     GLint attribLocation = glGetAttribLocation(programObject, "vPosition");
5249     GLfloat value[ARRAY_INDEX_ONE] = {CLEAR_10};
5250     glVertexAttrib1fv(attribLocation, value);
5251     GLenum glError = glGetError();
5252     deleteProgram();
5253     glDeleteProgram(programObject);
5254     destroyGLES();
5255     return getError(env, glError);
5256 }
5257 
GLVertexAttrib2f(napi_env env,napi_callback_info info)5258 static napi_value GLVertexAttrib2f(napi_env env, napi_callback_info info)
5259 {
5260     initGLES();
5261     GLuint programObject = initProgram();
5262     glUseProgram(programObject);
5263     GLint attribLocation = glGetAttribLocation(programObject, "vPosition");
5264     glVertexAttrib2f(attribLocation, CLEAR_10, CLEAR_10);
5265     GLenum glError = glGetError();
5266     deleteProgram();
5267     glDeleteProgram(programObject);
5268     destroyGLES();
5269     return getError(env, glError);
5270 }
5271 
GLVertexAttrib2fv(napi_env env,napi_callback_info info)5272 static napi_value GLVertexAttrib2fv(napi_env env, napi_callback_info info)
5273 {
5274     initGLES();
5275     GLuint programObject = initProgram();
5276     glUseProgram(programObject);
5277     GLint attribLocation = glGetAttribLocation(programObject, "vPosition");
5278     GLfloat value[ARRAY_INDEX_TWO] = {CLEAR_10, CLEAR_10};
5279     glVertexAttrib2fv(attribLocation, value);
5280     GLenum glError = glGetError();
5281     deleteProgram();
5282     glDeleteProgram(programObject);
5283     destroyGLES();
5284     return getError(env, glError);
5285 }
5286 
GLVertexAttrib3f(napi_env env,napi_callback_info info)5287 static napi_value GLVertexAttrib3f(napi_env env, napi_callback_info info)
5288 {
5289     initGLES();
5290     GLuint programObject = initProgram();
5291     glUseProgram(programObject);
5292     GLint attribLocation = glGetAttribLocation(programObject, "vPosition");
5293     glVertexAttrib3f(attribLocation, CLEAR_10, CLEAR_10, CLEAR_10);
5294     GLenum glError = glGetError();
5295     deleteProgram();
5296     glDeleteProgram(programObject);
5297     destroyGLES();
5298     return getError(env, glError);
5299 }
5300 
GLVertexAttrib3fv(napi_env env,napi_callback_info info)5301 static napi_value GLVertexAttrib3fv(napi_env env, napi_callback_info info)
5302 {
5303     initGLES();
5304     GLuint programObject = initProgram();
5305     glUseProgram(programObject);
5306     GLint attribLocation = glGetAttribLocation(programObject, "vPosition");
5307     GLfloat value[ARRAY_INDEX_THREE] = {CLEAR_10, CLEAR_10, CLEAR_10};
5308     glVertexAttrib3fv(attribLocation, value);
5309     GLenum glError = glGetError();
5310     deleteProgram();
5311     glDeleteProgram(programObject);
5312     destroyGLES();
5313     return getError(env, glError);
5314 }
5315 
GLVertexAttrib4f(napi_env env,napi_callback_info info)5316 static napi_value GLVertexAttrib4f(napi_env env, napi_callback_info info)
5317 {
5318     initGLES();
5319     GLuint programObject = initProgram();
5320     glUseProgram(programObject);
5321     GLint attribLocation = glGetAttribLocation(programObject, "vPosition");
5322     glVertexAttrib4f(attribLocation, CLEAR_10, CLEAR_10, CLEAR_10, CLEAR_10);
5323     GLenum glError = glGetError();
5324     deleteProgram();
5325     glDeleteProgram(programObject);
5326     destroyGLES();
5327     return getError(env, glError);
5328 }
5329 
GLVertexAttrib4fv(napi_env env,napi_callback_info info)5330 static napi_value GLVertexAttrib4fv(napi_env env, napi_callback_info info)
5331 {
5332     initGLES();
5333     GLuint programObject = initProgram();
5334     glUseProgram(programObject);
5335     GLint attribLocation = glGetAttribLocation(programObject, "vPosition");
5336     GLfloat value[ARRAY_INDEX_FORE] = {CLEAR_10, CLEAR_10, CLEAR_10, CLEAR_10};
5337     glVertexAttrib4fv(attribLocation, value);
5338     GLenum glError = glGetError();
5339     deleteProgram();
5340     glDeleteProgram(programObject);
5341     destroyGLES();
5342     return getError(env, glError);
5343 }
5344 
GLVertexAttribBinding(napi_env env,napi_callback_info info)5345 static napi_value GLVertexAttribBinding(napi_env env, napi_callback_info info)
5346 {
5347     initGLES();
5348     GLuint vao = INT_INIT_VAL;
5349     GLuint vbo = INT_INIT_VAL;
5350     glGenVertexArrays(CREAT_NUM_ONE, &vao);
5351     glBindVertexArray(vao);
5352     glGenBuffers(CREAT_NUM_ONE, &vbo);
5353     glBindBuffer(GL_ARRAY_BUFFER, vbo);
5354     GLfloat vertices[] = {CLEAR_10, CLEAR_10, CLEAR_10, CLEAR_10};
5355     glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
5356     glEnableVertexAttribArray(ARRAY_INDEX_ZERO);
5357     glVertexAttribFormat(ARRAY_INDEX_ZERO, ARRAY_INDEX_THREE, GL_FLOAT, GL_FALSE, ARRAY_INDEX_ZERO);
5358     glVertexAttribBinding(ARRAY_INDEX_ZERO, ARRAY_INDEX_ZERO);
5359     GLenum glError = glGetError();
5360     glDeleteBuffers(CREAT_NUM_ONE, &vbo);
5361     glDeleteVertexArrays(CREAT_NUM_ONE, &vao);
5362     destroyGLES();
5363     return getError(env, glError);
5364 }
5365 
GLVertexAttribDivisor(napi_env env,napi_callback_info info)5366 static napi_value GLVertexAttribDivisor(napi_env env, napi_callback_info info)
5367 {
5368     initGLES();
5369     GLuint vao = INT_INIT_VAL;
5370     GLuint vbo = INT_INIT_VAL;
5371     glGenVertexArrays(CREAT_NUM_ONE, &vao);
5372     glBindVertexArray(vao);
5373     glGenBuffers(CREAT_NUM_ONE, &vbo);
5374     glBindBuffer(GL_ARRAY_BUFFER, vbo);
5375     GLfloat vertices[] = {CLEAR_10, CLEAR_10, CLEAR_10, CLEAR_10};
5376     glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
5377     glEnableVertexAttribArray(ARRAY_INDEX_ZERO);
5378     glVertexAttribPointer(INT_INIT_VAL, ARRAY_INDEX_THREE, GL_FLOAT, GL_FALSE, ARRAY_INDEX_THREE * sizeof(GLfloat),
5379                           nullptr);
5380     glVertexAttribDivisor(INT_INIT_VAL, CREAT_NUM_ONE);
5381     GLenum glError = glGetError();
5382     glDeleteBuffers(CREAT_NUM_ONE, &vbo);
5383     glDeleteVertexArrays(CREAT_NUM_ONE, &vao);
5384     destroyGLES();
5385     return getError(env, glError);
5386 }
5387 
GLVertexAttribFormat(napi_env env,napi_callback_info info)5388 static napi_value GLVertexAttribFormat(napi_env env, napi_callback_info info)
5389 {
5390     initGLES();
5391     GLuint vao = INT_INIT_VAL;
5392     GLuint vbo = INT_INIT_VAL;
5393     glGenVertexArrays(CREAT_NUM_ONE, &vao);
5394     glBindVertexArray(vao);
5395     glGenBuffers(CREAT_NUM_ONE, &vbo);
5396     glBindBuffer(GL_ARRAY_BUFFER, vbo);
5397     GLfloat vertices[] = {CLEAR_10, CLEAR_10, CLEAR_10, CLEAR_10};
5398     glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
5399     glEnableVertexAttribArray(ARRAY_INDEX_ZERO);
5400     glVertexAttribFormat(ARRAY_INDEX_ZERO, ARRAY_INDEX_THREE, GL_FLOAT, GL_FALSE, ARRAY_INDEX_ZERO);
5401     GLenum glError = glGetError();
5402     glDeleteBuffers(CREAT_NUM_ONE, &vbo);
5403     glDeleteVertexArrays(CREAT_NUM_ONE, &vao);
5404     destroyGLES();
5405     return getError(env, glError);
5406 }
5407 
GLVertexAttribI4i(napi_env env,napi_callback_info info)5408 static napi_value GLVertexAttribI4i(napi_env env, napi_callback_info info)
5409 {
5410     initGLES();
5411     GLuint programObject = initProgram();
5412     glUseProgram(programObject);
5413     GLint attribLocation = glGetAttribLocation(programObject, "vPosition");
5414     glVertexAttribI4i(attribLocation, INT_INIT_VAL, INT_INIT_VAL, INT_INIT_VAL, INT_INIT_VAL);
5415     GLenum glError = glGetError();
5416     deleteProgram();
5417     glDeleteProgram(programObject);
5418     destroyGLES();
5419     return getError(env, glError);
5420 }
5421 
GLVertexAttribI4iv(napi_env env,napi_callback_info info)5422 static napi_value GLVertexAttribI4iv(napi_env env, napi_callback_info info)
5423 {
5424     initGLES();
5425     GLuint programObject = initProgram();
5426     glUseProgram(programObject);
5427     GLint attribLocation = glGetAttribLocation(programObject, "vPosition");
5428     GLint value[ARRAY_INDEX_FORE] = {INT_INIT_VAL, INT_INIT_VAL, INT_INIT_VAL, INT_INIT_VAL};
5429     glVertexAttribI4iv(attribLocation, value);
5430     GLenum glError = glGetError();
5431     deleteProgram();
5432     glDeleteProgram(programObject);
5433     destroyGLES();
5434     return getError(env, glError);
5435 }
5436 
GLVertexAttribI4ui(napi_env env,napi_callback_info info)5437 static napi_value GLVertexAttribI4ui(napi_env env, napi_callback_info info)
5438 {
5439     initGLES();
5440     GLuint programObject = initProgram();
5441     glUseProgram(programObject);
5442     GLint attribLocation = glGetAttribLocation(programObject, "vPosition");
5443     glVertexAttribI4ui(attribLocation, INT_INIT_VAL, INT_INIT_VAL, INT_INIT_VAL, INT_INIT_VAL);
5444     GLenum glError = glGetError();
5445     deleteProgram();
5446     glDeleteProgram(programObject);
5447     destroyGLES();
5448     return getError(env, glError);
5449 }
5450 
GLVertexAttribI4uiv(napi_env env,napi_callback_info info)5451 static napi_value GLVertexAttribI4uiv(napi_env env, napi_callback_info info)
5452 {
5453     initGLES();
5454     GLuint programObject = initProgram();
5455     glUseProgram(programObject);
5456     GLint attribLocation = glGetAttribLocation(programObject, "vPosition");
5457     GLuint value[ARRAY_INDEX_FORE] = {INT_INIT_VAL, INT_INIT_VAL, INT_INIT_VAL, INT_INIT_VAL};
5458     glVertexAttribI4uiv(attribLocation, value);
5459     GLenum glError = glGetError();
5460     deleteProgram();
5461     glDeleteProgram(programObject);
5462     destroyGLES();
5463     return getError(env, glError);
5464 }
5465 
GLVertexAttribIFormat(napi_env env,napi_callback_info info)5466 static napi_value GLVertexAttribIFormat(napi_env env, napi_callback_info info)
5467 {
5468     initGLES();
5469     GLuint vao = INT_INIT_VAL;
5470     GLuint vbo = INT_INIT_VAL;
5471     glGenVertexArrays(CREAT_NUM_ONE, &vao);
5472     glBindVertexArray(vao);
5473     glGenBuffers(CREAT_NUM_ONE, &vbo);
5474     glBindBuffer(GL_ARRAY_BUFFER, vbo);
5475     GLfloat vertices[] = {CLEAR_10, CLEAR_10, CLEAR_10, CLEAR_10};
5476     glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
5477     glEnableVertexAttribArray(ARRAY_INDEX_ZERO);
5478     glVertexAttribIFormat(INT_INIT_VAL, ARRAY_INDEX_FORE, GL_INT, INT_INIT_VAL);
5479     GLenum glError = glGetError();
5480     glDeleteBuffers(CREAT_NUM_ONE, &vbo);
5481     glDeleteVertexArrays(CREAT_NUM_ONE, &vao);
5482     destroyGLES();
5483     return getError(env, glError);
5484 }
5485 
GLVertexAttribIPointer(napi_env env,napi_callback_info info)5486 static napi_value GLVertexAttribIPointer(napi_env env, napi_callback_info info)
5487 {
5488     initGLES();
5489     GLint vertices[] = {INT_INIT_VAL, INT_INIT_VAL, INT_INIT_VAL};
5490     GLuint VAO = INT_INIT_VAL;
5491     GLuint VBO = INT_INIT_VAL;
5492     glGenVertexArrays(CREAT_NUM_ONE, &VAO);
5493     glBindVertexArray(VAO);
5494     glGenBuffers(CREAT_NUM_ONE, &VBO);
5495     glBindBuffer(GL_ARRAY_BUFFER, VBO);
5496     glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
5497     glVertexAttribIPointer(INT_INIT_VAL, MATRIX_3, GL_INT, MATRIX_3 * sizeof(GLint), nullptr);
5498     GLenum glError = glGetError();
5499     glDeleteBuffers(CREAT_NUM_ONE, &VBO);
5500     glDeleteVertexArrays(CREAT_NUM_ONE, &VAO);
5501     destroyGLES();
5502     return getError(env, glError);
5503 }
5504 
GLVertexAttribPointer(napi_env env,napi_callback_info info)5505 static napi_value GLVertexAttribPointer(napi_env env, napi_callback_info info)
5506 {
5507     initGLES();
5508     GLfloat vertices[] = {CLEAR_00, 0.5f, CLEAR_00, -0.5f, -0.5f, CLEAR_00, 0.5f, -0.5f, CLEAR_00};
5509     GLuint VAO = INT_INIT_VAL;
5510     GLuint VBO = INT_INIT_VAL;
5511     glGenVertexArrays(CREAT_NUM_ONE, &VAO);
5512     glBindVertexArray(VAO);
5513     glGenBuffers(CREAT_NUM_ONE, &VBO);
5514     glBindBuffer(GL_ARRAY_BUFFER, VBO);
5515     glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
5516     glVertexAttribPointer(INT_INIT_VAL, ATTRIB_SIZE, GL_FLOAT, GL_FALSE, INT_INIT_VAL, INT_INIT_VAL);
5517     GLenum glError = glGetError();
5518     glDeleteBuffers(CREAT_NUM_ONE, &VBO);
5519     glDeleteVertexArrays(CREAT_NUM_ONE, &VAO);
5520     destroyGLES();
5521     return getError(env, glError);
5522 }
5523 
GLVertexBindingDivisor(napi_env env,napi_callback_info info)5524 static napi_value GLVertexBindingDivisor(napi_env env, napi_callback_info info)
5525 {
5526     initGLES();
5527     GLfloat vertices[] = {CLEAR_00, 0.5f, CLEAR_00, -0.5f, -0.5f, CLEAR_00, 0.5f, -0.5f, CLEAR_00};
5528     GLuint VAO = INT_INIT_VAL;
5529     GLuint VBO = INT_INIT_VAL;
5530     glGenVertexArrays(CREAT_NUM_ONE, &VAO);
5531     glBindVertexArray(VAO);
5532     glGenBuffers(CREAT_NUM_ONE, &VBO);
5533     glBindBuffer(GL_ARRAY_BUFFER, VBO);
5534     glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
5535     glVertexAttribPointer(INT_INIT_VAL, ATTRIB_SIZE, GL_FLOAT, GL_FALSE, INT_INIT_VAL, INT_INIT_VAL);
5536     glVertexBindingDivisor(INT_INIT_VAL, CREAT_NUM_ONE);
5537     GLenum glError = glGetError();
5538     glDeleteBuffers(CREAT_NUM_ONE, &VBO);
5539     glDeleteVertexArrays(CREAT_NUM_ONE, &VAO);
5540     destroyGLES();
5541     return getError(env, glError);
5542 }
5543 
GLViewport(napi_env env,napi_callback_info info)5544 static napi_value GLViewport(napi_env env, napi_callback_info info)
5545 {
5546     initGLES();
5547     glViewport(IMAGE_WIDTH, IMAGE_HEIGHT, IMAGE_WIDTH, IMAGE_HEIGHT);
5548     GLenum glError = glGetError();
5549     destroyGLES();
5550     return getError(env, glError);
5551 }
5552 
GLWaitSync(napi_env env,napi_callback_info info)5553 static napi_value GLWaitSync(napi_env env, napi_callback_info info)
5554 {
5555     initGLES();
5556     GLsync syncObject = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, INT_INIT_VAL);
5557     glWaitSync(syncObject, INT_INIT_VAL, GL_TIMEOUT_IGNORED);
5558     GLenum glError = glGetError();
5559     glDeleteSync(syncObject);
5560     destroyGLES();
5561     return getError(env, glError);
5562 }
5563 
GLGetProgramPipelineInfoLog(napi_env env,napi_callback_info info)5564 static napi_value GLGetProgramPipelineInfoLog(napi_env env, napi_callback_info info)
5565 {
5566     initGLES();
5567     GLuint pipeline = INT_INIT_VAL;
5568     glGenProgramPipelines(PIPELINES_NUM_ONE, &pipeline);
5569     glBindProgramPipeline(pipeline);
5570     GLuint program = glCreateShaderProgramv(GL_FRAGMENT_SHADER, CREAT_NUM_ONE, &fragmentShaderSource);
5571     glUseProgramStages(pipeline, GL_FRAGMENT_SHADER_BIT, program);
5572     GLchar log[256];
5573     GLsizei length;
5574     glGetProgramPipelineInfoLog(pipeline, GL_BUF_SIZE, &length, log);
5575     GLenum glError = glGetError();
5576     glDeleteProgramPipelines(CREAT_NUM_ONE, &pipeline);
5577     glDeleteProgram(program);
5578     destroyGLES();
5579     return getError(env, glError);
5580 }
5581 
GLGetActiveUniform(napi_env env,napi_callback_info info)5582 static napi_value GLGetActiveUniform(napi_env env, napi_callback_info info)
5583 {
5584     initGLES();
5585     GLenum glError = GL_NO_ERROR;
5586     GLuint program = initProgram(vertexSource, fragmentSource);
5587     GLint activeUniformCount;
5588     glGetProgramiv(program, GL_ACTIVE_UNIFORM_MAX_LENGTH, &activeUniformCount);
5589     GLchar uniformName[SUB_DATA_SIZE];
5590     GLsizei length;
5591     GLint size;
5592     GLenum type;
5593     if (activeUniformCount > 0) {
5594         glGetActiveUniform(program, ARRAY_INDEX_ZERO, SUB_DATA_SIZE, &length, &size, &type, uniformName);
5595         glError = glGetError();
5596     }
5597     deleteProgram();
5598     glDeleteProgram(program);
5599     destroyGLES();
5600     return getError(env, glError);
5601 }
5602 
GLGetActiveUniformBlockiv(napi_env env,napi_callback_info info)5603 static napi_value GLGetActiveUniformBlockiv(napi_env env, napi_callback_info info)
5604 {
5605     initGLES();
5606     GLuint program = initProgram(vertexShaderSource, fragmentShaderSource);
5607     GLuint blockIndex = glGetUniformBlockIndex(program, "MatrixBlock");
5608     GLint param;
5609     glGetActiveUniformBlockiv(program, blockIndex, GL_UNIFORM_BLOCK_NAME_LENGTH, &param);
5610     GLenum glError = glGetError();
5611     deleteProgram();
5612     glDeleteProgram(program);
5613     destroyGLES();
5614     return getError(env, glError);
5615 }
5616 
GLGetActiveUniformBlockName(napi_env env,napi_callback_info info)5617 static napi_value GLGetActiveUniformBlockName(napi_env env, napi_callback_info info)
5618 {
5619     initGLES();
5620     GLuint program = initProgram(vertexShaderSource, fragmentShaderSource);
5621     GLuint blockIndex = glGetUniformBlockIndex(program, "MatrixBlock");
5622     GLint nameLen;
5623     glGetActiveUniformBlockiv(program, blockIndex, GL_UNIFORM_BLOCK_NAME_LENGTH, &nameLen);
5624     GLsizei length;
5625     GLchar blockName[nameLen];
5626     glGetActiveUniformBlockName(program, blockIndex, nameLen, &length, blockName);
5627     GLenum glError = glGetError();
5628     deleteProgram();
5629     glDeleteProgram(program);
5630     destroyGLES();
5631     return getError(env, glError);
5632 }
5633 
GLGetActiveUniformsiv(napi_env env,napi_callback_info info)5634 static napi_value GLGetActiveUniformsiv(napi_env env, napi_callback_info info)
5635 {
5636     initGLES();
5637     GLuint program = initProgram(vertexShaderSource, fragmentShaderSource);
5638     GLuint blockIndex = glGetUniformBlockIndex(program, "MatrixBlock");
5639     GLint params;
5640     glGetActiveUniformsiv(program, CREAT_NUM_ONE, &blockIndex, GL_UNIFORM_TYPE, &params);
5641     GLenum glError = glGetError();
5642     deleteProgram();
5643     glDeleteProgram(program);
5644     destroyGLES();
5645     return getError(env, glError);
5646 }
5647 
GLGetnUniformfv(napi_env env,napi_callback_info info)5648 static napi_value GLGetnUniformfv(napi_env env, napi_callback_info info)
5649 {
5650     initGLES();
5651     GLuint program = initProgram(vertexSource, fragmentSource);
5652     GLint location = glGetUniformLocation(program, "color");
5653     GLfloat param;
5654     glGetnUniformfv(program, location, sizeof(GLfloat), &param);
5655     GLenum glError = glGetError();
5656     deleteProgram();
5657     glDeleteProgram(program);
5658     destroyGLES();
5659     return getError(env, glError);
5660 }
GLGetnUniformiv(napi_env env,napi_callback_info info)5661 static napi_value GLGetnUniformiv(napi_env env, napi_callback_info info)
5662 {
5663     initGLES();
5664     GLuint program = initProgram(vertexSource, fragmentSource);
5665     GLint location = glGetUniformLocation(program, "color");
5666     GLint param;
5667     glGetnUniformiv(program, location, sizeof(GLint), &param);
5668     GLenum glError = glGetError();
5669     deleteProgram();
5670     glDeleteProgram(program);
5671     destroyGLES();
5672     return getError(env, glError);
5673 }
GLGetnUniformuiv(napi_env env,napi_callback_info info)5674 static napi_value GLGetnUniformuiv(napi_env env, napi_callback_info info)
5675 {
5676     initGLES();
5677     GLuint program = initProgram(vertexSource, fragmentSource);
5678     GLint location = glGetUniformLocation(program, "color");
5679     GLuint param;
5680     glGetnUniformuiv(program, location, sizeof(GLuint), &param);
5681     GLenum glError = glGetError();
5682     deleteProgram();
5683     glDeleteProgram(program);
5684     destroyGLES();
5685     return getError(env, glError);
5686 }
5687 
GLActiveShaderProgramAbnormal(napi_env env,napi_callback_info info)5688 static napi_value GLActiveShaderProgramAbnormal(napi_env env, napi_callback_info info)
5689 {
5690     (void)info;
5691     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
5692     initGLES(&eglWindow);
5693     glActiveShaderProgram(GL_ZERO, GL_ZERO);
5694     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glActiveShaderProgram error");
5695     destroyGLES(&eglWindow);
5696     napi_value result = nullptr;
5697     napi_create_int32(env, FAILED, &result);
5698     return result;
5699 }
5700 
GLActiveTextureAbnormal(napi_env env,napi_callback_info info)5701 static napi_value GLActiveTextureAbnormal(napi_env env, napi_callback_info info)
5702 {
5703     (void)info;
5704     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
5705     initGLES(&eglWindow);
5706     glActiveTexture(GL_ZERO);
5707     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glActiveTexture error");
5708     destroyGLES(&eglWindow);
5709     napi_value result = nullptr;
5710     napi_create_int32(env, FAILED, &result);
5711     return result;
5712 }
5713 
GLAttachShaderAbnormal(napi_env env,napi_callback_info info)5714 static napi_value GLAttachShaderAbnormal(napi_env env, napi_callback_info info)
5715 {
5716     (void)info;
5717     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
5718     initGLES(&eglWindow);
5719     glAttachShader(GL_ZERO, GL_ZERO);
5720     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glAttachShader error");
5721     destroyGLES(&eglWindow);
5722     napi_value result = nullptr;
5723     napi_create_int32(env, FAILED, &result);
5724     return result;
5725 }
5726 
GLBeginQueryAbnormal(napi_env env,napi_callback_info info)5727 static napi_value GLBeginQueryAbnormal(napi_env env, napi_callback_info info)
5728 {
5729     (void)info;
5730     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
5731     initGLES(&eglWindow);
5732     glBeginQuery(GL_ZERO, GL_ZERO);
5733     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glBeginQuery error");
5734     destroyGLES(&eglWindow);
5735     napi_value result = nullptr;
5736     napi_create_int32(env, FAILED, &result);
5737     return result;
5738 }
5739 
GLBeginTransformFeedbackAbnormal(napi_env env,napi_callback_info info)5740 static napi_value GLBeginTransformFeedbackAbnormal(napi_env env, napi_callback_info info)
5741 {
5742     (void)info;
5743     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
5744     initGLES(&eglWindow);
5745     glBeginTransformFeedback(GL_ZERO);
5746     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glBeginTransformFeedback error");
5747     destroyGLES(&eglWindow);
5748     napi_value result = nullptr;
5749     napi_create_int32(env, FAILED, &result);
5750     return result;
5751 }
5752 
GLBindAttribLocationAbnormal(napi_env env,napi_callback_info info)5753 static napi_value GLBindAttribLocationAbnormal(napi_env env, napi_callback_info info)
5754 {
5755     (void)info;
5756     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
5757     initGLES(&eglWindow);
5758     glBindAttribLocation(GL_ZERO, GL_ZERO, nullptr);
5759     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glBindAttribLocation error");
5760     destroyGLES(&eglWindow);
5761     napi_value result = nullptr;
5762     napi_create_int32(env, FAILED, &result);
5763     return result;
5764 }
5765 
GLBindBufferAbnormal(napi_env env,napi_callback_info info)5766 static napi_value GLBindBufferAbnormal(napi_env env, napi_callback_info info)
5767 {
5768     (void)info;
5769     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
5770     initGLES(&eglWindow);
5771     glBindBuffer(GL_ZERO, GL_ZERO);
5772     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glBindBuffer error");
5773     destroyGLES(&eglWindow);
5774     napi_value result = nullptr;
5775     napi_create_int32(env, FAILED, &result);
5776     return result;
5777 }
5778 
GLBindBufferBaseAbnormal(napi_env env,napi_callback_info info)5779 static napi_value GLBindBufferBaseAbnormal(napi_env env, napi_callback_info info)
5780 {
5781     (void)info;
5782     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
5783     initGLES(&eglWindow);
5784     glBindBufferBase(GL_ZERO, GL_ZERO, GL_ZERO);
5785     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glBindBufferBase error");
5786     destroyGLES(&eglWindow);
5787     napi_value result = nullptr;
5788     napi_create_int32(env, FAILED, &result);
5789     return result;
5790 }
5791 
GLBindBufferRangeAbnormal(napi_env env,napi_callback_info info)5792 static napi_value GLBindBufferRangeAbnormal(napi_env env, napi_callback_info info)
5793 {
5794     (void)info;
5795     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
5796     initGLES(&eglWindow);
5797     glBindBufferRange(GL_ZERO, GL_ZERO, GL_ZERO, GL_ONE, GL_ZERO);
5798     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glBindBufferRange error");
5799     destroyGLES(&eglWindow);
5800     napi_value result = nullptr;
5801     napi_create_int32(env, FAILED, &result);
5802     return result;
5803 }
5804 
GLBindFramebufferAbnormal(napi_env env,napi_callback_info info)5805 static napi_value GLBindFramebufferAbnormal(napi_env env, napi_callback_info info)
5806 {
5807     (void)info;
5808     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
5809     initGLES(&eglWindow);
5810     glBindFramebuffer(GL_ZERO, GL_ZERO);
5811     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glBindFramebuffer error");
5812     destroyGLES(&eglWindow);
5813     napi_value result = nullptr;
5814     napi_create_int32(env, FAILED, &result);
5815     return result;
5816 }
5817 
GLBindImageTextureAbnormal(napi_env env,napi_callback_info info)5818 static napi_value GLBindImageTextureAbnormal(napi_env env, napi_callback_info info)
5819 {
5820     (void)info;
5821     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
5822     initGLES(&eglWindow);
5823     glBindImageTexture(GL_ZERO, GL_ZERO, FAILED, GL_FALSE, GL_ZERO, GL_READ_ONLY, GL_RGBA8);
5824     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glBindImageTexture error");
5825     destroyGLES(&eglWindow);
5826     napi_value result = nullptr;
5827     napi_create_int32(env, FAILED, &result);
5828     return result;
5829 }
5830 
GLBindProgramPipelineAbnormal(napi_env env,napi_callback_info info)5831 static napi_value GLBindProgramPipelineAbnormal(napi_env env, napi_callback_info info)
5832 {
5833     (void)info;
5834     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
5835     initGLES(&eglWindow);
5836     glBindProgramPipeline(GL_MAX_TEST_NUM);
5837     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glBindProgramPipeline error");
5838     destroyGLES(&eglWindow);
5839     napi_value result = nullptr;
5840     napi_create_int32(env, FAILED, &result);
5841     return result;
5842 }
5843 
GLBindRenderbufferAbnormal(napi_env env,napi_callback_info info)5844 static napi_value GLBindRenderbufferAbnormal(napi_env env, napi_callback_info info)
5845 {
5846     (void)info;
5847     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
5848     initGLES(&eglWindow);
5849     glBindRenderbuffer(GL_ZERO, GL_ZERO);
5850     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glBindRenderbuffer error");
5851     destroyGLES(&eglWindow);
5852     napi_value result = nullptr;
5853     napi_create_int32(env, FAILED, &result);
5854     return result;
5855 }
5856 
GLBindSamplerAbnormal(napi_env env,napi_callback_info info)5857 static napi_value GLBindSamplerAbnormal(napi_env env, napi_callback_info info)
5858 {
5859     (void)info;
5860     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
5861     initGLES(&eglWindow);
5862     glBindSampler(GL_MAX_TEST_NUM, GL_ZERO);
5863     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glBindSampler error");
5864     destroyGLES(&eglWindow);
5865     napi_value result = nullptr;
5866     napi_create_int32(env, FAILED, &result);
5867     return result;
5868 }
5869 
GLBindTextureAbnormal(napi_env env,napi_callback_info info)5870 static napi_value GLBindTextureAbnormal(napi_env env, napi_callback_info info)
5871 {
5872     (void)info;
5873     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
5874     initGLES(&eglWindow);
5875     glBindTexture(GL_ZERO, GL_ZERO);
5876     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glBindTexture error");
5877     destroyGLES(&eglWindow);
5878     napi_value result = nullptr;
5879     napi_create_int32(env, FAILED, &result);
5880     return result;
5881 }
5882 
GLBindTransformFeedbackAbnormal(napi_env env,napi_callback_info info)5883 static napi_value GLBindTransformFeedbackAbnormal(napi_env env, napi_callback_info info)
5884 {
5885     (void)info;
5886     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
5887     initGLES(&eglWindow);
5888     glBindTransformFeedback(GL_ZERO, GL_ZERO);
5889     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glBindTransformFeedback error");
5890     destroyGLES(&eglWindow);
5891     napi_value result = nullptr;
5892     napi_create_int32(env, FAILED, &result);
5893     return result;
5894 }
5895 
GLBindVertexArrayAbnormal(napi_env env,napi_callback_info info)5896 static napi_value GLBindVertexArrayAbnormal(napi_env env, napi_callback_info info)
5897 {
5898     (void)info;
5899     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
5900     initGLES(&eglWindow);
5901     glBindVertexArray(GL_MAX_TEST_NUM);
5902     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glBindVertexArray error");
5903     destroyGLES(&eglWindow);
5904     napi_value result = nullptr;
5905     napi_create_int32(env, FAILED, &result);
5906     return result;
5907 }
5908 
GLBindVertexBufferAbnormal(napi_env env,napi_callback_info info)5909 static napi_value GLBindVertexBufferAbnormal(napi_env env, napi_callback_info info)
5910 {
5911     (void)info;
5912     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
5913     initGLES(&eglWindow);
5914     glBindVertexBuffer(GL_MAX_VERTEX_ATTRIB_BINDINGS, GL_ZERO, FAILED, FAILED);
5915     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glBindVertexBuffer error");
5916     destroyGLES(&eglWindow);
5917     napi_value result = nullptr;
5918     napi_create_int32(env, FAILED, &result);
5919     return result;
5920 }
5921 
GLBlendEquationAbnormal(napi_env env,napi_callback_info info)5922 static napi_value GLBlendEquationAbnormal(napi_env env, napi_callback_info info)
5923 {
5924     (void)info;
5925     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
5926     initGLES(&eglWindow);
5927     glBlendEquation(GL_ZERO);
5928     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glBlendEquation error");
5929     destroyGLES(&eglWindow);
5930     napi_value result = nullptr;
5931     napi_create_int32(env, FAILED, &result);
5932     return result;
5933 }
5934 
GLBlendEquationiAbnormal(napi_env env,napi_callback_info info)5935 static napi_value GLBlendEquationiAbnormal(napi_env env, napi_callback_info info)
5936 {
5937     (void)info;
5938     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
5939     initGLES(&eglWindow);
5940     glBlendEquationi(GL_ZERO, GL_ZERO);
5941     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glBlendEquationi error");
5942     destroyGLES(&eglWindow);
5943     napi_value result = nullptr;
5944     napi_create_int32(env, FAILED, &result);
5945     return result;
5946 }
5947 
GLBlendEquationSeparateAbnormal(napi_env env,napi_callback_info info)5948 static napi_value GLBlendEquationSeparateAbnormal(napi_env env, napi_callback_info info)
5949 {
5950     (void)info;
5951     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
5952     initGLES(&eglWindow);
5953     glBlendEquationSeparate(GL_ZERO, GL_ZERO);
5954     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glBlendEquationSeparate error");
5955     destroyGLES(&eglWindow);
5956     napi_value result = nullptr;
5957     napi_create_int32(env, FAILED, &result);
5958     return result;
5959 }
5960 
GLBlendEquationSeparateiAbnormal(napi_env env,napi_callback_info info)5961 static napi_value GLBlendEquationSeparateiAbnormal(napi_env env, napi_callback_info info)
5962 {
5963     (void)info;
5964     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
5965     initGLES(&eglWindow);
5966     glBlendEquationSeparatei(GL_ZERO, GL_ZERO, GL_ZERO);
5967     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glBlendEquationSeparatei error");
5968     destroyGLES(&eglWindow);
5969     napi_value result = nullptr;
5970     napi_create_int32(env, FAILED, &result);
5971     return result;
5972 }
5973 
GLBlendFuncAbnormal(napi_env env,napi_callback_info info)5974 static napi_value GLBlendFuncAbnormal(napi_env env, napi_callback_info info)
5975 {
5976     (void)info;
5977     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
5978     initGLES(&eglWindow);
5979     glBlendFunc(GL_MAX_TEST_NUM, GL_MAX_TEST_NUM);
5980     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glBlendFunc error");
5981     destroyGLES(&eglWindow);
5982     napi_value result = nullptr;
5983     napi_create_int32(env, FAILED, &result);
5984     return result;
5985 }
5986 
GLBlendFunciAbnormal(napi_env env,napi_callback_info info)5987 static napi_value GLBlendFunciAbnormal(napi_env env, napi_callback_info info)
5988 {
5989     (void)info;
5990     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
5991     initGLES(&eglWindow);
5992     glBlendFunci(GL_MAX_DRAW_BUFFERS, GL_MAX_TEST_NUM, GL_MAX_TEST_NUM);
5993     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glBlendFunci error");
5994     destroyGLES(&eglWindow);
5995     napi_value result = nullptr;
5996     napi_create_int32(env, FAILED, &result);
5997     return result;
5998 }
5999 
GLBlendFuncSeparateAbnormal(napi_env env,napi_callback_info info)6000 static napi_value GLBlendFuncSeparateAbnormal(napi_env env, napi_callback_info info)
6001 {
6002     (void)info;
6003     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6004     initGLES(&eglWindow);
6005     glBlendFuncSeparate(GL_CULL_FACE, GL_CULL_FACE, GL_CULL_FACE, GL_CULL_FACE);
6006     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glBlendFuncSeparate error");
6007     destroyGLES(&eglWindow);
6008     napi_value result = nullptr;
6009     napi_create_int32(env, FAILED, &result);
6010     return result;
6011 }
6012 
GLBlendFuncSeparateiAbnormal(napi_env env,napi_callback_info info)6013 static napi_value GLBlendFuncSeparateiAbnormal(napi_env env, napi_callback_info info)
6014 {
6015     (void)info;
6016     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6017     initGLES(&eglWindow);
6018     glBlendFuncSeparatei(GL_MAX_DRAW_BUFFERS, GL_CULL_FACE, GL_CULL_FACE, GL_CULL_FACE, GL_CULL_FACE);
6019     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glBlendFuncSeparatei error");
6020     destroyGLES(&eglWindow);
6021     napi_value result = nullptr;
6022     napi_create_int32(env, FAILED, &result);
6023     return result;
6024 }
6025 
GLBlitFramebufferAbnormal(napi_env env,napi_callback_info info)6026 static napi_value GLBlitFramebufferAbnormal(napi_env env, napi_callback_info info)
6027 {
6028     (void)info;
6029     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6030     initGLES(&eglWindow);
6031     glBlitFramebuffer(GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO);
6032     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glBlitFramebuffer error");
6033     destroyGLES(&eglWindow);
6034     napi_value result = nullptr;
6035     napi_create_int32(env, FAILED, &result);
6036     return result;
6037 }
6038 
GLBufferDataAbnormal(napi_env env,napi_callback_info info)6039 static napi_value GLBufferDataAbnormal(napi_env env, napi_callback_info info)
6040 {
6041     (void)info;
6042     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6043     initGLES(&eglWindow);
6044     glBufferData(GL_ARRAY_BUFFER, FAILED, nullptr, GL_STREAM_DRAW);
6045     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glBufferData error");
6046     destroyGLES(&eglWindow);
6047     napi_value result = nullptr;
6048     napi_create_int32(env, FAILED, &result);
6049     return result;
6050 }
6051 
GLBufferSubDataAbnormal(napi_env env,napi_callback_info info)6052 static napi_value GLBufferSubDataAbnormal(napi_env env, napi_callback_info info)
6053 {
6054     (void)info;
6055     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6056     initGLES(&eglWindow);
6057     glBufferSubData(GL_ZERO, FAILED, FAILED, nullptr);
6058     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glBufferSubData error");
6059     destroyGLES(&eglWindow);
6060     napi_value result = nullptr;
6061     napi_create_int32(env, FAILED, &result);
6062     return result;
6063 }
6064 
GLCheckFramebufferStatusAbnormal(napi_env env,napi_callback_info info)6065 static napi_value GLCheckFramebufferStatusAbnormal(napi_env env, napi_callback_info info)
6066 {
6067     (void)info;
6068     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6069     initGLES(&eglWindow);
6070     glCheckFramebufferStatus(GL_ZERO);
6071     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glCheckFramebufferStatus error");
6072     destroyGLES(&eglWindow);
6073     napi_value result = nullptr;
6074     napi_create_int32(env, FAILED, &result);
6075     return result;
6076 }
6077 
GLClearAbnormal(napi_env env,napi_callback_info info)6078 static napi_value GLClearAbnormal(napi_env env, napi_callback_info info)
6079 {
6080     (void)info;
6081     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6082     initGLES(&eglWindow);
6083     glClear(GL_COLOR_BUFFER_BIT | GL_ONE);
6084     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glClear error");
6085     destroyGLES(&eglWindow);
6086     napi_value result = nullptr;
6087     napi_create_int32(env, FAILED, &result);
6088     return result;
6089 }
6090 
GLClearBufferfiAbnormal(napi_env env,napi_callback_info info)6091 static napi_value GLClearBufferfiAbnormal(napi_env env, napi_callback_info info)
6092 {
6093     (void)info;
6094     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6095     initGLES(&eglWindow);
6096     glClearBufferfi(GL_ZERO, GL_ZERO, CLEAR_00, GL_ZERO);
6097     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glClearBufferfi error");
6098     destroyGLES(&eglWindow);
6099     napi_value result = nullptr;
6100     napi_create_int32(env, FAILED, &result);
6101     return result;
6102 }
6103 
GLClearBufferfvAbnormal(napi_env env,napi_callback_info info)6104 static napi_value GLClearBufferfvAbnormal(napi_env env, napi_callback_info info)
6105 {
6106     (void)info;
6107     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6108     initGLES(&eglWindow);
6109     glClearBufferfv(GL_ZERO, GL_ZERO, nullptr);
6110     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "GlClearBufferfvAbnormal error");
6111     destroyGLES(&eglWindow);
6112     napi_value result = nullptr;
6113     napi_create_int32(env, FAILED, &result);
6114     return result;
6115 }
6116 
GLClearBufferivAbnormal(napi_env env,napi_callback_info info)6117 static napi_value GLClearBufferivAbnormal(napi_env env, napi_callback_info info)
6118 {
6119     (void)info;
6120     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6121     initGLES(&eglWindow);
6122     glClearBufferiv(GL_ZERO, GL_ZERO, nullptr);
6123     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glClearBufferiv error");
6124     destroyGLES(&eglWindow);
6125     napi_value result = nullptr;
6126     napi_create_int32(env, FAILED, &result);
6127     return result;
6128 }
6129 
GLClearBufferuivAbnormal(napi_env env,napi_callback_info info)6130 static napi_value GLClearBufferuivAbnormal(napi_env env, napi_callback_info info)
6131 {
6132     (void)info;
6133     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6134     initGLES(&eglWindow);
6135     glClearBufferuiv(GL_ZERO, GL_ZERO, nullptr);
6136     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glClearBufferuiv error");
6137     destroyGLES(&eglWindow);
6138     napi_value result = nullptr;
6139     napi_create_int32(env, FAILED, &result);
6140     return result;
6141 }
6142 
GLClientWaitSyncAbnormal(napi_env env,napi_callback_info info)6143 static napi_value GLClientWaitSyncAbnormal(napi_env env, napi_callback_info info)
6144 {
6145     (void)info;
6146     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6147     initGLES(&eglWindow);
6148     glClientWaitSync(reinterpret_cast<GLsync>(GL_MAX_TEST_NUM), GL_SYNC_FLUSH_COMMANDS_BIT, GL_ZERO);
6149     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glClientWaitSync error");
6150     destroyGLES(&eglWindow);
6151     napi_value result = nullptr;
6152     napi_create_int32(env, FAILED, &result);
6153     return result;
6154 }
6155 
GLColorMaskiAbnormal(napi_env env,napi_callback_info info)6156 static napi_value GLColorMaskiAbnormal(napi_env env, napi_callback_info info)
6157 {
6158     (void)info;
6159     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6160     initGLES(&eglWindow);
6161     glColorMaski(GL_MAX_DRAW_BUFFERS, GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
6162     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glColorMaski error");
6163     destroyGLES(&eglWindow);
6164     napi_value result = nullptr;
6165     napi_create_int32(env, FAILED, &result);
6166     return result;
6167 }
6168 
GLCopyBufferSubDataAbnormal(napi_env env,napi_callback_info info)6169 static napi_value GLCopyBufferSubDataAbnormal(napi_env env, napi_callback_info info)
6170 {
6171     (void)info;
6172     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6173     initGLES(&eglWindow);
6174     glCopyBufferSubData(GL_ZERO, GL_ZERO, FAILED, FAILED, FAILED);
6175     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glCopyBufferSubData error");
6176     destroyGLES(&eglWindow);
6177     napi_value result = nullptr;
6178     napi_create_int32(env, FAILED, &result);
6179     return result;
6180 }
6181 
GLCopyImageSubDataAbnormal(napi_env env,napi_callback_info info)6182 static napi_value GLCopyImageSubDataAbnormal(napi_env env, napi_callback_info info)
6183 {
6184     (void)info;
6185     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6186     initGLES(&eglWindow);
6187     glCopyImageSubData(GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO,
6188                        GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO);
6189     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glCopyImageSubData error");
6190     destroyGLES(&eglWindow);
6191     napi_value result = nullptr;
6192     napi_create_int32(env, FAILED, &result);
6193     return result;
6194 }
6195 
GLCopyTexImage2DAbnormal(napi_env env,napi_callback_info info)6196 static napi_value GLCopyTexImage2DAbnormal(napi_env env, napi_callback_info info)
6197 {
6198     (void)info;
6199     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6200     initGLES(&eglWindow);
6201     glCopyTexImage2D(GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO);
6202     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glCopyTexImage2D error");
6203     destroyGLES(&eglWindow);
6204     napi_value result = nullptr;
6205     napi_create_int32(env, FAILED, &result);
6206     return result;
6207 }
6208 
GLCopyTexSubImage2DAbnormal(napi_env env,napi_callback_info info)6209 static napi_value GLCopyTexSubImage2DAbnormal(napi_env env, napi_callback_info info)
6210 {
6211     (void)info;
6212     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6213     initGLES(&eglWindow);
6214     glCopyTexSubImage2D(GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO);
6215     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glCopyTexSubImage2D error");
6216     destroyGLES(&eglWindow);
6217     napi_value result = nullptr;
6218     napi_create_int32(env, FAILED, &result);
6219     return result;
6220 }
6221 
GLCreateShaderAbnormal(napi_env env,napi_callback_info info)6222 static napi_value GLCreateShaderAbnormal(napi_env env, napi_callback_info info)
6223 {
6224     (void)info;
6225     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6226     initGLES(&eglWindow);
6227     glCreateShader(GL_ZERO);
6228     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glCreateShader error");
6229     destroyGLES(&eglWindow);
6230     napi_value result = nullptr;
6231     napi_create_int32(env, FAILED, &result);
6232     return result;
6233 }
6234 
GLCreateShaderProgramvAbnormal(napi_env env,napi_callback_info info)6235 static napi_value GLCreateShaderProgramvAbnormal(napi_env env, napi_callback_info info)
6236 {
6237     (void)info;
6238     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6239     initGLES(&eglWindow);
6240     glCreateShaderProgramv(GL_ZERO, FAILED, nullptr);
6241     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glCreateShaderProgramv error");
6242     destroyGLES(&eglWindow);
6243     napi_value result = nullptr;
6244     napi_create_int32(env, FAILED, &result);
6245     return result;
6246 }
6247 
GLCullFaceAbnormal(napi_env env,napi_callback_info info)6248 static napi_value GLCullFaceAbnormal(napi_env env, napi_callback_info info)
6249 {
6250     (void)info;
6251     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6252     initGLES(&eglWindow);
6253     glCullFace(GL_ZERO);
6254     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glCullFace error");
6255     destroyGLES(&eglWindow);
6256     napi_value result = nullptr;
6257     napi_create_int32(env, FAILED, &result);
6258     return result;
6259 }
6260 
GLDebugMessageControlAbnormal(napi_env env,napi_callback_info info)6261 static napi_value GLDebugMessageControlAbnormal(napi_env env, napi_callback_info info)
6262 {
6263     (void)info;
6264     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6265     initGLES(&eglWindow);
6266     glDebugMessageControl(GL_ZERO, GL_ZERO, GL_ZERO, FAILED, nullptr, GL_TRUE);
6267     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glDebugMessageControl error");
6268     destroyGLES(&eglWindow);
6269     napi_value result = nullptr;
6270     napi_create_int32(env, FAILED, &result);
6271     return result;
6272 }
6273 
GLDeleteBuffersAbnormal(napi_env env,napi_callback_info info)6274 static napi_value GLDeleteBuffersAbnormal(napi_env env, napi_callback_info info)
6275 {
6276     (void)info;
6277     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6278     initGLES(&eglWindow);
6279     glDeleteBuffers(FAILED, nullptr);
6280     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glDeleteBuffers error");
6281     destroyGLES(&eglWindow);
6282     napi_value result = nullptr;
6283     napi_create_int32(env, FAILED, &result);
6284     return result;
6285 }
6286 
GLDeleteFramebuffersAbnormal(napi_env env,napi_callback_info info)6287 static napi_value GLDeleteFramebuffersAbnormal(napi_env env, napi_callback_info info)
6288 {
6289     (void)info;
6290     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6291     initGLES(&eglWindow);
6292     glDeleteFramebuffers(FAILED, nullptr);
6293     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glDeleteFramebuffers error");
6294     destroyGLES(&eglWindow);
6295     napi_value result = nullptr;
6296     napi_create_int32(env, FAILED, &result);
6297     return result;
6298 }
6299 
GLDeleteProgramAbnormal(napi_env env,napi_callback_info info)6300 static napi_value GLDeleteProgramAbnormal(napi_env env, napi_callback_info info)
6301 {
6302     (void)info;
6303     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6304     initGLES(&eglWindow);
6305     glDeleteProgram(GL_MAX_TEST_NUM);
6306     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glDeleteProgram error");
6307     destroyGLES(&eglWindow);
6308     napi_value result = nullptr;
6309     napi_create_int32(env, FAILED, &result);
6310     return result;
6311 }
6312 
GLDeleteProgramPipelinesAbnormal(napi_env env,napi_callback_info info)6313 static napi_value GLDeleteProgramPipelinesAbnormal(napi_env env, napi_callback_info info)
6314 {
6315     (void)info;
6316     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6317     initGLES(&eglWindow);
6318     glDeleteProgramPipelines(FAILED, nullptr);
6319     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glDeleteProgramPipelines error");
6320     destroyGLES(&eglWindow);
6321     napi_value result = nullptr;
6322     napi_create_int32(env, FAILED, &result);
6323     return result;
6324 }
6325 
GLDeleteQueriesAbnormal(napi_env env,napi_callback_info info)6326 static napi_value GLDeleteQueriesAbnormal(napi_env env, napi_callback_info info)
6327 {
6328     (void)info;
6329     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6330     initGLES(&eglWindow);
6331     glDeleteQueries(FAILED, nullptr);
6332     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glDeleteQueries error");
6333     destroyGLES(&eglWindow);
6334     napi_value result = nullptr;
6335     napi_create_int32(env, FAILED, &result);
6336     return result;
6337 }
6338 
GLDeleteRenderbuffersAbnormal(napi_env env,napi_callback_info info)6339 static napi_value GLDeleteRenderbuffersAbnormal(napi_env env, napi_callback_info info)
6340 {
6341     (void)info;
6342     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6343     initGLES(&eglWindow);
6344     glDeleteRenderbuffers(FAILED, nullptr);
6345     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glDeleteRenderbuffers error");
6346     destroyGLES(&eglWindow);
6347     napi_value result = nullptr;
6348     napi_create_int32(env, FAILED, &result);
6349     return result;
6350 }
6351 
GLDeleteSamplersAbnormal(napi_env env,napi_callback_info info)6352 static napi_value GLDeleteSamplersAbnormal(napi_env env, napi_callback_info info)
6353 {
6354     (void)info;
6355     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6356     initGLES(&eglWindow);
6357     glDeleteSamplers(FAILED, nullptr);
6358     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glDeleteSamplers error");
6359     destroyGLES(&eglWindow);
6360     napi_value result = nullptr;
6361     napi_create_int32(env, FAILED, &result);
6362     return result;
6363 }
6364 
GLDeleteShaderAbnormal(napi_env env,napi_callback_info info)6365 static napi_value GLDeleteShaderAbnormal(napi_env env, napi_callback_info info)
6366 {
6367     (void)info;
6368     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6369     initGLES(&eglWindow);
6370     glDeleteShader(GL_MAX_TEST_NUM);
6371     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glDeleteShader error");
6372     destroyGLES(&eglWindow);
6373     napi_value result = nullptr;
6374     napi_create_int32(env, FAILED, &result);
6375     return result;
6376 }
6377 
GLDeleteSyncAbnormal(napi_env env,napi_callback_info info)6378 static napi_value GLDeleteSyncAbnormal(napi_env env, napi_callback_info info)
6379 {
6380     (void)info;
6381     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6382     initGLES(&eglWindow);
6383     glDeleteSync(reinterpret_cast<GLsync>(GL_MAX_TEST_NUM));
6384     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glDeleteSync error");
6385     destroyGLES(&eglWindow);
6386     napi_value result = nullptr;
6387     napi_create_int32(env, FAILED, &result);
6388     return result;
6389 }
6390 
GLDeleteTexturesAbnormal(napi_env env,napi_callback_info info)6391 static napi_value GLDeleteTexturesAbnormal(napi_env env, napi_callback_info info)
6392 {
6393     (void)info;
6394     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6395     initGLES(&eglWindow);
6396     glDeleteTextures(FAILED, nullptr);
6397     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glDeleteTextures error");
6398     destroyGLES(&eglWindow);
6399     napi_value result = nullptr;
6400     napi_create_int32(env, FAILED, &result);
6401     return result;
6402 }
6403 
GLDeleteTransformFeedbacksAbnormal(napi_env env,napi_callback_info info)6404 static napi_value GLDeleteTransformFeedbacksAbnormal(napi_env env, napi_callback_info info)
6405 {
6406     (void)info;
6407     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6408     initGLES(&eglWindow);
6409     glDeleteTransformFeedbacks(FAILED, nullptr);
6410     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glDeleteTransformFeedbacks error");
6411     destroyGLES(&eglWindow);
6412     napi_value result = nullptr;
6413     napi_create_int32(env, FAILED, &result);
6414     return result;
6415 }
6416 
GLDeleteVertexArraysAbnormal(napi_env env,napi_callback_info info)6417 static napi_value GLDeleteVertexArraysAbnormal(napi_env env, napi_callback_info info)
6418 {
6419     (void)info;
6420     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6421     initGLES(&eglWindow);
6422     glDeleteVertexArrays(FAILED, nullptr);
6423     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glDeleteVertexArrays error");
6424     destroyGLES(&eglWindow);
6425     napi_value result = nullptr;
6426     napi_create_int32(env, FAILED, &result);
6427     return result;
6428 }
6429 
GLDepthFuncAbnormal(napi_env env,napi_callback_info info)6430 static napi_value GLDepthFuncAbnormal(napi_env env, napi_callback_info info)
6431 {
6432     (void)info;
6433     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6434     initGLES(&eglWindow);
6435     glDepthFunc(GL_ZERO);
6436     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glDepthFunc error");
6437     destroyGLES(&eglWindow);
6438     napi_value result = nullptr;
6439     napi_create_int32(env, FAILED, &result);
6440     return result;
6441 }
6442 
GLDetachShaderAbnormal(napi_env env,napi_callback_info info)6443 static napi_value GLDetachShaderAbnormal(napi_env env, napi_callback_info info)
6444 {
6445     (void)info;
6446     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6447     initGLES(&eglWindow);
6448     glDetachShader(GL_MAX_TEST_NUM, GL_MAX_TEST_NUM);
6449     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glDetachShader error");
6450     destroyGLES(&eglWindow);
6451     napi_value result = nullptr;
6452     napi_create_int32(env, FAILED, &result);
6453     return result;
6454 }
6455 
GLDisableAbnormal(napi_env env,napi_callback_info info)6456 static napi_value GLDisableAbnormal(napi_env env, napi_callback_info info)
6457 {
6458     (void)info;
6459     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6460     initGLES(&eglWindow);
6461     glDisable(GL_ZERO);
6462     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glDisable error");
6463     destroyGLES(&eglWindow);
6464     napi_value result = nullptr;
6465     napi_create_int32(env, FAILED, &result);
6466     return result;
6467 }
6468 
GLDisableiAbnormal(napi_env env,napi_callback_info info)6469 static napi_value GLDisableiAbnormal(napi_env env, napi_callback_info info)
6470 {
6471     (void)info;
6472     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6473     initGLES(&eglWindow);
6474     glDisablei(GL_ZERO, GL_ZERO);
6475     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glDisablei error");
6476     destroyGLES(&eglWindow);
6477     napi_value result = nullptr;
6478     napi_create_int32(env, FAILED, &result);
6479     return result;
6480 }
6481 
GLDisableVertexAttribArrayAbnormal(napi_env env,napi_callback_info info)6482 static napi_value GLDisableVertexAttribArrayAbnormal(napi_env env, napi_callback_info info)
6483 {
6484     (void)info;
6485     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6486     initGLES(&eglWindow);
6487     glDisableVertexAttribArray(GL_MAX_VERTEX_ATTRIBS);
6488     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glDisableVertexAttribArray error");
6489     destroyGLES(&eglWindow);
6490     napi_value result = nullptr;
6491     napi_create_int32(env, FAILED, &result);
6492     return result;
6493 }
6494 
GLDispatchComputeAbnormal(napi_env env,napi_callback_info info)6495 static napi_value GLDispatchComputeAbnormal(napi_env env, napi_callback_info info)
6496 {
6497     (void)info;
6498     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6499     initGLES(&eglWindow);
6500     glDispatchCompute(GL_MAX_TEST_NUM, GL_MAX_TEST_NUM, GL_MAX_TEST_NUM);
6501     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glDispatchCompute error");
6502     destroyGLES(&eglWindow);
6503     napi_value result = nullptr;
6504     napi_create_int32(env, FAILED, &result);
6505     return result;
6506 }
6507 
GLDispatchComputeIndirectAbnormal(napi_env env,napi_callback_info info)6508 static napi_value GLDispatchComputeIndirectAbnormal(napi_env env, napi_callback_info info)
6509 {
6510     (void)info;
6511     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6512     initGLES(&eglWindow);
6513     glDispatchComputeIndirect(FAILED);
6514     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glDispatchComputeIndirect error");
6515     destroyGLES(&eglWindow);
6516     napi_value result = nullptr;
6517     napi_create_int32(env, FAILED, &result);
6518     return result;
6519 }
6520 
GLDrawArraysAbnormal(napi_env env,napi_callback_info info)6521 static napi_value GLDrawArraysAbnormal(napi_env env, napi_callback_info info)
6522 {
6523     (void)info;
6524     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6525     initGLES(&eglWindow);
6526     glDrawArrays(GL_POINTS, GL_ZERO, FAILED);
6527     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glDrawArrays error");
6528     destroyGLES(&eglWindow);
6529     napi_value result = nullptr;
6530     napi_create_int32(env, FAILED, &result);
6531     return result;
6532 }
6533 
GLDrawArraysIndirectAbnormal(napi_env env,napi_callback_info info)6534 static napi_value GLDrawArraysIndirectAbnormal(napi_env env, napi_callback_info info)
6535 {
6536     (void)info;
6537     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6538     initGLES(&eglWindow);
6539     glDrawArraysIndirect(GL_ZERO, nullptr);
6540     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glDrawArraysIndirect error");
6541     destroyGLES(&eglWindow);
6542     napi_value result = nullptr;
6543     napi_create_int32(env, FAILED, &result);
6544     return result;
6545 }
6546 
GLDrawArraysInstancedAbnormal(napi_env env,napi_callback_info info)6547 static napi_value GLDrawArraysInstancedAbnormal(napi_env env, napi_callback_info info)
6548 {
6549     (void)info;
6550     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6551     initGLES(&eglWindow);
6552     glDrawArraysInstanced(GL_POINTS, GL_ZERO, FAILED, FAILED);
6553     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glDrawArraysInstanced error");
6554     destroyGLES(&eglWindow);
6555     napi_value result = nullptr;
6556     napi_create_int32(env, FAILED, &result);
6557     return result;
6558 }
6559 
GLDrawBuffersAbnormal(napi_env env,napi_callback_info info)6560 static napi_value GLDrawBuffersAbnormal(napi_env env, napi_callback_info info)
6561 {
6562     (void)info;
6563     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6564     initGLES(&eglWindow);
6565     glDrawBuffers(FAILED, nullptr);
6566     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glDrawBuffers error");
6567     destroyGLES(&eglWindow);
6568     napi_value result = nullptr;
6569     napi_create_int32(env, FAILED, &result);
6570     return result;
6571 }
6572 
GLFlushMappedBufferRangeAbnormal(napi_env env,napi_callback_info info)6573 static napi_value GLFlushMappedBufferRangeAbnormal(napi_env env, napi_callback_info info)
6574 {
6575     (void)info;
6576     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6577     initGLES(&eglWindow);
6578     glFlushMappedBufferRange(GL_ARRAY_BUFFER, FAILED, FAILED);
6579     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glFlushMappedBufferRange error");
6580     destroyGLES(&eglWindow);
6581     napi_value result = nullptr;
6582     napi_create_int32(env, FAILED, &result);
6583     return result;
6584 }
6585 
GLFramebufferParameteriAbnormal(napi_env env,napi_callback_info info)6586 static napi_value GLFramebufferParameteriAbnormal(napi_env env, napi_callback_info info)
6587 {
6588     (void)info;
6589     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6590     initGLES(&eglWindow);
6591     glFramebufferParameteri(GL_ZERO, GL_FRAMEBUFFER_DEFAULT_WIDTH, GL_ZERO);
6592     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glFramebufferParameteri error");
6593     destroyGLES(&eglWindow);
6594     napi_value result = nullptr;
6595     napi_create_int32(env, FAILED, &result);
6596     return result;
6597 }
6598 
GLFramebufferRenderbufferAbnormal(napi_env env,napi_callback_info info)6599 static napi_value GLFramebufferRenderbufferAbnormal(napi_env env, napi_callback_info info)
6600 {
6601     (void)info;
6602     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6603     initGLES(&eglWindow);
6604     glFramebufferRenderbuffer(GL_ZERO, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER, GL_ZERO);
6605     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glFramebufferRenderbuffer error");
6606     destroyGLES(&eglWindow);
6607     napi_value result = nullptr;
6608     napi_create_int32(env, FAILED, &result);
6609     return result;
6610 }
6611 
GLFramebufferTextureAbnormal(napi_env env,napi_callback_info info)6612 static napi_value GLFramebufferTextureAbnormal(napi_env env, napi_callback_info info)
6613 {
6614     (void)info;
6615     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6616     initGLES(&eglWindow);
6617     glFramebufferTexture(GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO);
6618     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glFramebufferTexture error");
6619     destroyGLES(&eglWindow);
6620     napi_value result = nullptr;
6621     napi_create_int32(env, FAILED, &result);
6622     return result;
6623 }
6624 
GLFramebufferTexture2DAbnormal(napi_env env,napi_callback_info info)6625 static napi_value GLFramebufferTexture2DAbnormal(napi_env env, napi_callback_info info)
6626 {
6627     (void)info;
6628     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6629     initGLES(&eglWindow);
6630     glFramebufferTexture2D(GL_ZERO, GL_ZERO, GL_TEXTURE_CUBE_MAP_POSITIVE_X, GL_ZERO, GL_ZERO);
6631     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glFramebufferTexture2D error");
6632     destroyGLES(&eglWindow);
6633     napi_value result = nullptr;
6634     napi_create_int32(env, FAILED, &result);
6635     return result;
6636 }
6637 
GLFramebufferTextureLayerAbnormal(napi_env env,napi_callback_info info)6638 static napi_value GLFramebufferTextureLayerAbnormal(napi_env env, napi_callback_info info)
6639 {
6640     (void)info;
6641     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6642     initGLES(&eglWindow);
6643     glFramebufferTextureLayer(GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO);
6644     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glFramebufferTextureLayer error");
6645     destroyGLES(&eglWindow);
6646     napi_value result = nullptr;
6647     napi_create_int32(env, FAILED, &result);
6648     return result;
6649 }
6650 
GLFrontFaceAbnormal(napi_env env,napi_callback_info info)6651 static napi_value GLFrontFaceAbnormal(napi_env env, napi_callback_info info)
6652 {
6653     (void)info;
6654     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6655     initGLES(&eglWindow);
6656     glFrontFace(GL_ZERO);
6657     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glFrontFace error");
6658     destroyGLES(&eglWindow);
6659     napi_value result = nullptr;
6660     napi_create_int32(env, FAILED, &result);
6661     return result;
6662 }
6663 
GLGenBuffersAbnormal(napi_env env,napi_callback_info info)6664 static napi_value GLGenBuffersAbnormal(napi_env env, napi_callback_info info)
6665 {
6666     (void)info;
6667     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6668     initGLES(&eglWindow);
6669     glGenBuffers(FAILED, nullptr);
6670     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGenBuffers error");
6671     destroyGLES(&eglWindow);
6672     napi_value result = nullptr;
6673     napi_create_int32(env, FAILED, &result);
6674     return result;
6675 }
6676 
GLGenerateMipmapAbnormal(napi_env env,napi_callback_info info)6677 static napi_value GLGenerateMipmapAbnormal(napi_env env, napi_callback_info info)
6678 {
6679     (void)info;
6680     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6681     initGLES(&eglWindow);
6682     glGenerateMipmap(GL_ZERO);
6683     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGenerateMipmap error");
6684     destroyGLES(&eglWindow);
6685     napi_value result = nullptr;
6686     napi_create_int32(env, FAILED, &result);
6687     return result;
6688 }
6689 
GLGenFramebuffersAbnormal(napi_env env,napi_callback_info info)6690 static napi_value GLGenFramebuffersAbnormal(napi_env env, napi_callback_info info)
6691 {
6692     (void)info;
6693     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6694     initGLES(&eglWindow);
6695     glGenFramebuffers(FAILED, nullptr);
6696     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGenFramebuffers error");
6697     destroyGLES(&eglWindow);
6698     napi_value result = nullptr;
6699     napi_create_int32(env, FAILED, &result);
6700     return result;
6701 }
6702 
GLGenProgramPipelinesAbnormal(napi_env env,napi_callback_info info)6703 static napi_value GLGenProgramPipelinesAbnormal(napi_env env, napi_callback_info info)
6704 {
6705     (void)info;
6706     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6707     initGLES(&eglWindow);
6708     glGenProgramPipelines(FAILED, nullptr);
6709     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGenProgramPipelines error");
6710     destroyGLES(&eglWindow);
6711     napi_value result = nullptr;
6712     napi_create_int32(env, FAILED, &result);
6713     return result;
6714 }
6715 
GLGenQueriesAbnormal(napi_env env,napi_callback_info info)6716 static napi_value GLGenQueriesAbnormal(napi_env env, napi_callback_info info)
6717 {
6718     (void)info;
6719     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6720     initGLES(&eglWindow);
6721     glGenQueries(FAILED, nullptr);
6722     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGenQueries error");
6723     destroyGLES(&eglWindow);
6724     napi_value result = nullptr;
6725     napi_create_int32(env, FAILED, &result);
6726     return result;
6727 }
6728 
GLGenRenderbuffersAbnormal(napi_env env,napi_callback_info info)6729 static napi_value GLGenRenderbuffersAbnormal(napi_env env, napi_callback_info info)
6730 {
6731     (void)info;
6732     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6733     initGLES(&eglWindow);
6734     glGenRenderbuffers(FAILED, nullptr);
6735     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGenRenderbuffers error");
6736     destroyGLES(&eglWindow);
6737     napi_value result = nullptr;
6738     napi_create_int32(env, FAILED, &result);
6739     return result;
6740 }
6741 
GLGenSamplersAbnormal(napi_env env,napi_callback_info info)6742 static napi_value GLGenSamplersAbnormal(napi_env env, napi_callback_info info)
6743 {
6744     (void)info;
6745     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6746     initGLES(&eglWindow);
6747     glGenSamplers(FAILED, nullptr);
6748     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGenSamplers error");
6749     destroyGLES(&eglWindow);
6750     napi_value result = nullptr;
6751     napi_create_int32(env, FAILED, &result);
6752     return result;
6753 }
6754 
GLGenTexturesAbnormal(napi_env env,napi_callback_info info)6755 static napi_value GLGenTexturesAbnormal(napi_env env, napi_callback_info info)
6756 {
6757     (void)info;
6758     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6759     initGLES(&eglWindow);
6760     glGenTextures(FAILED, nullptr);
6761     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGenTextures error");
6762     destroyGLES(&eglWindow);
6763     napi_value result = nullptr;
6764     napi_create_int32(env, FAILED, &result);
6765     return result;
6766 }
6767 
GLGenTransformFeedbacksAbnormal(napi_env env,napi_callback_info info)6768 static napi_value GLGenTransformFeedbacksAbnormal(napi_env env, napi_callback_info info)
6769 {
6770     (void)info;
6771     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6772     initGLES(&eglWindow);
6773     glGenTransformFeedbacks(FAILED, nullptr);
6774     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGenTransformFeedbacks error");
6775     destroyGLES(&eglWindow);
6776     napi_value result = nullptr;
6777     napi_create_int32(env, FAILED, &result);
6778     return result;
6779 }
6780 
GLGenVertexArraysAbnormal(napi_env env,napi_callback_info info)6781 static napi_value GLGenVertexArraysAbnormal(napi_env env, napi_callback_info info)
6782 {
6783     (void)info;
6784     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6785     initGLES(&eglWindow);
6786     glGenVertexArrays(FAILED, nullptr);
6787     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGenVertexArrays error");
6788     destroyGLES(&eglWindow);
6789     napi_value result = nullptr;
6790     napi_create_int32(env, FAILED, &result);
6791     return result;
6792 }
6793 
GLGetActiveAttribAbnormal(napi_env env,napi_callback_info info)6794 static napi_value GLGetActiveAttribAbnormal(napi_env env, napi_callback_info info)
6795 {
6796     (void)info;
6797     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6798     initGLES(&eglWindow);
6799     glGetActiveAttrib(GL_ZERO, GL_ZERO, FAILED, nullptr, nullptr, nullptr, nullptr);
6800     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGetActiveAttrib error");
6801     destroyGLES(&eglWindow);
6802     napi_value result = nullptr;
6803     napi_create_int32(env, FAILED, &result);
6804     return result;
6805 }
6806 
GLGetAttachedShadersAbnormal(napi_env env,napi_callback_info info)6807 static napi_value GLGetAttachedShadersAbnormal(napi_env env, napi_callback_info info)
6808 {
6809     (void)info;
6810     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6811     initGLES(&eglWindow);
6812     glGetAttachedShaders(GL_ZERO, FAILED, nullptr, nullptr);
6813     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGetAttachedShaders error");
6814     destroyGLES(&eglWindow);
6815     napi_value result = nullptr;
6816     napi_create_int32(env, FAILED, &result);
6817     return result;
6818 }
6819 
GLGetAttribLocationAbnormal(napi_env env,napi_callback_info info)6820 static napi_value GLGetAttribLocationAbnormal(napi_env env, napi_callback_info info)
6821 {
6822     (void)info;
6823     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6824     initGLES(&eglWindow);
6825 
6826     GLint ret = glGetAttribLocation(GL_ZERO, nullptr);
6827     NAPI_ASSERT(env, ret == FAILED, "glGetAttribLocation error");
6828     destroyGLES(&eglWindow);
6829     napi_value result = nullptr;
6830     napi_create_int32(env, FAILED, &result);
6831     return result;
6832 }
6833 
GLGetBooleani_vAbnormal(napi_env env,napi_callback_info info)6834 static napi_value GLGetBooleani_vAbnormal(napi_env env, napi_callback_info info)
6835 {
6836     (void)info;
6837     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6838     initGLES(&eglWindow);
6839     glGetBooleani_v(GL_ZERO, GL_ZERO, nullptr);
6840     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGetBooleani_v error");
6841     destroyGLES(&eglWindow);
6842     napi_value result = nullptr;
6843     napi_create_int32(env, FAILED, &result);
6844     return result;
6845 }
6846 
GLGetBooleanvAbnormal(napi_env env,napi_callback_info info)6847 static napi_value GLGetBooleanvAbnormal(napi_env env, napi_callback_info info)
6848 {
6849     (void)info;
6850     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6851     initGLES(&eglWindow);
6852     glGetBooleanv(GL_ZERO, nullptr);
6853     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGetBooleanv error");
6854     destroyGLES(&eglWindow);
6855     napi_value result = nullptr;
6856     napi_create_int32(env, FAILED, &result);
6857     return result;
6858 }
6859 
GLGetBufferParameteri64vAbnormal(napi_env env,napi_callback_info info)6860 static napi_value GLGetBufferParameteri64vAbnormal(napi_env env, napi_callback_info info)
6861 {
6862     (void)info;
6863     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6864     initGLES(&eglWindow);
6865     glGetBufferParameteri64v(GL_ZERO, GL_ZERO, nullptr);
6866     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGetBufferParameteri64v error");
6867     destroyGLES(&eglWindow);
6868     napi_value result = nullptr;
6869     napi_create_int32(env, FAILED, &result);
6870     return result;
6871 }
6872 
GLGetBufferParameterivAbnormal(napi_env env,napi_callback_info info)6873 static napi_value GLGetBufferParameterivAbnormal(napi_env env, napi_callback_info info)
6874 {
6875     (void)info;
6876     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6877     initGLES(&eglWindow);
6878     glGetBufferParameteriv(GL_ZERO, GL_ZERO, nullptr);
6879     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGetBufferParameteriv error");
6880     destroyGLES(&eglWindow);
6881     napi_value result = nullptr;
6882     napi_create_int32(env, FAILED, &result);
6883     return result;
6884 }
6885 
GLGetBufferPointervAbnormal(napi_env env,napi_callback_info info)6886 static napi_value GLGetBufferPointervAbnormal(napi_env env, napi_callback_info info)
6887 {
6888     (void)info;
6889     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6890     initGLES(&eglWindow);
6891     glGetBufferPointerv(GL_ZERO, GL_ZERO, nullptr);
6892     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGetBufferPointerv error");
6893     destroyGLES(&eglWindow);
6894     napi_value result = nullptr;
6895     napi_create_int32(env, FAILED, &result);
6896     return result;
6897 }
6898 
GLGetFloatvAbnormal(napi_env env,napi_callback_info info)6899 static napi_value GLGetFloatvAbnormal(napi_env env, napi_callback_info info)
6900 {
6901     (void)info;
6902     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6903     initGLES(&eglWindow);
6904     glGetFloatv(GL_ZERO, nullptr);
6905     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGetFloatv error");
6906     destroyGLES(&eglWindow);
6907     napi_value result = nullptr;
6908     napi_create_int32(env, FAILED, &result);
6909     return result;
6910 }
6911 
GLGetFragDataLocationAbnormal(napi_env env,napi_callback_info info)6912 static napi_value GLGetFragDataLocationAbnormal(napi_env env, napi_callback_info info)
6913 {
6914     (void)info;
6915     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6916     initGLES(&eglWindow);
6917     glGetFragDataLocation(GL_MAX_TEST_NUM, nullptr);
6918     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGetFragDataLocation error");
6919     destroyGLES(&eglWindow);
6920     napi_value result = nullptr;
6921     napi_create_int32(env, FAILED, &result);
6922     return result;
6923 }
6924 
GLGetFramebufferAttachmentParameterivAbnormal(napi_env env,napi_callback_info info)6925 static napi_value GLGetFramebufferAttachmentParameterivAbnormal(napi_env env, napi_callback_info info)
6926 {
6927     (void)info;
6928     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6929     initGLES(&eglWindow);
6930     glGetFramebufferAttachmentParameteriv(GL_ZERO, GL_ZERO, GL_ZERO, nullptr);
6931     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGetFramebufferAttachmentParameteriv error");
6932     destroyGLES(&eglWindow);
6933     napi_value result = nullptr;
6934     napi_create_int32(env, FAILED, &result);
6935     return result;
6936 }
6937 
GLGetFramebufferParameterivAbnormal(napi_env env,napi_callback_info info)6938 static napi_value GLGetFramebufferParameterivAbnormal(napi_env env, napi_callback_info info)
6939 {
6940     (void)info;
6941     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6942     initGLES(&eglWindow);
6943     glGetFramebufferParameteriv(GL_ZERO, GL_ZERO, nullptr);
6944     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGetFramebufferParameteriv error");
6945     destroyGLES(&eglWindow);
6946     napi_value result = nullptr;
6947     napi_create_int32(env, FAILED, &result);
6948     return result;
6949 }
6950 
GLGetInteger64i_vAbnormal(napi_env env,napi_callback_info info)6951 static napi_value GLGetInteger64i_vAbnormal(napi_env env, napi_callback_info info)
6952 {
6953     (void)info;
6954     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6955     initGLES(&eglWindow);
6956     glGetInteger64i_v(GL_ZERO, GL_ZERO, nullptr);
6957     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGetInteger64i_v error");
6958     destroyGLES(&eglWindow);
6959     napi_value result = nullptr;
6960     napi_create_int32(env, FAILED, &result);
6961     return result;
6962 }
6963 
GLGetInteger64vAbnormal(napi_env env,napi_callback_info info)6964 static napi_value GLGetInteger64vAbnormal(napi_env env, napi_callback_info info)
6965 {
6966     (void)info;
6967     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6968     initGLES(&eglWindow);
6969     glGetInteger64v(GL_ZERO, nullptr);
6970     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGetInteger64v error");
6971     destroyGLES(&eglWindow);
6972     napi_value result = nullptr;
6973     napi_create_int32(env, FAILED, &result);
6974     return result;
6975 }
6976 
GLGetIntegeri_vAbnormal(napi_env env,napi_callback_info info)6977 static napi_value GLGetIntegeri_vAbnormal(napi_env env, napi_callback_info info)
6978 {
6979     (void)info;
6980     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6981     initGLES(&eglWindow);
6982     glGetIntegeri_v(GL_ZERO, GL_ZERO, nullptr);
6983     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGetIntegeri_v error");
6984     destroyGLES(&eglWindow);
6985     napi_value result = nullptr;
6986     napi_create_int32(env, FAILED, &result);
6987     return result;
6988 }
6989 
GLGetIntegervAbnormal(napi_env env,napi_callback_info info)6990 static napi_value GLGetIntegervAbnormal(napi_env env, napi_callback_info info)
6991 {
6992     (void)info;
6993     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
6994     initGLES(&eglWindow);
6995     glGetIntegerv(GL_ZERO, nullptr);
6996     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGetIntegerv error");
6997     destroyGLES(&eglWindow);
6998     napi_value result = nullptr;
6999     napi_create_int32(env, FAILED, &result);
7000     return result;
7001 }
7002 
GLGetInternalformativAbnormal(napi_env env,napi_callback_info info)7003 static napi_value GLGetInternalformativAbnormal(napi_env env, napi_callback_info info)
7004 {
7005     (void)info;
7006     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7007     initGLES(&eglWindow);
7008     glGetInternalformativ(GL_ZERO, GL_ZERO, GL_ZERO, FAILED, nullptr);
7009     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGetInternalformativ error");
7010     destroyGLES(&eglWindow);
7011     napi_value result = nullptr;
7012     napi_create_int32(env, FAILED, &result);
7013     return result;
7014 }
7015 
GLGetObjectLabelAbnormal(napi_env env,napi_callback_info info)7016 static napi_value GLGetObjectLabelAbnormal(napi_env env, napi_callback_info info)
7017 {
7018     (void)info;
7019     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7020     initGLES(&eglWindow);
7021     glGetObjectLabel(GL_ZERO, GL_ZERO, GL_ZERO, nullptr, nullptr);
7022     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGetObjectLabel error");
7023     destroyGLES(&eglWindow);
7024     napi_value result = nullptr;
7025     napi_create_int32(env, FAILED, &result);
7026     return result;
7027 }
7028 
GLGetObjectPtrLabelAbnormal(napi_env env,napi_callback_info info)7029 static napi_value GLGetObjectPtrLabelAbnormal(napi_env env, napi_callback_info info)
7030 {
7031     (void)info;
7032     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7033     initGLES(&eglWindow);
7034     glGetObjectPtrLabel(nullptr, GL_ZERO, nullptr, nullptr);
7035     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGetObjectPtrLabel error");
7036     destroyGLES(&eglWindow);
7037     napi_value result = nullptr;
7038     napi_create_int32(env, FAILED, &result);
7039     return result;
7040 }
7041 
GLGetPointervAbnormal(napi_env env,napi_callback_info info)7042 static napi_value GLGetPointervAbnormal(napi_env env, napi_callback_info info)
7043 {
7044     (void)info;
7045     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7046     initGLES(&eglWindow);
7047     glGetPointerv(GL_ZERO, nullptr);
7048     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGetPointerv error");
7049     destroyGLES(&eglWindow);
7050     napi_value result = nullptr;
7051     napi_create_int32(env, FAILED, &result);
7052     return result;
7053 }
7054 
GLGetProgramBinaryAbnormal(napi_env env,napi_callback_info info)7055 static napi_value GLGetProgramBinaryAbnormal(napi_env env, napi_callback_info info)
7056 {
7057     (void)info;
7058     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7059     initGLES(&eglWindow);
7060     glGetProgramBinary(GL_ZERO, GL_ZERO, nullptr, nullptr, nullptr);
7061     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGetProgramBinary error");
7062     destroyGLES(&eglWindow);
7063     napi_value result = nullptr;
7064     napi_create_int32(env, FAILED, &result);
7065     return result;
7066 }
7067 
GLGetProgramInterfaceivAbnormal(napi_env env,napi_callback_info info)7068 static napi_value GLGetProgramInterfaceivAbnormal(napi_env env, napi_callback_info info)
7069 {
7070     (void)info;
7071     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7072     initGLES(&eglWindow);
7073     glGetProgramInterfaceiv(GL_ZERO, GL_ZERO, GL_ZERO, nullptr);
7074     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGetProgramInterfaceiv error");
7075     destroyGLES(&eglWindow);
7076     napi_value result = nullptr;
7077     napi_create_int32(env, FAILED, &result);
7078     return result;
7079 }
7080 
GLGetProgramivAbnormal(napi_env env,napi_callback_info info)7081 static napi_value GLGetProgramivAbnormal(napi_env env, napi_callback_info info)
7082 {
7083     (void)info;
7084     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7085     initGLES(&eglWindow);
7086     glGetProgramiv(GL_ZERO, GL_ZERO, nullptr);
7087     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGetProgramiv error");
7088     destroyGLES(&eglWindow);
7089     napi_value result = nullptr;
7090     napi_create_int32(env, FAILED, &result);
7091     return result;
7092 }
7093 
GLGetProgramPipelineivAbnormal(napi_env env,napi_callback_info info)7094 static napi_value GLGetProgramPipelineivAbnormal(napi_env env, napi_callback_info info)
7095 {
7096     (void)info;
7097     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7098     initGLES(&eglWindow);
7099     glGetProgramPipelineiv(GL_ZERO, GL_ZERO, nullptr);
7100     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGetProgramPipelineiv error");
7101     destroyGLES(&eglWindow);
7102     napi_value result = nullptr;
7103     napi_create_int32(env, FAILED, &result);
7104     return result;
7105 }
7106 
GLGetProgramResourceIndexAbnormal(napi_env env,napi_callback_info info)7107 static napi_value GLGetProgramResourceIndexAbnormal(napi_env env, napi_callback_info info)
7108 {
7109     (void)info;
7110     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7111     initGLES(&eglWindow);
7112     glGetProgramResourceIndex(GL_ZERO, GL_ZERO, nullptr);
7113     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGetProgramResourceIndex error");
7114     destroyGLES(&eglWindow);
7115     napi_value result = nullptr;
7116     napi_create_int32(env, FAILED, &result);
7117     return result;
7118 }
7119 
GLGetProgramResourceivAbnormal(napi_env env,napi_callback_info info)7120 static napi_value GLGetProgramResourceivAbnormal(napi_env env, napi_callback_info info)
7121 {
7122     (void)info;
7123     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7124     initGLES(&eglWindow);
7125     glGetProgramResourceiv(GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, nullptr, GL_ZERO, nullptr, nullptr);
7126     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGetProgramResourceiv error");
7127     destroyGLES(&eglWindow);
7128     napi_value result = nullptr;
7129     napi_create_int32(env, FAILED, &result);
7130     return result;
7131 }
7132 
GLGetProgramResourceLocationAbnormal(napi_env env,napi_callback_info info)7133 static napi_value GLGetProgramResourceLocationAbnormal(napi_env env, napi_callback_info info)
7134 {
7135     (void)info;
7136     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7137     initGLES(&eglWindow);
7138     glGetProgramResourceLocation(GL_ZERO, GL_ZERO, nullptr);
7139     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGetProgramResourceLocation error");
7140     destroyGLES(&eglWindow);
7141     napi_value result = nullptr;
7142     napi_create_int32(env, FAILED, &result);
7143     return result;
7144 }
7145 
GLGetProgramResourceNameAbnormal(napi_env env,napi_callback_info info)7146 static napi_value GLGetProgramResourceNameAbnormal(napi_env env, napi_callback_info info)
7147 {
7148     (void)info;
7149     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7150     initGLES(&eglWindow);
7151     glGetProgramResourceName(GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, nullptr, nullptr);
7152     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGetProgramResourceName error");
7153     destroyGLES(&eglWindow);
7154     napi_value result = nullptr;
7155     napi_create_int32(env, FAILED, &result);
7156     return result;
7157 }
7158 
GLGetQueryivAbnormal(napi_env env,napi_callback_info info)7159 static napi_value GLGetQueryivAbnormal(napi_env env, napi_callback_info info)
7160 {
7161     (void)info;
7162     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7163     initGLES(&eglWindow);
7164     glGetQueryiv(GL_ZERO, GL_ZERO, nullptr);
7165     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGetQueryiv error");
7166     destroyGLES(&eglWindow);
7167     napi_value result = nullptr;
7168     napi_create_int32(env, FAILED, &result);
7169     return result;
7170 }
7171 
GLGetQueryObjectuivAbnormal(napi_env env,napi_callback_info info)7172 static napi_value GLGetQueryObjectuivAbnormal(napi_env env, napi_callback_info info)
7173 {
7174     (void)info;
7175     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7176     initGLES(&eglWindow);
7177     glGetQueryObjectuiv(GL_ZERO, GL_ZERO, nullptr);
7178     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGetQueryObjectuiv error");
7179     destroyGLES(&eglWindow);
7180     napi_value result = nullptr;
7181     napi_create_int32(env, FAILED, &result);
7182     return result;
7183 }
7184 
GLGetRenderbufferParameterivAbnormal(napi_env env,napi_callback_info info)7185 static napi_value GLGetRenderbufferParameterivAbnormal(napi_env env, napi_callback_info info)
7186 {
7187     (void)info;
7188     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7189     initGLES(&eglWindow);
7190     glGetRenderbufferParameteriv(GL_ZERO, GL_ZERO, nullptr);
7191     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGetRenderbufferParameteriv error");
7192     destroyGLES(&eglWindow);
7193     napi_value result = nullptr;
7194     napi_create_int32(env, FAILED, &result);
7195     return result;
7196 }
7197 
GLGetSamplerParameterfvAbnormal(napi_env env,napi_callback_info info)7198 static napi_value GLGetSamplerParameterfvAbnormal(napi_env env, napi_callback_info info)
7199 {
7200     (void)info;
7201     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7202     initGLES(&eglWindow);
7203     glGetSamplerParameterfv(GL_ZERO, GL_ZERO, nullptr);
7204     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGetSamplerParameterfv error");
7205     destroyGLES(&eglWindow);
7206     napi_value result = nullptr;
7207     napi_create_int32(env, FAILED, &result);
7208     return result;
7209 }
7210 
GLGetSamplerParameterIivAbnormal(napi_env env,napi_callback_info info)7211 static napi_value GLGetSamplerParameterIivAbnormal(napi_env env, napi_callback_info info)
7212 {
7213     (void)info;
7214     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7215     initGLES(&eglWindow);
7216     glGetSamplerParameterIiv(GL_ZERO, GL_ZERO, nullptr);
7217     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGetSamplerParameterIiv error");
7218     destroyGLES(&eglWindow);
7219     napi_value result = nullptr;
7220     napi_create_int32(env, FAILED, &result);
7221     return result;
7222 }
7223 
GLGetSamplerParameterIuivAbnormal(napi_env env,napi_callback_info info)7224 static napi_value GLGetSamplerParameterIuivAbnormal(napi_env env, napi_callback_info info)
7225 {
7226     (void)info;
7227     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7228     initGLES(&eglWindow);
7229     glGetSamplerParameterIuiv(GL_ZERO, GL_ZERO, nullptr);
7230     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGetSamplerParameterIuiv error");
7231     destroyGLES(&eglWindow);
7232     napi_value result = nullptr;
7233     napi_create_int32(env, FAILED, &result);
7234     return result;
7235 }
7236 
GLGetSamplerParameterivAbnormal(napi_env env,napi_callback_info info)7237 static napi_value GLGetSamplerParameterivAbnormal(napi_env env, napi_callback_info info)
7238 {
7239     (void)info;
7240     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7241     initGLES(&eglWindow);
7242     glGetSamplerParameteriv(GL_ZERO, GL_ZERO, nullptr);
7243     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glGetSamplerParameteriv error");
7244     destroyGLES(&eglWindow);
7245     napi_value result = nullptr;
7246     napi_create_int32(env, FAILED, &result);
7247     return result;
7248 }
7249 
GLUniform1fAbnormal(napi_env env,napi_callback_info info)7250 static napi_value GLUniform1fAbnormal(napi_env env, napi_callback_info info)
7251 {
7252     (void)info;
7253     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7254     initGLES(&eglWindow);
7255     glUniform1f(GL_ZERO, CLEAR_00);
7256     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glUniform1f error");
7257     destroyGLES(&eglWindow);
7258     napi_value result = nullptr;
7259     napi_create_int32(env, FAILED, &result);
7260     return result;
7261 }
7262 
GLUniform1fvAbnormal(napi_env env,napi_callback_info info)7263 static napi_value GLUniform1fvAbnormal(napi_env env, napi_callback_info info)
7264 {
7265     (void)info;
7266     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7267     initGLES(&eglWindow);
7268     glUniform1fv(GL_ZERO, FAILED, nullptr);
7269     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glUniform1fv error");
7270     destroyGLES(&eglWindow);
7271     napi_value result = nullptr;
7272     napi_create_int32(env, FAILED, &result);
7273     return result;
7274 }
7275 
GLUniform1iAbnormal(napi_env env,napi_callback_info info)7276 static napi_value GLUniform1iAbnormal(napi_env env, napi_callback_info info)
7277 {
7278     (void)info;
7279     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7280     initGLES(&eglWindow);
7281     glUniform1i(GL_ZERO, GL_ZERO);
7282     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glUniform1i error");
7283     destroyGLES(&eglWindow);
7284     napi_value result = nullptr;
7285     napi_create_int32(env, FAILED, &result);
7286     return result;
7287 }
7288 
GLUniform1ivAbnormal(napi_env env,napi_callback_info info)7289 static napi_value GLUniform1ivAbnormal(napi_env env, napi_callback_info info)
7290 {
7291     (void)info;
7292     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7293     initGLES(&eglWindow);
7294     glUniform1iv(GL_ZERO, FAILED, nullptr);
7295     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glUniform1iv error");
7296     destroyGLES(&eglWindow);
7297     napi_value result = nullptr;
7298     napi_create_int32(env, FAILED, &result);
7299     return result;
7300 }
7301 
GLUniform1uiAbnormal(napi_env env,napi_callback_info info)7302 static napi_value GLUniform1uiAbnormal(napi_env env, napi_callback_info info)
7303 {
7304     (void)info;
7305     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7306     initGLES(&eglWindow);
7307     glUniform1ui(GL_ZERO, GL_ZERO);
7308     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glUniform1ui error");
7309     destroyGLES(&eglWindow);
7310     napi_value result = nullptr;
7311     napi_create_int32(env, FAILED, &result);
7312     return result;
7313 }
7314 
GLUniform1uivAbnormal(napi_env env,napi_callback_info info)7315 static napi_value GLUniform1uivAbnormal(napi_env env, napi_callback_info info)
7316 {
7317     (void)info;
7318     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7319     initGLES(&eglWindow);
7320     glUniform1uiv(GL_ZERO, FAILED, nullptr);
7321     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glUniform1uiv error");
7322     destroyGLES(&eglWindow);
7323     napi_value result = nullptr;
7324     napi_create_int32(env, FAILED, &result);
7325     return result;
7326 }
7327 
GLUniform2fAbnormal(napi_env env,napi_callback_info info)7328 static napi_value GLUniform2fAbnormal(napi_env env, napi_callback_info info)
7329 {
7330     (void)info;
7331     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7332     initGLES(&eglWindow);
7333     glUniform2f(GL_ZERO, CLEAR_00, CLEAR_00);
7334     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glUniform2f error");
7335     destroyGLES(&eglWindow);
7336     napi_value result = nullptr;
7337     napi_create_int32(env, FAILED, &result);
7338     return result;
7339 }
7340 
GLUniform2fvAbnormal(napi_env env,napi_callback_info info)7341 static napi_value GLUniform2fvAbnormal(napi_env env, napi_callback_info info)
7342 {
7343     (void)info;
7344     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7345     initGLES(&eglWindow);
7346     glUniform2fv(GL_ZERO, FAILED, nullptr);
7347     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glUniform2fv error");
7348     destroyGLES(&eglWindow);
7349     napi_value result = nullptr;
7350     napi_create_int32(env, FAILED, &result);
7351     return result;
7352 }
7353 
GLUniform2iAbnormal(napi_env env,napi_callback_info info)7354 static napi_value GLUniform2iAbnormal(napi_env env, napi_callback_info info)
7355 {
7356     (void)info;
7357     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7358     initGLES(&eglWindow);
7359     glUniform2i(GL_ZERO, GL_ZERO, GL_ZERO);
7360     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glUniform2i error");
7361     destroyGLES(&eglWindow);
7362     napi_value result = nullptr;
7363     napi_create_int32(env, FAILED, &result);
7364     return result;
7365 }
7366 
GLUniform2ivAbnormal(napi_env env,napi_callback_info info)7367 static napi_value GLUniform2ivAbnormal(napi_env env, napi_callback_info info)
7368 {
7369     (void)info;
7370     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7371     initGLES(&eglWindow);
7372     glUniform2iv(GL_ZERO, FAILED, nullptr);
7373     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glUniform2iv error");
7374     destroyGLES(&eglWindow);
7375     napi_value result = nullptr;
7376     napi_create_int32(env, FAILED, &result);
7377     return result;
7378 }
7379 
GLUniform2uiAbnormal(napi_env env,napi_callback_info info)7380 static napi_value GLUniform2uiAbnormal(napi_env env, napi_callback_info info)
7381 {
7382     (void)info;
7383     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7384     initGLES(&eglWindow);
7385     glUniform2ui(GL_ZERO, GL_ZERO, GL_ZERO);
7386     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glUniform2ui error");
7387     destroyGLES(&eglWindow);
7388     napi_value result = nullptr;
7389     napi_create_int32(env, FAILED, &result);
7390     return result;
7391 }
7392 
GLUniform2uivAbnormal(napi_env env,napi_callback_info info)7393 static napi_value GLUniform2uivAbnormal(napi_env env, napi_callback_info info)
7394 {
7395     (void)info;
7396     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7397     initGLES(&eglWindow);
7398     glUniform2uiv(GL_ZERO, FAILED, nullptr);
7399     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glUniform2uiv error");
7400     destroyGLES(&eglWindow);
7401     napi_value result = nullptr;
7402     napi_create_int32(env, FAILED, &result);
7403     return result;
7404 }
7405 
GLUniform3fAbnormal(napi_env env,napi_callback_info info)7406 static napi_value GLUniform3fAbnormal(napi_env env, napi_callback_info info)
7407 {
7408     (void)info;
7409     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7410     initGLES(&eglWindow);
7411     glUniform3f(GL_ZERO, CLEAR_00, CLEAR_00, CLEAR_00);
7412     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glUniform3f error");
7413     destroyGLES(&eglWindow);
7414     napi_value result = nullptr;
7415     napi_create_int32(env, FAILED, &result);
7416     return result;
7417 }
7418 
GLUniform3fvAbnormal(napi_env env,napi_callback_info info)7419 static napi_value GLUniform3fvAbnormal(napi_env env, napi_callback_info info)
7420 {
7421     (void)info;
7422     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7423     initGLES(&eglWindow);
7424     glUniform3fv(GL_ZERO, FAILED, nullptr);
7425     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glUniform3fv error");
7426     destroyGLES(&eglWindow);
7427     napi_value result = nullptr;
7428     napi_create_int32(env, FAILED, &result);
7429     return result;
7430 }
7431 
GLUniform3iAbnormal(napi_env env,napi_callback_info info)7432 static napi_value GLUniform3iAbnormal(napi_env env, napi_callback_info info)
7433 {
7434     (void)info;
7435     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7436     initGLES(&eglWindow);
7437     glUniform3i(GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO);
7438     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glUniform3i error");
7439     destroyGLES(&eglWindow);
7440     napi_value result = nullptr;
7441     napi_create_int32(env, FAILED, &result);
7442     return result;
7443 }
7444 
GLUniform3ivAbnormal(napi_env env,napi_callback_info info)7445 static napi_value GLUniform3ivAbnormal(napi_env env, napi_callback_info info)
7446 {
7447     (void)info;
7448     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7449     initGLES(&eglWindow);
7450     glUniform3iv(GL_ZERO, FAILED, nullptr);
7451     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glUniform3iv error");
7452     destroyGLES(&eglWindow);
7453     napi_value result = nullptr;
7454     napi_create_int32(env, FAILED, &result);
7455     return result;
7456 }
7457 
GLUniform3uiAbnormal(napi_env env,napi_callback_info info)7458 static napi_value GLUniform3uiAbnormal(napi_env env, napi_callback_info info)
7459 {
7460     (void)info;
7461     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7462     initGLES(&eglWindow);
7463     glUniform3ui(GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO);
7464     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glUniform3ui error");
7465     destroyGLES(&eglWindow);
7466     napi_value result = nullptr;
7467     napi_create_int32(env, FAILED, &result);
7468     return result;
7469 }
7470 
GLUniform3uivAbnormal(napi_env env,napi_callback_info info)7471 static napi_value GLUniform3uivAbnormal(napi_env env, napi_callback_info info)
7472 {
7473     (void)info;
7474     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7475     initGLES(&eglWindow);
7476     glUniform3uiv(GL_ZERO, FAILED, nullptr);
7477     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glUniform3uiv error");
7478     destroyGLES(&eglWindow);
7479     napi_value result = nullptr;
7480     napi_create_int32(env, FAILED, &result);
7481     return result;
7482 }
7483 
GLUniform4fAbnormal(napi_env env,napi_callback_info info)7484 static napi_value GLUniform4fAbnormal(napi_env env, napi_callback_info info)
7485 {
7486     (void)info;
7487     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7488     initGLES(&eglWindow);
7489     glUniform4f(GL_ZERO, CLEAR_00, CLEAR_00, CLEAR_00, CLEAR_00);
7490     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glUniform4f error");
7491     destroyGLES(&eglWindow);
7492     napi_value result = nullptr;
7493     napi_create_int32(env, FAILED, &result);
7494     return result;
7495 }
7496 
GLUniform4fvAbnormal(napi_env env,napi_callback_info info)7497 static napi_value GLUniform4fvAbnormal(napi_env env, napi_callback_info info)
7498 {
7499     (void)info;
7500     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7501     initGLES(&eglWindow);
7502     glUniform4fv(GL_ZERO, FAILED, nullptr);
7503     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glUniform4fv error");
7504     destroyGLES(&eglWindow);
7505     napi_value result = nullptr;
7506     napi_create_int32(env, FAILED, &result);
7507     return result;
7508 }
7509 
GLUniform4iAbnormal(napi_env env,napi_callback_info info)7510 static napi_value GLUniform4iAbnormal(napi_env env, napi_callback_info info)
7511 {
7512     (void)info;
7513     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7514     initGLES(&eglWindow);
7515     glUniform4i(GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO);
7516     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glUniform4i error");
7517     destroyGLES(&eglWindow);
7518     napi_value result = nullptr;
7519     napi_create_int32(env, FAILED, &result);
7520     return result;
7521 }
7522 
GLUniform4ivAbnormal(napi_env env,napi_callback_info info)7523 static napi_value GLUniform4ivAbnormal(napi_env env, napi_callback_info info)
7524 {
7525     (void)info;
7526     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7527     initGLES(&eglWindow);
7528     glUniform4iv(GL_ZERO, FAILED, nullptr);
7529     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glUniform4iv error");
7530     destroyGLES(&eglWindow);
7531     napi_value result = nullptr;
7532     napi_create_int32(env, FAILED, &result);
7533     return result;
7534 }
7535 
GLUniform4uiAbnormal(napi_env env,napi_callback_info info)7536 static napi_value GLUniform4uiAbnormal(napi_env env, napi_callback_info info)
7537 {
7538     (void)info;
7539     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7540     initGLES(&eglWindow);
7541     glUniform4ui(GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO);
7542     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glUniform4ui error");
7543     destroyGLES(&eglWindow);
7544     napi_value result = nullptr;
7545     napi_create_int32(env, FAILED, &result);
7546     return result;
7547 }
7548 
GLUniform4uivAbnormal(napi_env env,napi_callback_info info)7549 static napi_value GLUniform4uivAbnormal(napi_env env, napi_callback_info info)
7550 {
7551     (void)info;
7552     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7553     initGLES(&eglWindow);
7554     glUniform4uiv(GL_ZERO, FAILED, nullptr);
7555     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glUniform4uiv error");
7556     destroyGLES(&eglWindow);
7557     napi_value result = nullptr;
7558     napi_create_int32(env, FAILED, &result);
7559     return result;
7560 }
7561 
GLUniformBlockBindingAbnormal(napi_env env,napi_callback_info info)7562 static napi_value GLUniformBlockBindingAbnormal(napi_env env, napi_callback_info info)
7563 {
7564     (void)info;
7565     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7566     initGLES(&eglWindow);
7567     glUniformBlockBinding(GL_ZERO, GL_MAX_TEST_NUM, GL_ZERO);
7568     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glUniformBlockBinding error");
7569     destroyGLES(&eglWindow);
7570     napi_value result = nullptr;
7571     napi_create_int32(env, FAILED, &result);
7572     return result;
7573 }
7574 
GLUniformMatrix2fvAbnormal(napi_env env,napi_callback_info info)7575 static napi_value GLUniformMatrix2fvAbnormal(napi_env env, napi_callback_info info)
7576 {
7577     (void)info;
7578     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7579     initGLES(&eglWindow);
7580     glUniformMatrix2fv(GL_ZERO, FAILED, GL_TRUE, nullptr);
7581     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glUniformMatrix2fv error");
7582     destroyGLES(&eglWindow);
7583     napi_value result = nullptr;
7584     napi_create_int32(env, FAILED, &result);
7585     return result;
7586 }
7587 
GLUniformMatrix2x3fvAbnormal(napi_env env,napi_callback_info info)7588 static napi_value GLUniformMatrix2x3fvAbnormal(napi_env env, napi_callback_info info)
7589 {
7590     (void)info;
7591     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7592     initGLES(&eglWindow);
7593     glUniformMatrix2x3fv(GL_ZERO, FAILED, GL_TRUE, nullptr);
7594     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glUniformMatrix2x3fv error");
7595     destroyGLES(&eglWindow);
7596     napi_value result = nullptr;
7597     napi_create_int32(env, FAILED, &result);
7598     return result;
7599 }
7600 
GLUniformMatrix2x4fvAbnormal(napi_env env,napi_callback_info info)7601 static napi_value GLUniformMatrix2x4fvAbnormal(napi_env env, napi_callback_info info)
7602 {
7603     (void)info;
7604     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7605     initGLES(&eglWindow);
7606     glUniformMatrix2x4fv(GL_ZERO, FAILED, GL_TRUE, nullptr);
7607     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glUniformMatrix2x4fv error");
7608     destroyGLES(&eglWindow);
7609     napi_value result = nullptr;
7610     napi_create_int32(env, FAILED, &result);
7611     return result;
7612 }
7613 
GLUniformMatrix3fvAbnormal(napi_env env,napi_callback_info info)7614 static napi_value GLUniformMatrix3fvAbnormal(napi_env env, napi_callback_info info)
7615 {
7616     (void)info;
7617     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7618     initGLES(&eglWindow);
7619     glUniformMatrix3fv(GL_ZERO, FAILED, GL_TRUE, nullptr);
7620     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glUniformMatrix3fv error");
7621     destroyGLES(&eglWindow);
7622     napi_value result = nullptr;
7623     napi_create_int32(env, FAILED, &result);
7624     return result;
7625 }
7626 
GLUniformMatrix3x2fvAbnormal(napi_env env,napi_callback_info info)7627 static napi_value GLUniformMatrix3x2fvAbnormal(napi_env env, napi_callback_info info)
7628 {
7629     (void)info;
7630     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7631     initGLES(&eglWindow);
7632     glUniformMatrix3x2fv(GL_ZERO, FAILED, GL_TRUE, nullptr);
7633     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glUniformMatrix3x2fv error");
7634     destroyGLES(&eglWindow);
7635     napi_value result = nullptr;
7636     napi_create_int32(env, FAILED, &result);
7637     return result;
7638 }
7639 
GLUniformMatrix3x4fvAbnormal(napi_env env,napi_callback_info info)7640 static napi_value GLUniformMatrix3x4fvAbnormal(napi_env env, napi_callback_info info)
7641 {
7642     (void)info;
7643     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7644     initGLES(&eglWindow);
7645     glUniformMatrix3x4fv(GL_ZERO, FAILED, GL_TRUE, nullptr);
7646     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glUniformMatrix3x4fv error");
7647     destroyGLES(&eglWindow);
7648     napi_value result = nullptr;
7649     napi_create_int32(env, FAILED, &result);
7650     return result;
7651 }
7652 
GLUniformMatrix4fvAbnormal(napi_env env,napi_callback_info info)7653 static napi_value GLUniformMatrix4fvAbnormal(napi_env env, napi_callback_info info)
7654 {
7655     (void)info;
7656     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7657     initGLES(&eglWindow);
7658     glUniformMatrix4fv(GL_ZERO, FAILED, GL_TRUE, nullptr);
7659     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glUniformMatrix4fv error");
7660     destroyGLES(&eglWindow);
7661     napi_value result = nullptr;
7662     napi_create_int32(env, FAILED, &result);
7663     return result;
7664 }
7665 
GLUniformMatrix4x2fvAbnormal(napi_env env,napi_callback_info info)7666 static napi_value GLUniformMatrix4x2fvAbnormal(napi_env env, napi_callback_info info)
7667 {
7668     (void)info;
7669     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7670     initGLES(&eglWindow);
7671     glUniformMatrix4x2fv(GL_ZERO, GL_ZERO, GL_TRUE, nullptr);
7672     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glUniformMatrix4x2fv error");
7673     destroyGLES(&eglWindow);
7674     napi_value result = nullptr;
7675     napi_create_int32(env, FAILED, &result);
7676     return result;
7677 }
7678 
GLUniformMatrix4x3fvAbnormal(napi_env env,napi_callback_info info)7679 static napi_value GLUniformMatrix4x3fvAbnormal(napi_env env, napi_callback_info info)
7680 {
7681     (void)info;
7682     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7683     initGLES(&eglWindow);
7684     glUniformMatrix4x3fv(GL_ZERO, FAILED, GL_TRUE, nullptr);
7685     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glUniformMatrix4x3fv error");
7686     destroyGLES(&eglWindow);
7687     napi_value result = nullptr;
7688     napi_create_int32(env, FAILED, &result);
7689     return result;
7690 }
7691 
GLCompileShaderAbnormal(napi_env env,napi_callback_info info)7692 static napi_value GLCompileShaderAbnormal(napi_env env, napi_callback_info info)
7693 {
7694     (void)info;
7695     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7696     initGLES(&eglWindow);
7697     glCompileShader(GL_MAX_TEST_NUM);
7698     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glCompileShader error");
7699     destroyGLES(&eglWindow);
7700     napi_value result = nullptr;
7701     napi_create_int32(env, FAILED, &result);
7702     return result;
7703 }
7704 
GLCompressedTexImage2DAbnormal(napi_env env,napi_callback_info info)7705 static napi_value GLCompressedTexImage2DAbnormal(napi_env env, napi_callback_info info)
7706 {
7707     (void)info;
7708     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7709     initGLES(&eglWindow);
7710     glCompressedTexImage2D(GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ONE, GL_ZERO, nullptr);
7711     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glCompressedTexImage2D error");
7712     destroyGLES(&eglWindow);
7713     napi_value result = nullptr;
7714     napi_create_int32(env, FAILED, &result);
7715     return result;
7716 }
7717 
GLCompressedTexImage3DAbnormal(napi_env env,napi_callback_info info)7718 static napi_value GLCompressedTexImage3DAbnormal(napi_env env, napi_callback_info info)
7719 {
7720     (void)info;
7721     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7722     initGLES(&eglWindow);
7723     glCompressedTexImage3D(GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ONE, GL_ZERO, nullptr);
7724     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glCompressedTexImage3D error");
7725     destroyGLES(&eglWindow);
7726     napi_value result = nullptr;
7727     napi_create_int32(env, FAILED, &result);
7728     return result;
7729 }
7730 
GLCompressedTexSubImage2DAbnormal(napi_env env,napi_callback_info info)7731 static napi_value GLCompressedTexSubImage2DAbnormal(napi_env env, napi_callback_info info)
7732 {
7733     (void)info;
7734     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7735     initGLES(&eglWindow);
7736     glCompressedTexSubImage2D(GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, nullptr);
7737     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glCompressedTexSubImage2D error");
7738     destroyGLES(&eglWindow);
7739     napi_value result = nullptr;
7740     napi_create_int32(env, FAILED, &result);
7741     return result;
7742 }
7743 
GLCompressedTexSubImage3DAbnormal(napi_env env,napi_callback_info info)7744 static napi_value GLCompressedTexSubImage3DAbnormal(napi_env env, napi_callback_info info)
7745 {
7746     (void)info;
7747     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7748     initGLES(&eglWindow);
7749     glCompressedTexSubImage3D(GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO,
7750                               nullptr);
7751     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glCompressedTexSubImage3D error");
7752     destroyGLES(&eglWindow);
7753     napi_value result = nullptr;
7754     napi_create_int32(env, FAILED, &result);
7755     return result;
7756 }
7757 
GLCopyTexSubImage3DAbnormal(napi_env env,napi_callback_info info)7758 static napi_value GLCopyTexSubImage3DAbnormal(napi_env env, napi_callback_info info)
7759 {
7760     (void)info;
7761     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7762     initGLES(&eglWindow);
7763     glCopyTexSubImage3D(GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO);
7764     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glCopyTexSubImage3D error");
7765     destroyGLES(&eglWindow);
7766     napi_value result = nullptr;
7767     napi_create_int32(env, FAILED, &result);
7768     return result;
7769 }
7770 
GLDrawElementsAbnormal(napi_env env,napi_callback_info info)7771 static napi_value GLDrawElementsAbnormal(napi_env env, napi_callback_info info)
7772 {
7773     (void)info;
7774     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7775     initGLES(&eglWindow);
7776     glDrawElements(GL_ZERO, FAILED, GL_ZERO, nullptr);
7777     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glDrawElements error");
7778     destroyGLES(&eglWindow);
7779     napi_value result = nullptr;
7780     napi_create_int32(env, FAILED, &result);
7781     return result;
7782 }
7783 
GLDrawElementsBaseVertexAbnormal(napi_env env,napi_callback_info info)7784 static napi_value GLDrawElementsBaseVertexAbnormal(napi_env env, napi_callback_info info)
7785 {
7786     (void)info;
7787     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7788     initGLES(&eglWindow);
7789     glDrawElementsBaseVertex(GL_ZERO, GL_ZERO, GL_ZERO, nullptr, GL_ZERO);
7790     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glDrawElementsBaseVertex error");
7791     destroyGLES(&eglWindow);
7792     napi_value result = nullptr;
7793     napi_create_int32(env, FAILED, &result);
7794     return result;
7795 }
7796 
GLDrawElementsIndirectAbnormal(napi_env env,napi_callback_info info)7797 static napi_value GLDrawElementsIndirectAbnormal(napi_env env, napi_callback_info info)
7798 {
7799     (void)info;
7800     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7801     initGLES(&eglWindow);
7802     glDrawElementsIndirect(GL_ZERO, GL_ZERO, nullptr);
7803     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glDrawElementsIndirect error");
7804     destroyGLES(&eglWindow);
7805     napi_value result = nullptr;
7806     napi_create_int32(env, FAILED, &result);
7807     return result;
7808 }
7809 
GLDrawElementsInstancedAbnormal(napi_env env,napi_callback_info info)7810 static napi_value GLDrawElementsInstancedAbnormal(napi_env env, napi_callback_info info)
7811 {
7812     (void)info;
7813     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7814     initGLES(&eglWindow);
7815     glDrawElementsInstanced(GL_ZERO, FAILED, GL_ZERO, nullptr, FAILED);
7816     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glDrawElementsInstanced error");
7817     destroyGLES(&eglWindow);
7818     napi_value result = nullptr;
7819     napi_create_int32(env, FAILED, &result);
7820     return result;
7821 }
7822 
GLDrawElementsInstancedBaseVertexAbnormal(napi_env env,napi_callback_info info)7823 static napi_value GLDrawElementsInstancedBaseVertexAbnormal(napi_env env, napi_callback_info info)
7824 {
7825     (void)info;
7826     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7827     initGLES(&eglWindow);
7828     glDrawElementsInstancedBaseVertex(FAILED, GL_ONE, GL_UNSIGNED_BYTE, nullptr, GL_ONE, GL_ONE);
7829     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glDrawElementsInstancedBaseVertex error");
7830     destroyGLES(&eglWindow);
7831     napi_value result = nullptr;
7832     napi_create_int32(env, FAILED, &result);
7833     return result;
7834 }
7835 
GLDrawRangeElementsAbnormal(napi_env env,napi_callback_info info)7836 static napi_value GLDrawRangeElementsAbnormal(napi_env env, napi_callback_info info)
7837 {
7838     (void)info;
7839     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7840     initGLES(&eglWindow);
7841     glDrawRangeElements(GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, nullptr);
7842     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glDrawRangeElements error");
7843     destroyGLES(&eglWindow);
7844     napi_value result = nullptr;
7845     napi_create_int32(env, FAILED, &result);
7846     return result;
7847 }
7848 
GLDrawRangeElementsBaseVertexAbnormal(napi_env env,napi_callback_info info)7849 static napi_value GLDrawRangeElementsBaseVertexAbnormal(napi_env env, napi_callback_info info)
7850 {
7851     (void)info;
7852     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7853     initGLES(&eglWindow);
7854     glDrawRangeElementsBaseVertex(GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, nullptr, GL_ZERO);
7855     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glDrawRangeElementsBaseVertex error");
7856     destroyGLES(&eglWindow);
7857     napi_value result = nullptr;
7858     napi_create_int32(env, FAILED, &result);
7859     return result;
7860 }
7861 
GLEnableAbnormal(napi_env env,napi_callback_info info)7862 static napi_value GLEnableAbnormal(napi_env env, napi_callback_info info)
7863 {
7864     (void)info;
7865     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7866     initGLES(&eglWindow);
7867     glEnable(GL_ZERO);
7868     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glEnable error");
7869     destroyGLES(&eglWindow);
7870     napi_value result = nullptr;
7871     napi_create_int32(env, FAILED, &result);
7872     return result;
7873 }
7874 
GLEnableiAbnormal(napi_env env,napi_callback_info info)7875 static napi_value GLEnableiAbnormal(napi_env env, napi_callback_info info)
7876 {
7877     (void)info;
7878     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7879     initGLES(&eglWindow);
7880     glEnablei(GL_ZERO, GL_ZERO);
7881     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glEnablei error");
7882     destroyGLES(&eglWindow);
7883     napi_value result = nullptr;
7884     napi_create_int32(env, FAILED, &result);
7885     return result;
7886 }
7887 
GLEnableVertexAttribArrayAbnormal(napi_env env,napi_callback_info info)7888 static napi_value GLEnableVertexAttribArrayAbnormal(napi_env env, napi_callback_info info)
7889 {
7890     (void)info;
7891     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7892     initGLES(&eglWindow);
7893     glEnableVertexAttribArray(GL_MAX_VERTEX_ATTRIBS);
7894     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glEnableVertexAttribArray error");
7895     destroyGLES(&eglWindow);
7896     napi_value result = nullptr;
7897     napi_create_int32(env, FAILED, &result);
7898     return result;
7899 }
7900 
GLEndQueryAbnormal(napi_env env,napi_callback_info info)7901 static napi_value GLEndQueryAbnormal(napi_env env, napi_callback_info info)
7902 {
7903     (void)info;
7904     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7905     initGLES(&eglWindow);
7906     glEndQuery(GL_ZERO);
7907     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glEndQuery error");
7908     destroyGLES(&eglWindow);
7909     napi_value result = nullptr;
7910     napi_create_int32(env, FAILED, &result);
7911     return result;
7912 }
7913 
GLEndTransformFeedbackAbnormal(napi_env env,napi_callback_info info)7914 static napi_value GLEndTransformFeedbackAbnormal(napi_env env, napi_callback_info info)
7915 {
7916     (void)info;
7917     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7918     initGLES(&eglWindow);
7919     glEndTransformFeedback();
7920     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glEndTransformFeedback error");
7921     destroyGLES(&eglWindow);
7922     napi_value result = nullptr;
7923     napi_create_int32(env, FAILED, &result);
7924     return result;
7925 }
7926 
GLFenceSyncAbnormal(napi_env env,napi_callback_info info)7927 static napi_value GLFenceSyncAbnormal(napi_env env, napi_callback_info info)
7928 {
7929     (void)info;
7930     EGLWindow eglWindow = {EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_CONTEXT};
7931     initGLES(&eglWindow);
7932     glFenceSync(GL_ZERO, GL_ONE);
7933     NAPI_ASSERT(env, glGetError() != GL_NO_ERROR, "glFenceSync error");
7934     destroyGLES(&eglWindow);
7935     napi_value result = nullptr;
7936     napi_create_int32(env, FAILED, &result);
7937     return result;
7938 }
7939 
7940 EXTERN_C_START
Init(napi_env env,napi_value exports)7941 static napi_value Init(napi_env env, napi_value exports)
7942 {
7943     napi_property_descriptor desc[] = {
7944         {"gLActiveShaderProgram", nullptr, GLActiveShaderProgram, nullptr, nullptr, nullptr, napi_default, nullptr},
7945         {"gLActiveTexture", nullptr, GLActiveTexture, nullptr, nullptr, nullptr, napi_default, nullptr},
7946         {"gLAttachShader", nullptr, GLAttachShader, nullptr, nullptr, nullptr, napi_default, nullptr},
7947         {"gLBeginQuery", nullptr, GLBeginQuery, nullptr, nullptr, nullptr, napi_default, nullptr},
7948         {"gLBeginTransformFeedback", nullptr, GLBeginTransformFeedback, nullptr, nullptr, nullptr, napi_default,
7949          nullptr},
7950         {"gLBindAttribLocation", nullptr, GLBindAttribLocation, nullptr, nullptr, nullptr, napi_default, nullptr},
7951         {"gLBindBuffer", nullptr, GLBindBuffer, nullptr, nullptr, nullptr, napi_default, nullptr},
7952         {"gLBindBufferBase", nullptr, GLBindBufferBase, nullptr, nullptr, nullptr, napi_default, nullptr},
7953         {"gLBindBufferRange", nullptr, GLBindBufferRange, nullptr, nullptr, nullptr, napi_default, nullptr},
7954         {"gLBindFramebuffer", nullptr, GLBindFramebuffer, nullptr, nullptr, nullptr, napi_default, nullptr},
7955         {"gLBindImageTexture", nullptr, GLBindImageTexture, nullptr, nullptr, nullptr, napi_default, nullptr},
7956         {"gLBindProgramPipeline", nullptr, GLBindProgramPipeline, nullptr, nullptr, nullptr, napi_default, nullptr},
7957         {"gLBindRenderbuffer", nullptr, GLBindRenderbuffer, nullptr, nullptr, nullptr, napi_default, nullptr},
7958         {"gLBindSampler", nullptr, GLBindSampler, nullptr, nullptr, nullptr, napi_default, nullptr},
7959         {"gLBindTexture", nullptr, GLBindTexture, nullptr, nullptr, nullptr, napi_default, nullptr},
7960         {"gLBindTransformFeedback", nullptr, GLBindTransformFeedback, nullptr, nullptr, nullptr, napi_default, nullptr},
7961         {"gLBindVertexArray", nullptr, GLBindVertexArray, nullptr, nullptr, nullptr, napi_default, nullptr},
7962         {"gLBindVertexBuffer", nullptr, GLBindVertexBuffer, nullptr, nullptr, nullptr, napi_default, nullptr},
7963         {"gLBlendBarrier", nullptr, GLBlendBarrier, nullptr, nullptr, nullptr, napi_default, nullptr},
7964         {"gLBlendColor", nullptr, GLBlendColor, nullptr, nullptr, nullptr, napi_default, nullptr},
7965         {"gLBlendEquation", nullptr, GLBlendEquation, nullptr, nullptr, nullptr, napi_default, nullptr},
7966         {"gLBlendEquationi", nullptr, GLBlendEquationi, nullptr, nullptr, nullptr, napi_default, nullptr},
7967         {"gLBlendEquationSeparate", nullptr, GLBlendEquationSeparate, nullptr, nullptr, nullptr, napi_default, nullptr},
7968         {"gLBlendEquationSeparatei", nullptr, GLBlendEquationSeparatei, nullptr, nullptr, nullptr, napi_default,
7969          nullptr},
7970         {"gLBlendFunc", nullptr, GLBlendFunc, nullptr, nullptr, nullptr, napi_default, nullptr},
7971         {"gLBlendFunci", nullptr, GLBlendFunci, nullptr, nullptr, nullptr, napi_default, nullptr},
7972         {"gLBlendFuncSeparate", nullptr, GLBlendFuncSeparate, nullptr, nullptr, nullptr, napi_default, nullptr},
7973         {"gLBlendFuncSeparatei", nullptr, GLBlendFuncSeparatei, nullptr, nullptr, nullptr, napi_default, nullptr},
7974         {"gLBlitFramebuffer", nullptr, GLBlitFramebuffer, nullptr, nullptr, nullptr, napi_default, nullptr},
7975         {"gLBufferData", nullptr, GLBufferData, nullptr, nullptr, nullptr, napi_default, nullptr},
7976         {"gLBufferSubData", nullptr, GLBufferSubData, nullptr, nullptr, nullptr, napi_default, nullptr},
7977         {"gLCheckFramebufferStatus", nullptr, GLCheckFramebufferStatus, nullptr, nullptr, nullptr, napi_default,
7978          nullptr},
7979         {"gLClear", nullptr, GLClear, nullptr, nullptr, nullptr, napi_default, nullptr},
7980         {"gLClearBufferfi", nullptr, GLClearBufferfi, nullptr, nullptr, nullptr, napi_default, nullptr},
7981         {"gLClearBufferfv", nullptr, GLClearBufferfv, nullptr, nullptr, nullptr, napi_default, nullptr},
7982         {"gLClearBufferiv", nullptr, GLClearBufferiv, nullptr, nullptr, nullptr, napi_default, nullptr},
7983         {"gLClearBufferuiv", nullptr, GLClearBufferuiv, nullptr, nullptr, nullptr, napi_default, nullptr},
7984         {"gLClearColor", nullptr, GLClearColor, nullptr, nullptr, nullptr, napi_default, nullptr},
7985         {"gLClearDepthf", nullptr, GLClearDepthf, nullptr, nullptr, nullptr, napi_default, nullptr},
7986         {"gLClearStencil", nullptr, GLClearStencil, nullptr, nullptr, nullptr, napi_default, nullptr},
7987         {"gLClientWaitSync", nullptr, GLClientWaitSync, nullptr, nullptr, nullptr, napi_default, nullptr},
7988         {"gLColorMask", nullptr, GLColorMask, nullptr, nullptr, nullptr, napi_default, nullptr},
7989         {"gLColorMaski", nullptr, GLColorMaski, nullptr, nullptr, nullptr, napi_default, nullptr},
7990         {"gLCompileShader", nullptr, GLCompileShader, nullptr, nullptr, nullptr, napi_default, nullptr},
7991         {"gLCompressedTexImage2D", nullptr, GLCompressedTexImage2D, nullptr, nullptr, nullptr, napi_default, nullptr},
7992         {"gLCompressedTexImage3D", nullptr, GLCompressedTexImage3D, nullptr, nullptr, nullptr, napi_default, nullptr},
7993         {"gLCompressedTexSubImage2D", nullptr, GLCompressedTexSubImage2D, nullptr, nullptr, nullptr, napi_default,
7994          nullptr},
7995         {"gLCompressedTexSubImage3D", nullptr, GLCompressedTexSubImage3D, nullptr, nullptr, nullptr, napi_default,
7996          nullptr},
7997         {"gLCopyBufferSubData", nullptr, GLCopyBufferSubData, nullptr, nullptr, nullptr, napi_default, nullptr},
7998         {"gLCopyImageSubData", nullptr, GLCopyImageSubData, nullptr, nullptr, nullptr, napi_default, nullptr},
7999         {"gLCopyTexImage2D", nullptr, GLCopyTexImage2D, nullptr, nullptr, nullptr, napi_default, nullptr},
8000         {"gLCopyTexSubImage2D", nullptr, GLCopyTexSubImage2D, nullptr, nullptr, nullptr, napi_default, nullptr},
8001         {"gLCopyTexSubImage3D", nullptr, GLCopyTexSubImage3D, nullptr, nullptr, nullptr, napi_default, nullptr},
8002         {"gLCreateProgram", nullptr, GLCreateProgram, nullptr, nullptr, nullptr, napi_default, nullptr},
8003         {"gLCreateShader", nullptr, GLCreateShader, nullptr, nullptr, nullptr, napi_default, nullptr},
8004         {"gLCreateShaderProgramv", nullptr, GLCreateShaderProgramv, nullptr, nullptr, nullptr, napi_default, nullptr},
8005         {"gLCullFace", nullptr, GLCullFace, nullptr, nullptr, nullptr, napi_default, nullptr},
8006         {"gLDebugMessageCallback", nullptr, GLDebugMessageCallback, nullptr, nullptr, nullptr, napi_default, nullptr},
8007         {"gLDebugMessageControl", nullptr, GLDebugMessageControl, nullptr, nullptr, nullptr, napi_default, nullptr},
8008         {"gLDebugMessageInsert", nullptr, GLDebugMessageInsert, nullptr, nullptr, nullptr, napi_default, nullptr},
8009         {"gLDeleteBuffers", nullptr, GLDeleteBuffers, nullptr, nullptr, nullptr, napi_default, nullptr},
8010         {"gLDeleteFramebuffers", nullptr, GLDeleteFramebuffers, nullptr, nullptr, nullptr, napi_default, nullptr},
8011         {"gLDeleteProgram", nullptr, GLDeleteProgram, nullptr, nullptr, nullptr, napi_default, nullptr},
8012         {"gLDeleteProgramPipelines", nullptr, GLDeleteProgramPipelines, nullptr, nullptr, nullptr, napi_default,
8013          nullptr},
8014         {"gLDeleteQueries", nullptr, GLDeleteQueries, nullptr, nullptr, nullptr, napi_default, nullptr},
8015         {"gLDeleteRenderbuffers", nullptr, GLDeleteRenderbuffers, nullptr, nullptr, nullptr, napi_default, nullptr},
8016         {"gLDeleteSamplers", nullptr, GLDeleteSamplers, nullptr, nullptr, nullptr, napi_default, nullptr},
8017         {"gLDeleteShader", nullptr, GLDeleteShader, nullptr, nullptr, nullptr, napi_default, nullptr},
8018         {"gLDeleteSync", nullptr, GLDeleteSync, nullptr, nullptr, nullptr, napi_default, nullptr},
8019         {"gLDeleteTextures", nullptr, GLDeleteTextures, nullptr, nullptr, nullptr, napi_default, nullptr},
8020         {"gLDeleteTransformFeedbacks", nullptr, GLDeleteTransformFeedbacks, nullptr, nullptr, nullptr, napi_default,
8021          nullptr},
8022         {"gLDeleteVertexArrays", nullptr, GLDeleteVertexArrays, nullptr, nullptr, nullptr, napi_default, nullptr},
8023         {"gLDepthFunc", nullptr, GLDepthFunc, nullptr, nullptr, nullptr, napi_default, nullptr},
8024         {"gLDepthMask", nullptr, GLDepthMask, nullptr, nullptr, nullptr, napi_default, nullptr},
8025         {"gLDepthRangef", nullptr, GLDepthRangef, nullptr, nullptr, nullptr, napi_default, nullptr},
8026         {"gLDetachShader", nullptr, GLDetachShader, nullptr, nullptr, nullptr, napi_default, nullptr},
8027         {"gLDisable", nullptr, GLDisable, nullptr, nullptr, nullptr, napi_default, nullptr},
8028         {"gLDisablei", nullptr, GLDisablei, nullptr, nullptr, nullptr, napi_default, nullptr},
8029         {"gLDisableVertexAttribArray", nullptr, GLDisableVertexAttribArray, nullptr, nullptr, nullptr, napi_default,
8030          nullptr},
8031         {"gLDispatchCompute", nullptr, GLDispatchCompute, nullptr, nullptr, nullptr, napi_default, nullptr},
8032         {"gLDispatchComputeIndirect", nullptr, GLDispatchComputeIndirect, nullptr, nullptr, nullptr, napi_default,
8033          nullptr},
8034         {"gLDrawArrays", nullptr, GLDrawArrays, nullptr, nullptr, nullptr, napi_default, nullptr},
8035         {"gLDrawArraysIndirect", nullptr, GLDrawArraysIndirect, nullptr, nullptr, nullptr, napi_default, nullptr},
8036         {"gLDrawArraysInstanced", nullptr, GLDrawArraysInstanced, nullptr, nullptr, nullptr, napi_default, nullptr},
8037         {"gLDrawBuffers", nullptr, GLDrawBuffers, nullptr, nullptr, nullptr, napi_default, nullptr},
8038         {"gLDrawElements", nullptr, GLDrawElements, nullptr, nullptr, nullptr, napi_default, nullptr},
8039         {"gLDrawElementsBaseVertex", nullptr, GLDrawElementsBaseVertex, nullptr, nullptr, nullptr, napi_default,
8040          nullptr},
8041         {"gLDrawElementsIndirect", nullptr, GLDrawElementsIndirect, nullptr, nullptr, nullptr, napi_default, nullptr},
8042         {"gLDrawElementsInstanced", nullptr, GLDrawElementsInstanced, nullptr, nullptr, nullptr, napi_default, nullptr},
8043         {"gLDrawElementsInstancedBaseVertex", nullptr, GLDrawElementsInstancedBaseVertex, nullptr, nullptr, nullptr,
8044          napi_default, nullptr},
8045         {"gLDrawRangeElements", nullptr, GLDrawRangeElements, nullptr, nullptr, nullptr, napi_default, nullptr},
8046         {"gLDrawRangeElementsBaseVertex", nullptr, GLDrawRangeElementsBaseVertex, nullptr, nullptr, nullptr,
8047          napi_default, nullptr},
8048         {"gLEnable", nullptr, GLEnable, nullptr, nullptr, nullptr, napi_default, nullptr},
8049         {"gLEnablei", nullptr, GLEnablei, nullptr, nullptr, nullptr, napi_default, nullptr},
8050         {"gLEnableVertexAttribArray", nullptr, GLEnableVertexAttribArray, nullptr, nullptr, nullptr, napi_default,
8051          nullptr},
8052         {"gLEndQuery", nullptr, GLEndQuery, nullptr, nullptr, nullptr, napi_default, nullptr},
8053         {"gLEndTransformFeedback", nullptr, GLEndTransformFeedback, nullptr, nullptr, nullptr, napi_default, nullptr},
8054         {"gLFenceSync", nullptr, GLFenceSync, nullptr, nullptr, nullptr, napi_default, nullptr},
8055         {"gLFinish", nullptr, GLFinish, nullptr, nullptr, nullptr, napi_default, nullptr},
8056         {"gLFlush", nullptr, GLFlush, nullptr, nullptr, nullptr, napi_default, nullptr},
8057         {"gLFlushMappedBufferRange", nullptr, GLFlushMappedBufferRange, nullptr, nullptr, nullptr, napi_default,
8058          nullptr},
8059         {"gLFramebufferParameteri", nullptr, GLFramebufferParameteri, nullptr, nullptr, nullptr, napi_default, nullptr},
8060         {"gLFramebufferRenderbuffer", nullptr, GLFramebufferRenderbuffer, nullptr, nullptr, nullptr, napi_default,
8061          nullptr},
8062         {"gLFramebufferTexture", nullptr, GLFramebufferTexture, nullptr, nullptr, nullptr, napi_default, nullptr},
8063         {"gLFramebufferTexture2D", nullptr, GLFramebufferTexture2D, nullptr, nullptr, nullptr, napi_default, nullptr},
8064         {"gLFramebufferTextureLayer", nullptr, GLFramebufferTextureLayer, nullptr, nullptr, nullptr, napi_default,
8065          nullptr},
8066         {"gLFrontFace", nullptr, GLFrontFace, nullptr, nullptr, nullptr, napi_default, nullptr},
8067         {"gLGenBuffers", nullptr, GLGenBuffers, nullptr, nullptr, nullptr, napi_default, nullptr},
8068         {"gLGenerateMipmap", nullptr, GLGenerateMipmap, nullptr, nullptr, nullptr, napi_default, nullptr},
8069         {"gLGenFramebuffers", nullptr, GLGenFramebuffers, nullptr, nullptr, nullptr, napi_default, nullptr},
8070         {"gLGenProgramPipelines", nullptr, GLGenProgramPipelines, nullptr, nullptr, nullptr, napi_default, nullptr},
8071         {"gLGenQueries", nullptr, GLGenQueries, nullptr, nullptr, nullptr, napi_default, nullptr},
8072         {"gLGenRenderbuffers", nullptr, GLGenRenderbuffers, nullptr, nullptr, nullptr, napi_default, nullptr},
8073         {"gLGenSamplers", nullptr, GLGenSamplers, nullptr, nullptr, nullptr, napi_default, nullptr},
8074         {"gLGenTextures", nullptr, GLGenTextures, nullptr, nullptr, nullptr, napi_default, nullptr},
8075         {"gLGenTransformFeedbacks", nullptr, GLGenTransformFeedbacks, nullptr, nullptr, nullptr, napi_default, nullptr},
8076         {"gLGenVertexArrays", nullptr, GLGenVertexArrays, nullptr, nullptr, nullptr, napi_default, nullptr},
8077         {"gLGetActiveAttrib", nullptr, GLGetActiveAttrib, nullptr, nullptr, nullptr, napi_default, nullptr},
8078         {"gLGetActiveUniform", nullptr, GLGetActiveUniform, nullptr, nullptr, nullptr, napi_default, nullptr},
8079         {"gLGetActiveUniformBlockiv", nullptr, GLGetActiveUniformBlockiv, nullptr, nullptr, nullptr, napi_default,
8080          nullptr},
8081         {"gLGetActiveUniformBlockName", nullptr, GLGetActiveUniformBlockName, nullptr, nullptr, nullptr, napi_default,
8082          nullptr},
8083         {"gLGetActiveUniformsiv", nullptr, GLGetActiveUniformsiv, nullptr, nullptr, nullptr, napi_default, nullptr},
8084         {"gLGetAttachedShaders", nullptr, GLGetAttachedShaders, nullptr, nullptr, nullptr, napi_default, nullptr},
8085         {"gLGetAttribLocation", nullptr, GLGetAttribLocation, nullptr, nullptr, nullptr, napi_default, nullptr},
8086         {"gLGetBooleani_v", nullptr, GLGetBooleani_v, nullptr, nullptr, nullptr, napi_default, nullptr},
8087         {"gLGetBooleanv", nullptr, GLGetBooleanv, nullptr, nullptr, nullptr, napi_default, nullptr},
8088         {"gLGetBufferParameteri64v", nullptr, GLGetBufferParameteri64v, nullptr, nullptr, nullptr, napi_default,
8089          nullptr},
8090         {"gLGetBufferParameteriv", nullptr, GLGetBufferParameteriv, nullptr, nullptr, nullptr, napi_default, nullptr},
8091         {"gLGetBufferPointerv", nullptr, GLGetBufferPointerv, nullptr, nullptr, nullptr, napi_default, nullptr},
8092         {"gLGetDebugMessageLog", nullptr, GLGetDebugMessageLog, nullptr, nullptr, nullptr, napi_default, nullptr},
8093         {"gLGetError", nullptr, GLGetError, nullptr, nullptr, nullptr, napi_default, nullptr},
8094         {"gLGetFloatv", nullptr, GLGetFloatv, nullptr, nullptr, nullptr, napi_default, nullptr},
8095         {"gLGetFragDataLocation", nullptr, GLGetFragDataLocation, nullptr, nullptr, nullptr, napi_default, nullptr},
8096         {"gLGetFramebufferAttachmentParameteriv", nullptr, GLGetFramebufferAttachmentParameteriv, nullptr, nullptr,
8097          nullptr, napi_default, nullptr},
8098         {"gLGetFramebufferParameteriv", nullptr, GLGetFramebufferParameteriv, nullptr, nullptr, nullptr, napi_default,
8099          nullptr},
8100         {"gLGetGraphicsResetStatus", nullptr, GLGetGraphicsResetStatus, nullptr, nullptr, nullptr, napi_default,
8101          nullptr},
8102         {"gLGetInteger64i_v", nullptr, GLGetInteger64i_v, nullptr, nullptr, nullptr, napi_default, nullptr},
8103         {"gLGetInteger64v", nullptr, GLGetInteger64v, nullptr, nullptr, nullptr, napi_default, nullptr},
8104         {"gLGetIntegeri_v", nullptr, GLGetIntegeri_v, nullptr, nullptr, nullptr, napi_default, nullptr},
8105         {"gLGetIntegerv", nullptr, GLGetIntegerv, nullptr, nullptr, nullptr, napi_default, nullptr},
8106         {"gLGetInternalformativ", nullptr, GLGetInternalformativ, nullptr, nullptr, nullptr, napi_default, nullptr},
8107         {"gLGetMultisamplefv", nullptr, GLGetMultisamplefv, nullptr, nullptr, nullptr, napi_default, nullptr},
8108         {"gLGetnUniformfv", nullptr, GLGetnUniformfv, nullptr, nullptr, nullptr, napi_default, nullptr},
8109         {"gLGetnUniformiv", nullptr, GLGetnUniformiv, nullptr, nullptr, nullptr, napi_default, nullptr},
8110         {"gLGetnUniformuiv", nullptr, GLGetnUniformuiv, nullptr, nullptr, nullptr, napi_default, nullptr},
8111         {"gLGetObjectLabel", nullptr, GLGetObjectLabel, nullptr, nullptr, nullptr, napi_default, nullptr},
8112         {"gLGetObjectPtrLabel", nullptr, GLGetObjectPtrLabel, nullptr, nullptr, nullptr, napi_default, nullptr},
8113         {"gLGetPointerv", nullptr, GLGetPointerv, nullptr, nullptr, nullptr, napi_default, nullptr},
8114         {"gLGetProgramBinary", nullptr, GLGetProgramBinary, nullptr, nullptr, nullptr, napi_default, nullptr},
8115         {"gLGetProgramInfoLog", nullptr, GLGetProgramInfoLog, nullptr, nullptr, nullptr, napi_default, nullptr},
8116         {"gLGetProgramInterfaceiv", nullptr, GLGetProgramInterfaceiv, nullptr, nullptr, nullptr, napi_default, nullptr},
8117         {"gLGetProgramiv", nullptr, GLGetProgramiv, nullptr, nullptr, nullptr, napi_default, nullptr},
8118         {"gLGetProgramPipelineInfoLog", nullptr, GLGetProgramPipelineInfoLog, nullptr, nullptr, nullptr, napi_default,
8119          nullptr},
8120         {"gLGetProgramPipelineiv", nullptr, GLGetProgramPipelineiv, nullptr, nullptr, nullptr, napi_default, nullptr},
8121         {"gLGetProgramResourceIndex", nullptr, GLGetProgramResourceIndex, nullptr, nullptr, nullptr, napi_default,
8122          nullptr},
8123         {"gLGetProgramResourceiv", nullptr, GLGetProgramResourceiv, nullptr, nullptr, nullptr, napi_default, nullptr},
8124         {"gLGetProgramResourceLocation", nullptr, GLGetProgramResourceLocation, nullptr, nullptr, nullptr, napi_default,
8125          nullptr},
8126         {"gLGetProgramResourceName", nullptr, GLGetProgramResourceName, nullptr, nullptr, nullptr, napi_default,
8127          nullptr},
8128         {"gLGetQueryiv", nullptr, GLGetQueryiv, nullptr, nullptr, nullptr, napi_default, nullptr},
8129         {"gLGetQueryObjectuiv", nullptr, GLGetQueryObjectuiv, nullptr, nullptr, nullptr, napi_default, nullptr},
8130         {"gLGetRenderbufferParameteriv", nullptr, GLGetRenderbufferParameteriv, nullptr, nullptr, nullptr, napi_default,
8131          nullptr},
8132         {"gLGetSamplerParameterfv", nullptr, GLGetSamplerParameterfv, nullptr, nullptr, nullptr, napi_default, nullptr},
8133         {"gLGetSamplerParameterIiv", nullptr, GLGetSamplerParameterIiv, nullptr, nullptr, nullptr, napi_default,
8134          nullptr},
8135         {"gLGetSamplerParameterIuiv", nullptr, GLGetSamplerParameterIuiv, nullptr, nullptr, nullptr, napi_default,
8136          nullptr},
8137         {"gLGetSamplerParameteriv", nullptr, GLGetSamplerParameteriv, nullptr, nullptr, nullptr, napi_default, nullptr},
8138 
8139         {"gLGetShaderInfoLog", nullptr, GLGetShaderInfoLog, nullptr, nullptr, nullptr, napi_default, nullptr},
8140         {"gLGetShaderiv", nullptr, GLGetShaderiv, nullptr, nullptr, nullptr, napi_default, nullptr},
8141         {"gLGetShaderPrecisionFormat", nullptr, GLGetShaderPrecisionFormat, nullptr, nullptr, nullptr, napi_default,
8142          nullptr},
8143         {"gLGetShaderSource", nullptr, GLGetShaderSource, nullptr, nullptr, nullptr, napi_default, nullptr},
8144         {"gLGetString", nullptr, GLGetString, nullptr, nullptr, nullptr, napi_default, nullptr},
8145         {"gLGetStringi", nullptr, GLGetStringi, nullptr, nullptr, nullptr, napi_default, nullptr},
8146         {"gLGetSynciv", nullptr, GLGetSynciv, nullptr, nullptr, nullptr, napi_default, nullptr},
8147         {"gLGetTexLevelParameterfv", nullptr, GLGetTexLevelParameterfv, nullptr, nullptr, nullptr, napi_default,
8148          nullptr},
8149         {"gLGetTexLevelParameteriv", nullptr, GLGetTexLevelParameteriv, nullptr, nullptr, nullptr, napi_default,
8150          nullptr},
8151         {"gLGetTexParameterfv", nullptr, GLGetTexParameterfv, nullptr, nullptr, nullptr, napi_default, nullptr},
8152         {"gLGetTexParameterIiv", nullptr, GLGetTexParameterIiv, nullptr, nullptr, nullptr, napi_default, nullptr},
8153         {"gLGetTexParameterIuiv", nullptr, GLGetTexParameterIuiv, nullptr, nullptr, nullptr, napi_default, nullptr},
8154         {"gLGetTexParameteriv", nullptr, GLGetTexParameteriv, nullptr, nullptr, nullptr, napi_default, nullptr},
8155         {"gLGetTransformFeedbackVarying", nullptr, GLGetTransformFeedbackVarying, nullptr, nullptr, nullptr,
8156          napi_default, nullptr},
8157         {"gLGetUniformBlockIndex", nullptr, GLGetUniformBlockIndex, nullptr, nullptr, nullptr, napi_default, nullptr},
8158         {"gLGetUniformfv", nullptr, GLGetUniformfv, nullptr, nullptr, nullptr, napi_default, nullptr},
8159         {"gLGetUniformIndices", nullptr, GLGetUniformIndices, nullptr, nullptr, nullptr, napi_default, nullptr},
8160         {"gLGetUniformiv", nullptr, GLGetUniformiv, nullptr, nullptr, nullptr, napi_default, nullptr},
8161         {"gLGetUniformLocation", nullptr, GLGetUniformLocation, nullptr, nullptr, nullptr, napi_default, nullptr},
8162         {"gLGetUniformuiv", nullptr, GLGetUniformuiv, nullptr, nullptr, nullptr, napi_default, nullptr},
8163         {"gLGetVertexAttribfv", nullptr, GLGetVertexAttribfv, nullptr, nullptr, nullptr, napi_default, nullptr},
8164         {"gLGetVertexAttribIiv", nullptr, GLGetVertexAttribIiv, nullptr, nullptr, nullptr, napi_default, nullptr},
8165         {"gLGetVertexAttribIuiv", nullptr, GLGetVertexAttribIuiv, nullptr, nullptr, nullptr, napi_default, nullptr},
8166         {"gLGetVertexAttribiv", nullptr, GLGetVertexAttribiv, nullptr, nullptr, nullptr, napi_default, nullptr},
8167         {"gLGetVertexAttribPointerv", nullptr, GLGetVertexAttribPointerv, nullptr, nullptr, nullptr, napi_default,
8168          nullptr},
8169         {"gLHint", nullptr, GLHint, nullptr, nullptr, nullptr, napi_default, nullptr},
8170         {"gLInvalidateFramebuffer", nullptr, GLInvalidateFramebuffer, nullptr, nullptr, nullptr, napi_default, nullptr},
8171         {"gLInvalidateSubFramebuffer", nullptr, GLInvalidateSubFramebuffer, nullptr, nullptr, nullptr, napi_default,
8172          nullptr},
8173         {"gLIsBuffer", nullptr, GLIsBuffer, nullptr, nullptr, nullptr, napi_default, nullptr},
8174         {"gLIsEnabled", nullptr, GLIsEnabled, nullptr, nullptr, nullptr, napi_default, nullptr},
8175         {"gLIsEnabledi", nullptr, GLIsEnabledi, nullptr, nullptr, nullptr, napi_default, nullptr},
8176         {"gLIsFramebuffer", nullptr, GLIsFramebuffer, nullptr, nullptr, nullptr, napi_default, nullptr},
8177         {"gLIsProgram", nullptr, GLIsProgram, nullptr, nullptr, nullptr, napi_default, nullptr},
8178         {"gLIsProgramPipeline", nullptr, GLIsProgramPipeline, nullptr, nullptr, nullptr, napi_default, nullptr},
8179         {"gLIsQuery", nullptr, GLIsQuery, nullptr, nullptr, nullptr, napi_default, nullptr},
8180         {"gLIsRenderbuffer", nullptr, GLIsRenderbuffer, nullptr, nullptr, nullptr, napi_default, nullptr},
8181         {"gLIsSampler", nullptr, GLIsSampler, nullptr, nullptr, nullptr, napi_default, nullptr},
8182         {"gLIsShader", nullptr, GLIsShader, nullptr, nullptr, nullptr, napi_default, nullptr},
8183         {"gLIsSync", nullptr, GLIsSync, nullptr, nullptr, nullptr, napi_default, nullptr},
8184         {"gLIsTexture", nullptr, GLIsTexture, nullptr, nullptr, nullptr, napi_default, nullptr},
8185         {"gLIsTransformFeedback", nullptr, GLIsTransformFeedback, nullptr, nullptr, nullptr, napi_default, nullptr},
8186         {"gLIsVertexArray", nullptr, GLIsVertexArray, nullptr, nullptr, nullptr, napi_default, nullptr},
8187         {"gLLineWidth", nullptr, GLLineWidth, nullptr, nullptr, nullptr, napi_default, nullptr},
8188         {"gLLinkProgram", nullptr, GLLinkProgram, nullptr, nullptr, nullptr, napi_default, nullptr},
8189         {"gLMapBufferRange", nullptr, GLMapBufferRange, nullptr, nullptr, nullptr, napi_default, nullptr},
8190         {"gLMemoryBarrier", nullptr, GLMemoryBarrier, nullptr, nullptr, nullptr, napi_default, nullptr},
8191         {"gLMemoryBarrierByRegion", nullptr, GLMemoryBarrierByRegion, nullptr, nullptr, nullptr, napi_default, nullptr},
8192         {"gLMinSampleShading", nullptr, GLMinSampleShading, nullptr, nullptr, nullptr, napi_default, nullptr},
8193         {"gLObjectLabel", nullptr, GLObjectLabel, nullptr, nullptr, nullptr, napi_default, nullptr},
8194         {"gLObjectPtrLabel", nullptr, GLObjectPtrLabel, nullptr, nullptr, nullptr, napi_default, nullptr},
8195         {"gLPatchParameteri", nullptr, GLPatchParameteri, nullptr, nullptr, nullptr, napi_default, nullptr},
8196         {"gLPauseTransformFeedback", nullptr, GLPauseTransformFeedback, nullptr, nullptr, nullptr, napi_default,
8197          nullptr},
8198         {"gLPixelStorei", nullptr, GLPixelStorei, nullptr, nullptr, nullptr, napi_default, nullptr},
8199         {"gLPolygonOffset", nullptr, GLPolygonOffset, nullptr, nullptr, nullptr, napi_default, nullptr},
8200         {"gLPopDebugGroup", nullptr, GLPopDebugGroup, nullptr, nullptr, nullptr, napi_default, nullptr},
8201 
8202         {"gLPrimitiveBoundingBox", nullptr, GLPrimitiveBoundingBox, nullptr, nullptr, nullptr, napi_default, nullptr},
8203         {"gLProgramBinary", nullptr, GLProgramBinary, nullptr, nullptr, nullptr, napi_default, nullptr},
8204         {"gLProgramParameteri", nullptr, GLProgramParameteri, nullptr, nullptr, nullptr, napi_default, nullptr},
8205         {"gLProgramUniform1f", nullptr, GLProgramUniform1f, nullptr, nullptr, nullptr, napi_default, nullptr},
8206         {"gLProgramUniform1fv", nullptr, GLProgramUniform1fv, nullptr, nullptr, nullptr, napi_default, nullptr},
8207         {"gLProgramUniform1i", nullptr, GLProgramUniform1i, nullptr, nullptr, nullptr, napi_default, nullptr},
8208         {"gLProgramUniform1iv", nullptr, GLProgramUniform1iv, nullptr, nullptr, nullptr, napi_default, nullptr},
8209         {"gLProgramUniform1ui", nullptr, GLProgramUniform1ui, nullptr, nullptr, nullptr, napi_default, nullptr},
8210         {"gLProgramUniform1uiv", nullptr, GLProgramUniform1uiv, nullptr, nullptr, nullptr, napi_default, nullptr},
8211         {"gLProgramUniform2f", nullptr, GLProgramUniform2f, nullptr, nullptr, nullptr, napi_default, nullptr},
8212         {"gLProgramUniform2fv", nullptr, GLProgramUniform2fv, nullptr, nullptr, nullptr, napi_default, nullptr},
8213         {"gLProgramUniform2i", nullptr, GLProgramUniform2i, nullptr, nullptr, nullptr, napi_default, nullptr},
8214         {"gLProgramUniform2iv", nullptr, GLProgramUniform2iv, nullptr, nullptr, nullptr, napi_default, nullptr},
8215         {"gLProgramUniform2ui", nullptr, GLProgramUniform2ui, nullptr, nullptr, nullptr, napi_default, nullptr},
8216         {"gLProgramUniform2uiv", nullptr, GLProgramUniform2uiv, nullptr, nullptr, nullptr, napi_default, nullptr},
8217         {"gLProgramUniform3f", nullptr, GLProgramUniform3f, nullptr, nullptr, nullptr, napi_default, nullptr},
8218         {"gLProgramUniform3fv", nullptr, GLProgramUniform3fv, nullptr, nullptr, nullptr, napi_default, nullptr},
8219         {"gLProgramUniform3i", nullptr, GLProgramUniform3i, nullptr, nullptr, nullptr, napi_default, nullptr},
8220         {"gLProgramUniform3iv", nullptr, GLProgramUniform3iv, nullptr, nullptr, nullptr, napi_default, nullptr},
8221         {"gLProgramUniform3ui", nullptr, GLProgramUniform3ui, nullptr, nullptr, nullptr, napi_default, nullptr},
8222         {"gLProgramUniform3uiv", nullptr, GLProgramUniform3uiv, nullptr, nullptr, nullptr, napi_default, nullptr},
8223         {"gLProgramUniform4f", nullptr, GLProgramUniform4f, nullptr, nullptr, nullptr, napi_default, nullptr},
8224         {"gLProgramUniform4fv", nullptr, GLProgramUniform4fv, nullptr, nullptr, nullptr, napi_default, nullptr},
8225         {"gLProgramUniform4i", nullptr, GLProgramUniform4i, nullptr, nullptr, nullptr, napi_default, nullptr},
8226         {"gLProgramUniform4iv", nullptr, GLProgramUniform4iv, nullptr, nullptr, nullptr, napi_default, nullptr},
8227         {"gLProgramUniform4ui", nullptr, GLProgramUniform4ui, nullptr, nullptr, nullptr, napi_default, nullptr},
8228         {"gLProgramUniform4uiv", nullptr, GLProgramUniform4uiv, nullptr, nullptr, nullptr, napi_default, nullptr},
8229         {"gLProgramUniformMatrix2fv", nullptr, GLProgramUniformMatrix2fv, nullptr, nullptr, nullptr, napi_default,
8230          nullptr},
8231         {"gLProgramUniformMatrix2x3fv", nullptr, GLProgramUniformMatrix2x3fv, nullptr, nullptr, nullptr, napi_default,
8232          nullptr},
8233         {"gLProgramUniformMatrix2x4fv", nullptr, GLProgramUniformMatrix2x4fv, nullptr, nullptr, nullptr, napi_default,
8234          nullptr},
8235         {"gLProgramUniformMatrix3fv", nullptr, GLProgramUniformMatrix3fv, nullptr, nullptr, nullptr, napi_default,
8236          nullptr},
8237         {"gLProgramUniformMatrix3x2fv", nullptr, GLProgramUniformMatrix3x2fv, nullptr, nullptr, nullptr, napi_default,
8238          nullptr},
8239         {"gLProgramUniformMatrix3x4fv", nullptr, GLProgramUniformMatrix3x4fv, nullptr, nullptr, nullptr, napi_default,
8240          nullptr},
8241         {"gLProgramUniformMatrix4fv", nullptr, GLProgramUniformMatrix4fv, nullptr, nullptr, nullptr, napi_default,
8242          nullptr},
8243         {"gLProgramUniformMatrix4x2fv", nullptr, GLProgramUniformMatrix4x2fv, nullptr, nullptr, nullptr, napi_default,
8244          nullptr},
8245         {"gLProgramUniformMatrix4x3fv", nullptr, GLProgramUniformMatrix4x3fv, nullptr, nullptr, nullptr, napi_default,
8246          nullptr},
8247         {"gLPushDebugGroup", nullptr, GLPushDebugGroup, nullptr, nullptr, nullptr, napi_default, nullptr},
8248         {"gLReadBuffer", nullptr, GLReadBuffer, nullptr, nullptr, nullptr, napi_default, nullptr},
8249         {"gLReadnPixels", nullptr, GLReadnPixels, nullptr, nullptr, nullptr, napi_default, nullptr},
8250         {"gLReadPixels", nullptr, GLReadPixels, nullptr, nullptr, nullptr, napi_default, nullptr},
8251         {"gLReleaseShaderCompiler", nullptr, GLReleaseShaderCompiler, nullptr, nullptr, nullptr, napi_default, nullptr},
8252         {"gLRenderbufferStorage", nullptr, GLRenderbufferStorage, nullptr, nullptr, nullptr, napi_default, nullptr},
8253         {"gLRenderbufferStorageMultisample", nullptr, GLRenderbufferStorageMultisample, nullptr, nullptr, nullptr,
8254          napi_default, nullptr},
8255         {"gLResumeTransformFeedback", nullptr, GLResumeTransformFeedback, nullptr, nullptr, nullptr, napi_default,
8256          nullptr},
8257         {"gLSampleCoverage", nullptr, GLSampleCoverage, nullptr, nullptr, nullptr, napi_default, nullptr},
8258         {"gLSampleMaski", nullptr, GLSampleMaski, nullptr, nullptr, nullptr, napi_default, nullptr},
8259         {"gLSamplerParameterf", nullptr, GLSamplerParameterf, nullptr, nullptr, nullptr, napi_default, nullptr},
8260         {"gLSamplerParameterfv", nullptr, GLSamplerParameterfv, nullptr, nullptr, nullptr, napi_default, nullptr},
8261         {"gLSamplerParameteri", nullptr, GLSamplerParameteri, nullptr, nullptr, nullptr, napi_default, nullptr},
8262         {"gLSamplerParameterIiv", nullptr, GLSamplerParameterIiv, nullptr, nullptr, nullptr, napi_default, nullptr},
8263         {"gLSamplerParameterIuiv", nullptr, GLSamplerParameterIuiv, nullptr, nullptr, nullptr, napi_default, nullptr},
8264         {"gLSamplerParameteriv", nullptr, GLSamplerParameteriv, nullptr, nullptr, nullptr, napi_default, nullptr},
8265         {"gLScissor", nullptr, GLScissor, nullptr, nullptr, nullptr, napi_default, nullptr},
8266         {"gLShaderBinary", nullptr, GLShaderBinary, nullptr, nullptr, nullptr, napi_default, nullptr},
8267         {"gLShaderSource", nullptr, GLShaderSource, nullptr, nullptr, nullptr, napi_default, nullptr},
8268         {"gLStencilFunc", nullptr, GLStencilFunc, nullptr, nullptr, nullptr, napi_default, nullptr},
8269         {"gLStencilFuncSeparate", nullptr, GLStencilFuncSeparate, nullptr, nullptr, nullptr, napi_default, nullptr},
8270         {"gLStencilMask", nullptr, GLStencilMask, nullptr, nullptr, nullptr, napi_default, nullptr},
8271         {"gLStencilMaskSeparate", nullptr, GLStencilMaskSeparate, nullptr, nullptr, nullptr, napi_default, nullptr},
8272         {"gLStencilOp", nullptr, GLStencilOp, nullptr, nullptr, nullptr, napi_default, nullptr},
8273         {"gLStencilOpSeparate", nullptr, GLStencilOpSeparate, nullptr, nullptr, nullptr, napi_default, nullptr},
8274         {"gLTexBuffer", nullptr, GLTexBuffer, nullptr, nullptr, nullptr, napi_default, nullptr},
8275         {"gLTexBufferRange", nullptr, GLTexBufferRange, nullptr, nullptr, nullptr, napi_default, nullptr},
8276         {"gLTexImage2D", nullptr, GLTexImage2D, nullptr, nullptr, nullptr, napi_default, nullptr},
8277         {"gLTexImage3D", nullptr, GLTexImage3D, nullptr, nullptr, nullptr, napi_default, nullptr},
8278         {"gLTexParameterf", nullptr, GLTexParameterf, nullptr, nullptr, nullptr, napi_default, nullptr},
8279         {"gLTexParameterfv", nullptr, GLTexParameterfv, nullptr, nullptr, nullptr, napi_default, nullptr},
8280         {"gLTexParameteri", nullptr, GLTexParameteri, nullptr, nullptr, nullptr, napi_default, nullptr},
8281         {"gLTexParameterIiv", nullptr, GLTexParameterIiv, nullptr, nullptr, nullptr, napi_default, nullptr},
8282         {"gLTexParameterIuiv", nullptr, GLTexParameterIuiv, nullptr, nullptr, nullptr, napi_default, nullptr},
8283         {"gLTexParameteriv", nullptr, GLTexParameteriv, nullptr, nullptr, nullptr, napi_default, nullptr},
8284         {"gLTexStorage2D", nullptr, GLTexStorage2D, nullptr, nullptr, nullptr, napi_default, nullptr},
8285         {"gLTexStorage2DMultisample", nullptr, GLTexStorage2DMultisample, nullptr, nullptr, nullptr, napi_default,
8286          nullptr},
8287         {"gLTexStorage3D", nullptr, GLTexStorage3D, nullptr, nullptr, nullptr, napi_default, nullptr},
8288         {"gLTexStorage3DMultisample", nullptr, GLTexStorage3DMultisample, nullptr, nullptr, nullptr, napi_default,
8289          nullptr},
8290         {"gLTexSubImage2D", nullptr, GLTexSubImage2D, nullptr, nullptr, nullptr, napi_default, nullptr},
8291         {"gLTexSubImage3D", nullptr, GLTexSubImage3D, nullptr, nullptr, nullptr, napi_default, nullptr},
8292         {"gLTransformFeedbackVaryings", nullptr, GLTransformFeedbackVaryings, nullptr, nullptr, nullptr, napi_default,
8293          nullptr},
8294         {"gLUniform1f", nullptr, GLUniform1f, nullptr, nullptr, nullptr, napi_default, nullptr},
8295         {"gLUniform1fv", nullptr, GLUniform1fv, nullptr, nullptr, nullptr, napi_default, nullptr},
8296         {"gLUniform1i", nullptr, GLUniform1i, nullptr, nullptr, nullptr, napi_default, nullptr},
8297         {"gLUniform1iv", nullptr, GLUniform1iv, nullptr, nullptr, nullptr, napi_default, nullptr},
8298         {"gLUniform1ui", nullptr, GLUniform1ui, nullptr, nullptr, nullptr, napi_default, nullptr},
8299         {"gLUniform1uiv", nullptr, GLUniform1uiv, nullptr, nullptr, nullptr, napi_default, nullptr},
8300         {"gLUniform2f", nullptr, GLUniform2f, nullptr, nullptr, nullptr, napi_default, nullptr},
8301         {"gLUniform2fv", nullptr, GLUniform2fv, nullptr, nullptr, nullptr, napi_default, nullptr},
8302         {"gLUniform2i", nullptr, GLUniform2i, nullptr, nullptr, nullptr, napi_default, nullptr},
8303         {"gLUniform2iv", nullptr, GLUniform2iv, nullptr, nullptr, nullptr, napi_default, nullptr},
8304         {"gLUniform2ui", nullptr, GLUniform2ui, nullptr, nullptr, nullptr, napi_default, nullptr},
8305         {"gLUniform2uiv", nullptr, GLUniform2uiv, nullptr, nullptr, nullptr, napi_default, nullptr},
8306         {"gLUniform3f", nullptr, GLUniform3f, nullptr, nullptr, nullptr, napi_default, nullptr},
8307         {"gLUniform3fv", nullptr, GLUniform3fv, nullptr, nullptr, nullptr, napi_default, nullptr},
8308         {"gLUniform3i", nullptr, GLUniform3i, nullptr, nullptr, nullptr, napi_default, nullptr},
8309         {"gLUniform3iv", nullptr, GLUniform3iv, nullptr, nullptr, nullptr, napi_default, nullptr},
8310         {"gLUniform3ui", nullptr, GLUniform3ui, nullptr, nullptr, nullptr, napi_default, nullptr},
8311         {"gLUniform3uiv", nullptr, GLUniform3uiv, nullptr, nullptr, nullptr, napi_default, nullptr},
8312         {"gLUniform4f", nullptr, GLUniform4f, nullptr, nullptr, nullptr, napi_default, nullptr},
8313         {"gLUniform4fv", nullptr, GLUniform4fv, nullptr, nullptr, nullptr, napi_default, nullptr},
8314         {"gLUniform4i", nullptr, GLUniform4i, nullptr, nullptr, nullptr, napi_default, nullptr},
8315         {"gLUniform4iv", nullptr, GLUniform4iv, nullptr, nullptr, nullptr, napi_default, nullptr},
8316         {"gLUniform4ui", nullptr, GLUniform4ui, nullptr, nullptr, nullptr, napi_default, nullptr},
8317         {"gLUniform4uiv", nullptr, GLUniform4uiv, nullptr, nullptr, nullptr, napi_default, nullptr},
8318         {"gLUniformBlockBinding", nullptr, GLUniformBlockBinding, nullptr, nullptr, nullptr, napi_default, nullptr},
8319         {"gLUniformMatrix2fv", nullptr, GLUniformMatrix2fv, nullptr, nullptr, nullptr, napi_default, nullptr},
8320         {"gLUniformMatrix2x3fv", nullptr, GLUniformMatrix2x3fv, nullptr, nullptr, nullptr, napi_default, nullptr},
8321         {"gLUniformMatrix2x4fv", nullptr, GLUniformMatrix2x4fv, nullptr, nullptr, nullptr, napi_default, nullptr},
8322         {"gLUniformMatrix3fv", nullptr, GLUniformMatrix3fv, nullptr, nullptr, nullptr, napi_default, nullptr},
8323         {"gLUniformMatrix3x2fv", nullptr, GLUniformMatrix3x2fv, nullptr, nullptr, nullptr, napi_default, nullptr},
8324         {"gLUniformMatrix3x4fv", nullptr, GLUniformMatrix3x4fv, nullptr, nullptr, nullptr, napi_default, nullptr},
8325         {"gLUniformMatrix4fv", nullptr, GLUniformMatrix4fv, nullptr, nullptr, nullptr, napi_default, nullptr},
8326         {"gLUniformMatrix4x2fv", nullptr, GLUniformMatrix4x2fv, nullptr, nullptr, nullptr, napi_default, nullptr},
8327         {"gLUniformMatrix4x3fv", nullptr, GLUniformMatrix4x3fv, nullptr, nullptr, nullptr, napi_default, nullptr},
8328         {"gLUnmapBuffer", nullptr, GLUnmapBuffer, nullptr, nullptr, nullptr, napi_default, nullptr},
8329         {"gLUseProgram", nullptr, GLUseProgram, nullptr, nullptr, nullptr, napi_default, nullptr},
8330         {"gLUseProgramStages", nullptr, GLUseProgramStages, nullptr, nullptr, nullptr, napi_default, nullptr},
8331         {"gLValidateProgram", nullptr, GLValidateProgram, nullptr, nullptr, nullptr, napi_default, nullptr},
8332         {"gLValidateProgramPipeline", nullptr, GLValidateProgramPipeline, nullptr, nullptr, nullptr, napi_default,
8333          nullptr},
8334         {"gLVertexAttrib1f", nullptr, GLVertexAttrib1f, nullptr, nullptr, nullptr, napi_default, nullptr},
8335         {"gLVertexAttrib1fv", nullptr, GLVertexAttrib1fv, nullptr, nullptr, nullptr, napi_default, nullptr},
8336         {"gLVertexAttrib2f", nullptr, GLVertexAttrib2f, nullptr, nullptr, nullptr, napi_default, nullptr},
8337         {"gLVertexAttrib2fv", nullptr, GLVertexAttrib2fv, nullptr, nullptr, nullptr, napi_default, nullptr},
8338         {"gLVertexAttrib3f", nullptr, GLVertexAttrib3f, nullptr, nullptr, nullptr, napi_default, nullptr},
8339         {"gLVertexAttrib3fv", nullptr, GLVertexAttrib3fv, nullptr, nullptr, nullptr, napi_default, nullptr},
8340         {"gLVertexAttrib4f", nullptr, GLVertexAttrib4f, nullptr, nullptr, nullptr, napi_default, nullptr},
8341         {"gLVertexAttrib4fv", nullptr, GLVertexAttrib4fv, nullptr, nullptr, nullptr, napi_default, nullptr},
8342         {"gLVertexAttribBinding", nullptr, GLVertexAttribBinding, nullptr, nullptr, nullptr, napi_default, nullptr},
8343         {"gLVertexAttribDivisor", nullptr, GLVertexAttribDivisor, nullptr, nullptr, nullptr, napi_default, nullptr},
8344         {"gLVertexAttribFormat", nullptr, GLVertexAttribFormat, nullptr, nullptr, nullptr, napi_default, nullptr},
8345         {"gLVertexAttribI4i", nullptr, GLVertexAttribI4i, nullptr, nullptr, nullptr, napi_default, nullptr},
8346         {"gLVertexAttribI4iv", nullptr, GLVertexAttribI4iv, nullptr, nullptr, nullptr, napi_default, nullptr},
8347         {"gLVertexAttribI4ui", nullptr, GLVertexAttribI4ui, nullptr, nullptr, nullptr, napi_default, nullptr},
8348         {"gLVertexAttribI4uiv", nullptr, GLVertexAttribI4uiv, nullptr, nullptr, nullptr, napi_default, nullptr},
8349         {"gLVertexAttribIFormat", nullptr, GLVertexAttribIFormat, nullptr, nullptr, nullptr, napi_default, nullptr},
8350         {"gLVertexAttribIPointer", nullptr, GLVertexAttribIPointer, nullptr, nullptr, nullptr, napi_default, nullptr},
8351         {"gLVertexAttribPointer", nullptr, GLVertexAttribPointer, nullptr, nullptr, nullptr, napi_default, nullptr},
8352         {"gLVertexBindingDivisor", nullptr, GLVertexBindingDivisor, nullptr, nullptr, nullptr, napi_default, nullptr},
8353         {"gLViewport", nullptr, GLViewport, nullptr, nullptr, nullptr, napi_default, nullptr},
8354         {"gLWaitSync", nullptr, GLWaitSync, nullptr, nullptr, nullptr, napi_default, nullptr},
8355         {"glActiveShaderProgramAbnormal", nullptr, GLActiveShaderProgramAbnormal, nullptr, nullptr, nullptr,
8356          napi_default, nullptr},
8357         {"glActiveTextureAbnormal", nullptr, GLActiveTextureAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8358         {"glAttachShaderAbnormal", nullptr, GLAttachShaderAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8359         {"glBeginQueryAbnormal", nullptr, GLBeginQueryAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8360         {"glBeginTransformFeedbackAbnormal", nullptr, GLBeginTransformFeedbackAbnormal, nullptr, nullptr, nullptr,
8361          napi_default, nullptr},
8362         {"glBindAttribLocationAbnormal", nullptr, GLBindAttribLocationAbnormal, nullptr, nullptr, nullptr, napi_default,
8363          nullptr},
8364         {"glBindBufferAbnormal", nullptr, GLBindBufferAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8365         {"glBindBufferBaseAbnormal", nullptr, GLBindBufferBaseAbnormal, nullptr, nullptr, nullptr, napi_default,
8366          nullptr},
8367         {"glBindBufferRangeAbnormal", nullptr, GLBindBufferRangeAbnormal, nullptr, nullptr, nullptr, napi_default,
8368          nullptr},
8369         {"glBindFramebufferAbnormal", nullptr, GLBindFramebufferAbnormal, nullptr, nullptr, nullptr, napi_default,
8370          nullptr},
8371         {"glBindImageTextureAbnormal", nullptr, GLBindImageTextureAbnormal, nullptr, nullptr, nullptr, napi_default,
8372          nullptr},
8373         {"glBindProgramPipelineAbnormal", nullptr, GLBindProgramPipelineAbnormal, nullptr, nullptr, nullptr,
8374          napi_default, nullptr},
8375         {"glBindRenderbufferAbnormal", nullptr, GLBindRenderbufferAbnormal, nullptr, nullptr, nullptr, napi_default,
8376          nullptr},
8377         {"glBindSamplerAbnormal", nullptr, GLBindSamplerAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8378         {"glBindTextureAbnormal", nullptr, GLBindTextureAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8379         {"glBindTransformFeedbackAbnormal", nullptr, GLBindTransformFeedbackAbnormal, nullptr, nullptr, nullptr,
8380          napi_default, nullptr},
8381         {"glBindVertexArrayAbnormal", nullptr, GLBindVertexArrayAbnormal, nullptr, nullptr, nullptr, napi_default,
8382          nullptr},
8383         {"glBindVertexBufferAbnormal", nullptr, GLBindVertexBufferAbnormal, nullptr, nullptr, nullptr, napi_default,
8384          nullptr},
8385         {"glBlendEquationAbnormal", nullptr, GLBlendEquationAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8386         {"glBlendEquationiAbnormal", nullptr, GLBlendEquationiAbnormal, nullptr, nullptr, nullptr, napi_default,
8387          nullptr},
8388         {"glBlendEquationSeparateAbnormal", nullptr, GLBlendEquationSeparateAbnormal, nullptr, nullptr, nullptr,
8389          napi_default, nullptr},
8390         {"glBlendEquationSeparateiAbnormal", nullptr, GLBlendEquationSeparateiAbnormal, nullptr, nullptr, nullptr,
8391          napi_default, nullptr},
8392         {"glBlendFuncAbnormal", nullptr, GLBlendFuncAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8393         {"glBlendFunciAbnormal", nullptr, GLBlendFunciAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8394         {"glBlendFuncSeparateAbnormal", nullptr, GLBlendFuncSeparateAbnormal, nullptr, nullptr, nullptr, napi_default,
8395          nullptr},
8396         {"glBlendFuncSeparateiAbnormal", nullptr, GLBlendFuncSeparateiAbnormal, nullptr, nullptr, nullptr, napi_default,
8397          nullptr},
8398         {"glBlitFramebufferAbnormal", nullptr, GLBlitFramebufferAbnormal, nullptr, nullptr, nullptr, napi_default,
8399          nullptr},
8400         {"glBufferDataAbnormal", nullptr, GLBufferDataAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8401         {"glBufferSubDataAbnormal", nullptr, GLBufferSubDataAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8402         {"glCheckFramebufferStatusAbnormal", nullptr, GLCheckFramebufferStatusAbnormal, nullptr, nullptr, nullptr,
8403          napi_default, nullptr},
8404         {"glClearAbnormal", nullptr, GLClearAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8405         {"glClearBufferfiAbnormal", nullptr, GLClearBufferfiAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8406         {"glClearBufferfvAbnormal", nullptr, GLClearBufferfvAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8407         {"glClearBufferivAbnormal", nullptr, GLClearBufferivAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8408         {"glClearBufferuivAbnormal", nullptr, GLClearBufferuivAbnormal, nullptr, nullptr, nullptr, napi_default,
8409          nullptr},
8410         {"glClientWaitSyncAbnormal", nullptr, GLClientWaitSyncAbnormal, nullptr, nullptr, nullptr, napi_default,
8411          nullptr},
8412         {"glColorMaskiAbnormal", nullptr, GLColorMaskiAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8413         {"glCopyBufferSubDataAbnormal", nullptr, GLCopyBufferSubDataAbnormal, nullptr, nullptr, nullptr, napi_default,
8414          nullptr},
8415         {"glCopyImageSubDataAbnormal", nullptr, GLCopyImageSubDataAbnormal, nullptr, nullptr, nullptr, napi_default,
8416          nullptr},
8417         {"glCopyTexImage2DAbnormal", nullptr, GLCopyTexImage2DAbnormal, nullptr, nullptr, nullptr, napi_default,
8418          nullptr},
8419         {"glCopyTexSubImage2DAbnormal", nullptr, GLCopyTexSubImage2DAbnormal, nullptr, nullptr, nullptr, napi_default,
8420          nullptr},
8421         {"glCreateShaderAbnormal", nullptr, GLCreateShaderAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8422         {"glCreateShaderProgramvAbnormal", nullptr, GLCreateShaderProgramvAbnormal, nullptr, nullptr, nullptr,
8423          napi_default, nullptr},
8424         {"glCullFaceAbnormal", nullptr, GLCullFaceAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8425         {"glDebugMessageControlAbnormal", nullptr, GLDebugMessageControlAbnormal, nullptr, nullptr, nullptr,
8426          napi_default, nullptr},
8427         {"glDeleteBuffersAbnormal", nullptr, GLDeleteBuffersAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8428         {"glDeleteFramebuffersAbnormal", nullptr, GLDeleteFramebuffersAbnormal, nullptr, nullptr, nullptr, napi_default,
8429          nullptr},
8430         {"glDeleteProgramAbnormal", nullptr, GLDeleteProgramAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8431         {"glDeleteProgramPipelinesAbnormal", nullptr, GLDeleteProgramPipelinesAbnormal, nullptr, nullptr, nullptr,
8432          napi_default, nullptr},
8433         {"glDeleteQueriesAbnormal", nullptr, GLDeleteQueriesAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8434         {"glDeleteRenderbuffersAbnormal", nullptr, GLDeleteRenderbuffersAbnormal, nullptr, nullptr, nullptr,
8435          napi_default, nullptr},
8436         {"glDeleteSamplersAbnormal", nullptr, GLDeleteSamplersAbnormal, nullptr, nullptr, nullptr, napi_default,
8437          nullptr},
8438         {"glDeleteShaderAbnormal", nullptr, GLDeleteShaderAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8439         {"glDeleteSyncAbnormal", nullptr, GLDeleteSyncAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8440         {"glDeleteTexturesAbnormal", nullptr, GLDeleteTexturesAbnormal, nullptr, nullptr, nullptr, napi_default,
8441          nullptr},
8442         {"glDeleteTransformFeedbacksAbnormal", nullptr, GLDeleteTransformFeedbacksAbnormal, nullptr, nullptr, nullptr,
8443          napi_default, nullptr},
8444         {"glDeleteVertexArraysAbnormal", nullptr, GLDeleteVertexArraysAbnormal, nullptr, nullptr, nullptr, napi_default,
8445          nullptr},
8446         {"glDepthFuncAbnormal", nullptr, GLDepthFuncAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8447         {"glDetachShaderAbnormal", nullptr, GLDetachShaderAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8448         {"glDisableAbnormal", nullptr, GLDisableAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8449         {"glDisableiAbnormal", nullptr, GLDisableiAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8450         {"glDisableVertexAttribArrayAbnormal", nullptr, GLDisableVertexAttribArrayAbnormal, nullptr, nullptr, nullptr,
8451          napi_default, nullptr},
8452         {"glDispatchComputeAbnormal", nullptr, GLDispatchComputeAbnormal, nullptr, nullptr, nullptr, napi_default,
8453          nullptr},
8454         {"glDispatchComputeIndirectAbnormal", nullptr, GLDispatchComputeIndirectAbnormal, nullptr, nullptr, nullptr,
8455          napi_default, nullptr},
8456         {"glDrawArraysAbnormal", nullptr, GLDrawArraysAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8457         {"glDrawArraysIndirectAbnormal", nullptr, GLDrawArraysIndirectAbnormal, nullptr, nullptr, nullptr, napi_default,
8458          nullptr},
8459         {"glDrawArraysInstancedAbnormal", nullptr, GLDrawArraysInstancedAbnormal, nullptr, nullptr, nullptr,
8460          napi_default, nullptr},
8461         {"glDrawBuffersAbnormal", nullptr, GLDrawBuffersAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8462         {"glFlushMappedBufferRangeAbnormal", nullptr, GLFlushMappedBufferRangeAbnormal, nullptr, nullptr, nullptr,
8463          napi_default, nullptr},
8464         {"glFramebufferParameteriAbnormal", nullptr, GLFramebufferParameteriAbnormal, nullptr, nullptr, nullptr,
8465          napi_default, nullptr},
8466         {"glFramebufferRenderbufferAbnormal", nullptr, GLFramebufferRenderbufferAbnormal, nullptr, nullptr, nullptr,
8467          napi_default, nullptr},
8468         {"glFramebufferTextureAbnormal", nullptr, GLFramebufferTextureAbnormal, nullptr, nullptr, nullptr, napi_default,
8469          nullptr},
8470         {"glFramebufferTexture2DAbnormal", nullptr, GLFramebufferTexture2DAbnormal, nullptr, nullptr, nullptr,
8471          napi_default, nullptr},
8472         {"glFramebufferTextureLayerAbnormal", nullptr, GLFramebufferTextureLayerAbnormal, nullptr, nullptr, nullptr,
8473          napi_default, nullptr},
8474         {"glFrontFaceAbnormal", nullptr, GLFrontFaceAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8475         {"glGenBuffersAbnormal", nullptr, GLGenBuffersAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8476         {"glGenerateMipmapAbnormal", nullptr, GLGenerateMipmapAbnormal, nullptr, nullptr, nullptr, napi_default,
8477          nullptr},
8478         {"glGenFramebuffersAbnormal", nullptr, GLGenFramebuffersAbnormal, nullptr, nullptr, nullptr, napi_default,
8479          nullptr},
8480         {"glGenProgramPipelinesAbnormal", nullptr, GLGenProgramPipelinesAbnormal, nullptr, nullptr, nullptr,
8481          napi_default, nullptr},
8482         {"glGenQueriesAbnormal", nullptr, GLGenQueriesAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8483         {"glGenRenderbuffersAbnormal", nullptr, GLGenRenderbuffersAbnormal, nullptr, nullptr, nullptr, napi_default,
8484          nullptr},
8485         {"glGenSamplersAbnormal", nullptr, GLGenSamplersAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8486         {"glGenTexturesAbnormal", nullptr, GLGenTexturesAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8487         {"glGenTransformFeedbacksAbnormal", nullptr, GLGenTransformFeedbacksAbnormal, nullptr, nullptr, nullptr,
8488          napi_default, nullptr},
8489         {"glGenVertexArraysAbnormal", nullptr, GLGenVertexArraysAbnormal, nullptr, nullptr, nullptr, napi_default,
8490          nullptr},
8491         {"glGetActiveAttribAbnormal", nullptr, GLGetActiveAttribAbnormal, nullptr, nullptr, nullptr, napi_default,
8492          nullptr},
8493         {"glGetAttachedShadersAbnormal", nullptr, GLGetAttachedShadersAbnormal, nullptr, nullptr, nullptr, napi_default,
8494          nullptr},
8495         {"glGetAttribLocationAbnormal", nullptr, GLGetAttribLocationAbnormal, nullptr, nullptr, nullptr, napi_default,
8496          nullptr},
8497         {"glGetBooleani_vAbnormal", nullptr, GLGetBooleani_vAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8498         {"glGetBooleanvAbnormal", nullptr, GLGetBooleanvAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8499         {"glGetBufferParameteri64vAbnormal", nullptr, GLGetBufferParameteri64vAbnormal, nullptr, nullptr, nullptr,
8500          napi_default, nullptr},
8501         {"glGetBufferParameterivAbnormal", nullptr, GLGetBufferParameterivAbnormal, nullptr, nullptr, nullptr,
8502          napi_default, nullptr},
8503         {"glGetBufferPointervAbnormal", nullptr, GLGetBufferPointervAbnormal, nullptr, nullptr, nullptr, napi_default,
8504          nullptr},
8505         {"glGetFloatvAbnormal", nullptr, GLGetFloatvAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8506         {"glGetFragDataLocationAbnormal", nullptr, GLGetFragDataLocationAbnormal, nullptr, nullptr, nullptr,
8507          napi_default, nullptr},
8508         {"glGetFramebufferAttachmentParameterivAbnormal", nullptr, GLGetFramebufferAttachmentParameterivAbnormal,
8509          nullptr, nullptr, nullptr, napi_default, nullptr},
8510         {"glGetFramebufferParameterivAbnormal", nullptr, GLGetFramebufferParameterivAbnormal, nullptr, nullptr, nullptr,
8511          napi_default, nullptr},
8512         {"glGetInteger64i_vAbnormal", nullptr, GLGetInteger64i_vAbnormal, nullptr, nullptr, nullptr, napi_default,
8513          nullptr},
8514         {"glGetInteger64vAbnormal", nullptr, GLGetInteger64vAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8515         {"glGetIntegeri_vAbnormal", nullptr, GLGetIntegeri_vAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8516         {"glGetIntegervAbnormal", nullptr, GLGetIntegervAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8517         {"glGetInternalformativAbnormal", nullptr, GLGetInternalformativAbnormal, nullptr, nullptr, nullptr,
8518          napi_default, nullptr},
8519         {"glGetObjectLabelAbnormal", nullptr, GLGetObjectLabelAbnormal, nullptr, nullptr, nullptr, napi_default,
8520          nullptr},
8521         {"glGetObjectPtrLabelAbnormal", nullptr, GLGetObjectPtrLabelAbnormal, nullptr, nullptr, nullptr, napi_default,
8522          nullptr},
8523         {"glGetPointervAbnormal", nullptr, GLGetPointervAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8524         {"glGetProgramBinaryAbnormal", nullptr, GLGetProgramBinaryAbnormal, nullptr, nullptr, nullptr, napi_default,
8525          nullptr},
8526         {"glGetProgramInterfaceivAbnormal", nullptr, GLGetProgramInterfaceivAbnormal, nullptr, nullptr, nullptr,
8527          napi_default, nullptr},
8528         {"glGetProgramivAbnormal", nullptr, GLGetProgramivAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8529         {"glGetProgramPipelineivAbnormal", nullptr, GLGetProgramPipelineivAbnormal, nullptr, nullptr, nullptr,
8530          napi_default, nullptr},
8531         {"glGetProgramResourceIndexAbnormal", nullptr, GLGetProgramResourceIndexAbnormal, nullptr, nullptr, nullptr,
8532          napi_default, nullptr},
8533         {"glGetProgramResourceivAbnormal", nullptr, GLGetProgramResourceivAbnormal, nullptr, nullptr, nullptr,
8534          napi_default, nullptr},
8535         {"glGetProgramResourceLocationAbnormal", nullptr, GLGetProgramResourceLocationAbnormal, nullptr, nullptr,
8536          nullptr, napi_default, nullptr},
8537         {"glGetProgramResourceNameAbnormal", nullptr, GLGetProgramResourceNameAbnormal, nullptr, nullptr, nullptr,
8538          napi_default, nullptr},
8539         {"glGetQueryivAbnormal", nullptr, GLGetQueryivAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8540         {"glGetQueryObjectuivAbnormal", nullptr, GLGetQueryObjectuivAbnormal, nullptr, nullptr, nullptr, napi_default,
8541          nullptr},
8542         {"glGetRenderbufferParameterivAbnormal", nullptr, GLGetRenderbufferParameterivAbnormal, nullptr, nullptr,
8543          nullptr, napi_default, nullptr},
8544         {"glGetSamplerParameterfvAbnormal", nullptr, GLGetSamplerParameterfvAbnormal, nullptr, nullptr, nullptr,
8545          napi_default, nullptr},
8546         {"glGetSamplerParameterIivAbnormal", nullptr, GLGetSamplerParameterIivAbnormal, nullptr, nullptr, nullptr,
8547          napi_default, nullptr},
8548         {"glGetSamplerParameterIuivAbnormal", nullptr, GLGetSamplerParameterIuivAbnormal, nullptr, nullptr, nullptr,
8549          napi_default, nullptr},
8550         {"glGetSamplerParameterivAbnormal", nullptr, GLGetSamplerParameterivAbnormal, nullptr, nullptr, nullptr,
8551          napi_default, nullptr},
8552         {"glUniform1fAbnormal", nullptr, GLUniform1fAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8553         {"glUniform1fvAbnormal", nullptr, GLUniform1fvAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8554         {"glUniform1iAbnormal", nullptr, GLUniform1iAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8555         {"glUniform1ivAbnormal", nullptr, GLUniform1ivAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8556         {"glUniform1uiAbnormal", nullptr, GLUniform1uiAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8557         {"glUniform1uivAbnormal", nullptr, GLUniform1uivAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8558         {"glUniform2fAbnormal", nullptr, GLUniform2fAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8559         {"glUniform2fvAbnormal", nullptr, GLUniform2fvAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8560         {"glUniform2iAbnormal", nullptr, GLUniform2iAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8561         {"glUniform2ivAbnormal", nullptr, GLUniform2ivAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8562         {"glUniform2uiAbnormal", nullptr, GLUniform2uiAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8563         {"glUniform2uivAbnormal", nullptr, GLUniform2uivAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8564         {"glUniform3fAbnormal", nullptr, GLUniform3fAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8565         {"glUniform3fvAbnormal", nullptr, GLUniform3fvAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8566         {"glUniform3iAbnormal", nullptr, GLUniform3iAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8567         {"glUniform3ivAbnormal", nullptr, GLUniform3ivAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8568         {"glUniform3uiAbnormal", nullptr, GLUniform3uiAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8569         {"glUniform3uivAbnormal", nullptr, GLUniform3uivAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8570         {"glUniform4fAbnormal", nullptr, GLUniform4fAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8571         {"glUniform4fvAbnormal", nullptr, GLUniform4fvAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8572         {"glUniform4iAbnormal", nullptr, GLUniform4iAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8573         {"glUniform4ivAbnormal", nullptr, GLUniform4ivAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8574         {"glUniform4uiAbnormal", nullptr, GLUniform4uiAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8575         {"glUniform4uivAbnormal", nullptr, GLUniform4uivAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8576         {"glUniformBlockBindingAbnormal", nullptr, GLUniformBlockBindingAbnormal, nullptr, nullptr, nullptr,
8577          napi_default, nullptr},
8578         {"glUniformMatrix2fvAbnormal", nullptr, GLUniformMatrix2fvAbnormal, nullptr, nullptr, nullptr, napi_default,
8579          nullptr},
8580         {"glUniformMatrix2x3fvAbnormal", nullptr, GLUniformMatrix2x3fvAbnormal, nullptr, nullptr, nullptr, napi_default,
8581          nullptr},
8582         {"glUniformMatrix2x4fvAbnormal", nullptr, GLUniformMatrix2x4fvAbnormal, nullptr, nullptr, nullptr, napi_default,
8583          nullptr},
8584         {"glUniformMatrix3fvAbnormal", nullptr, GLUniformMatrix3fvAbnormal, nullptr, nullptr, nullptr, napi_default,
8585          nullptr},
8586         {"glUniformMatrix3x2fvAbnormal", nullptr, GLUniformMatrix3x2fvAbnormal, nullptr, nullptr, nullptr, napi_default,
8587          nullptr},
8588         {"glUniformMatrix3x4fvAbnormal", nullptr, GLUniformMatrix3x4fvAbnormal, nullptr, nullptr, nullptr, napi_default,
8589          nullptr},
8590         {"glUniformMatrix4fvAbnormal", nullptr, GLUniformMatrix4fvAbnormal, nullptr, nullptr, nullptr, napi_default,
8591          nullptr},
8592         {"glUniformMatrix4x2fvAbnormal", nullptr, GLUniformMatrix4x2fvAbnormal, nullptr, nullptr, nullptr, napi_default,
8593          nullptr},
8594         {"glUniformMatrix4x3fvAbnormal", nullptr, GLUniformMatrix4x3fvAbnormal, nullptr, nullptr, nullptr, napi_default,
8595          nullptr},
8596         {"glCompileShaderAbnormal", nullptr, GLCompileShaderAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8597         {"glCompressedTexImage2DAbnormal", nullptr, GLCompressedTexImage2DAbnormal, nullptr, nullptr, nullptr,
8598          napi_default, nullptr},
8599         {"glCompressedTexImage3DAbnormal", nullptr, GLCompressedTexImage3DAbnormal, nullptr, nullptr, nullptr,
8600          napi_default, nullptr},
8601         {"glCompressedTexSubImage2DAbnormal", nullptr, GLCompressedTexSubImage2DAbnormal, nullptr, nullptr, nullptr,
8602          napi_default, nullptr},
8603         {"glCompressedTexSubImage3DAbnormal", nullptr, GLCompressedTexSubImage3DAbnormal, nullptr, nullptr, nullptr,
8604          napi_default, nullptr},
8605         {"glCopyTexSubImage3DAbnormal", nullptr, GLCopyTexSubImage3DAbnormal, nullptr, nullptr, nullptr, napi_default,
8606          nullptr},
8607         {"glDrawElementsAbnormal", nullptr, GLDrawElementsAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8608         {"glDrawElementsBaseVertexAbnormal", nullptr, GLDrawElementsBaseVertexAbnormal, nullptr, nullptr, nullptr,
8609          napi_default, nullptr},
8610         {"glDrawElementsIndirectAbnormal", nullptr, GLDrawElementsIndirectAbnormal, nullptr, nullptr, nullptr,
8611          napi_default, nullptr},
8612         {"glDrawElementsInstancedAbnormal", nullptr, GLDrawElementsInstancedAbnormal, nullptr, nullptr, nullptr,
8613          napi_default, nullptr},
8614         {"glDrawElementsInstancedBaseVertexAbnormal", nullptr, GLDrawElementsInstancedBaseVertexAbnormal, nullptr,
8615          nullptr, nullptr, napi_default, nullptr},
8616         {"glDrawRangeElementsAbnormal", nullptr, GLDrawRangeElementsAbnormal, nullptr, nullptr, nullptr, napi_default,
8617          nullptr},
8618         {"glDrawRangeElementsBaseVertexAbnormal", nullptr, GLDrawRangeElementsBaseVertexAbnormal, nullptr, nullptr,
8619          nullptr, napi_default, nullptr},
8620         {"glEnableAbnormal", nullptr, GLEnableAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8621         {"glEnableiAbnormal", nullptr, GLEnableiAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8622         {"glEnableVertexAttribArrayAbnormal", nullptr, GLEnableVertexAttribArrayAbnormal, nullptr, nullptr, nullptr,
8623          napi_default, nullptr},
8624         {"glEndQueryAbnormal", nullptr, GLEndQueryAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8625         {"glEndTransformFeedbackAbnormal", nullptr, GLEndTransformFeedbackAbnormal, nullptr, nullptr, nullptr,
8626          napi_default, nullptr},
8627         {"glFenceSyncAbnormal", nullptr, GLFenceSyncAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
8628 
8629     };
8630     napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc);
8631     return exports;
8632 }
8633 EXTERN_C_END
8634 
8635 static napi_module demoModule = {
8636     .nm_version = 1,
8637     .nm_flags = 0,
8638     .nm_filename = nullptr,
8639     .nm_register_func = Init,
8640     .nm_modname = "media",
8641     .nm_priv = ((void *)0),
8642     .reserved = {0},
8643 };
8644 
RegisterEntryModule(void)8645 extern "C" __attribute__((constructor)) void RegisterEntryModule(void) { napi_module_register(&demoModule); }
8646