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, ¤tLineWidth);
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 ¶m);
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, ¶m);
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, ¶ms);
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, ¶m);
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, ¶m);
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, ¶m);
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, ¶m);
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, ¶m);
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, ¶ms);
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, ¶ms);
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, ¶ms);
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, ¶ms);
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, ¶ms);
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, ¶m);
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, ¶ms);
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), ¶m);
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), ¶m);
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), ¶m);
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