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