• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2 **
3 ** Copyright 2009, The Android Open Source Project
4 **
5 ** Licensed under the Apache License, Version 2.0 (the "License");
6 ** you may not use this file except in compliance with the License.
7 ** You may obtain a copy of the License at
8 **
9 **     http://www.apache.org/licenses/LICENSE-2.0
10 **
11 ** Unless required by applicable law or agreed to in writing, software
12 ** distributed under the License is distributed on an "AS IS" BASIS,
13 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 ** See the License for the specific language governing permissions and
15 ** limitations under the License.
16 */
17 
18 // This source file is automatically generated
19 
20 #include <android_runtime/AndroidRuntime.h>
21 #include <utils/misc.h>
22 
23 #include <assert.h>
24 #include <GLES/gl.h>
25 #include <GLES/glext.h>
26 
27 /* special calls implemented in Android's GLES wrapper used to more
28  * efficiently bound-check passed arrays */
29 extern "C" {
30 GL_API void GL_APIENTRY glColorPointerBounds(GLint size, GLenum type, GLsizei stride,
31         const GLvoid *ptr, GLsizei count);
32 GL_API void GL_APIENTRY glNormalPointerBounds(GLenum type, GLsizei stride,
33         const GLvoid *pointer, GLsizei count);
34 GL_API void GL_APIENTRY glTexCoordPointerBounds(GLint size, GLenum type,
35         GLsizei stride, const GLvoid *pointer, GLsizei count);
36 GL_API void GL_APIENTRY glVertexPointerBounds(GLint size, GLenum type,
37         GLsizei stride, const GLvoid *pointer, GLsizei count);
38 }
39 
40 static int initialized = 0;
41 
42 static jclass nioAccessClass;
43 static jclass bufferClass;
44 static jclass OOMEClass;
45 static jclass UOEClass;
46 static jclass IAEClass;
47 static jclass AIOOBEClass;
48 static jmethodID getBasePointerID;
49 static jmethodID getBaseArrayID;
50 static jmethodID getBaseArrayOffsetID;
51 static jfieldID positionID;
52 static jfieldID limitID;
53 static jfieldID elementSizeShiftID;
54 
55 /* Cache method IDs each time the class is loaded. */
56 
57 static void
nativeClassInitBuffer(JNIEnv * _env)58 nativeClassInitBuffer(JNIEnv *_env)
59 {
60     jclass nioAccessClassLocal = _env->FindClass("java/nio/NIOAccess");
61     nioAccessClass = (jclass) _env->NewGlobalRef(nioAccessClassLocal);
62 
63     jclass bufferClassLocal = _env->FindClass("java/nio/Buffer");
64     bufferClass = (jclass) _env->NewGlobalRef(bufferClassLocal);
65 
66     getBasePointerID = _env->GetStaticMethodID(nioAccessClass,
67             "getBasePointer", "(Ljava/nio/Buffer;)J");
68     getBaseArrayID = _env->GetStaticMethodID(nioAccessClass,
69             "getBaseArray", "(Ljava/nio/Buffer;)Ljava/lang/Object;");
70     getBaseArrayOffsetID = _env->GetStaticMethodID(nioAccessClass,
71             "getBaseArrayOffset", "(Ljava/nio/Buffer;)I");
72 
73     positionID = _env->GetFieldID(bufferClass, "position", "I");
74     limitID = _env->GetFieldID(bufferClass, "limit", "I");
75     elementSizeShiftID =
76         _env->GetFieldID(bufferClass, "_elementSizeShift", "I");
77 }
78 
79 static void
nativeClassInit(JNIEnv * _env,jclass glImplClass)80 nativeClassInit(JNIEnv *_env, jclass glImplClass)
81 {
82     nativeClassInitBuffer(_env);
83 
84     jclass IAEClassLocal =
85         _env->FindClass("java/lang/IllegalArgumentException");
86     jclass OOMEClassLocal =
87          _env->FindClass("java/lang/OutOfMemoryError");
88     jclass UOEClassLocal =
89          _env->FindClass("java/lang/UnsupportedOperationException");
90     jclass AIOOBEClassLocal =
91          _env->FindClass("java/lang/ArrayIndexOutOfBoundsException");
92 
93     IAEClass = (jclass) _env->NewGlobalRef(IAEClassLocal);
94     OOMEClass = (jclass) _env->NewGlobalRef(OOMEClassLocal);
95     UOEClass = (jclass) _env->NewGlobalRef(UOEClassLocal);
96     AIOOBEClass = (jclass) _env->NewGlobalRef(AIOOBEClassLocal);
97 }
98 
99 static void *
getPointer(JNIEnv * _env,jobject buffer,jarray * array,jint * remaining)100 getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining)
101 {
102     jint position;
103     jint limit;
104     jint elementSizeShift;
105     jlong pointer;
106     jint offset;
107     void *data;
108 
109     position = _env->GetIntField(buffer, positionID);
110     limit = _env->GetIntField(buffer, limitID);
111     elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID);
112     *remaining = (limit - position) << elementSizeShift;
113     pointer = _env->CallStaticLongMethod(nioAccessClass,
114             getBasePointerID, buffer);
115     if (pointer != 0L) {
116         *array = NULL;
117         return (void *) (jint) pointer;
118     }
119 
120     *array = (jarray) _env->CallStaticObjectMethod(nioAccessClass,
121             getBaseArrayID, buffer);
122     offset = _env->CallStaticIntMethod(nioAccessClass,
123             getBaseArrayOffsetID, buffer);
124     data = _env->GetPrimitiveArrayCritical(*array, (jboolean *) 0);
125 
126     return (void *) ((char *) data + offset);
127 }
128 
129 static void
releasePointer(JNIEnv * _env,jarray array,void * data,jboolean commit)130 releasePointer(JNIEnv *_env, jarray array, void *data, jboolean commit)
131 {
132     _env->ReleasePrimitiveArrayCritical(array, data,
133 					   commit ? 0 : JNI_ABORT);
134 }
135 
136 static void *
getDirectBufferPointer(JNIEnv * _env,jobject buffer)137 getDirectBufferPointer(JNIEnv *_env, jobject buffer) {
138     char* buf = (char*) _env->GetDirectBufferAddress(buffer);
139     if (buf) {
140         jint position = _env->GetIntField(buffer, positionID);
141         jint elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID);
142         buf += position << elementSizeShift;
143     } else {
144         _env->ThrowNew(IAEClass, "Must use a native order direct Buffer");
145     }
146     return (void*) buf;
147 }
148 
149 static int
getNumCompressedTextureFormats()150 getNumCompressedTextureFormats() {
151     int numCompressedTextureFormats = 0;
152     glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &numCompressedTextureFormats);
153     return numCompressedTextureFormats;
154 }
155 
156 // --------------------------------------------------------------------------
157 
158 /* void glActiveTexture ( GLenum texture ) */
159 static void
android_glActiveTexture__I(JNIEnv * _env,jobject _this,jint texture)160 android_glActiveTexture__I
161   (JNIEnv *_env, jobject _this, jint texture) {
162     glActiveTexture(
163         (GLenum)texture
164     );
165 }
166 
167 /* void glAlphaFunc ( GLenum func, GLclampf ref ) */
168 static void
android_glAlphaFunc__IF(JNIEnv * _env,jobject _this,jint func,jfloat ref)169 android_glAlphaFunc__IF
170   (JNIEnv *_env, jobject _this, jint func, jfloat ref) {
171     glAlphaFunc(
172         (GLenum)func,
173         (GLclampf)ref
174     );
175 }
176 
177 /* void glAlphaFuncx ( GLenum func, GLclampx ref ) */
178 static void
android_glAlphaFuncx__II(JNIEnv * _env,jobject _this,jint func,jint ref)179 android_glAlphaFuncx__II
180   (JNIEnv *_env, jobject _this, jint func, jint ref) {
181     glAlphaFuncx(
182         (GLenum)func,
183         (GLclampx)ref
184     );
185 }
186 
187 /* void glBindTexture ( GLenum target, GLuint texture ) */
188 static void
android_glBindTexture__II(JNIEnv * _env,jobject _this,jint target,jint texture)189 android_glBindTexture__II
190   (JNIEnv *_env, jobject _this, jint target, jint texture) {
191     glBindTexture(
192         (GLenum)target,
193         (GLuint)texture
194     );
195 }
196 
197 /* void glBlendFunc ( GLenum sfactor, GLenum dfactor ) */
198 static void
android_glBlendFunc__II(JNIEnv * _env,jobject _this,jint sfactor,jint dfactor)199 android_glBlendFunc__II
200   (JNIEnv *_env, jobject _this, jint sfactor, jint dfactor) {
201     glBlendFunc(
202         (GLenum)sfactor,
203         (GLenum)dfactor
204     );
205 }
206 
207 /* void glClear ( GLbitfield mask ) */
208 static void
android_glClear__I(JNIEnv * _env,jobject _this,jint mask)209 android_glClear__I
210   (JNIEnv *_env, jobject _this, jint mask) {
211     glClear(
212         (GLbitfield)mask
213     );
214 }
215 
216 /* void glClearColor ( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ) */
217 static void
android_glClearColor__FFFF(JNIEnv * _env,jobject _this,jfloat red,jfloat green,jfloat blue,jfloat alpha)218 android_glClearColor__FFFF
219   (JNIEnv *_env, jobject _this, jfloat red, jfloat green, jfloat blue, jfloat alpha) {
220     glClearColor(
221         (GLclampf)red,
222         (GLclampf)green,
223         (GLclampf)blue,
224         (GLclampf)alpha
225     );
226 }
227 
228 /* void glClearColorx ( GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha ) */
229 static void
android_glClearColorx__IIII(JNIEnv * _env,jobject _this,jint red,jint green,jint blue,jint alpha)230 android_glClearColorx__IIII
231   (JNIEnv *_env, jobject _this, jint red, jint green, jint blue, jint alpha) {
232     glClearColorx(
233         (GLclampx)red,
234         (GLclampx)green,
235         (GLclampx)blue,
236         (GLclampx)alpha
237     );
238 }
239 
240 /* void glClearDepthf ( GLclampf depth ) */
241 static void
android_glClearDepthf__F(JNIEnv * _env,jobject _this,jfloat depth)242 android_glClearDepthf__F
243   (JNIEnv *_env, jobject _this, jfloat depth) {
244     glClearDepthf(
245         (GLclampf)depth
246     );
247 }
248 
249 /* void glClearDepthx ( GLclampx depth ) */
250 static void
android_glClearDepthx__I(JNIEnv * _env,jobject _this,jint depth)251 android_glClearDepthx__I
252   (JNIEnv *_env, jobject _this, jint depth) {
253     glClearDepthx(
254         (GLclampx)depth
255     );
256 }
257 
258 /* void glClearStencil ( GLint s ) */
259 static void
android_glClearStencil__I(JNIEnv * _env,jobject _this,jint s)260 android_glClearStencil__I
261   (JNIEnv *_env, jobject _this, jint s) {
262     glClearStencil(
263         (GLint)s
264     );
265 }
266 
267 /* void glClientActiveTexture ( GLenum texture ) */
268 static void
android_glClientActiveTexture__I(JNIEnv * _env,jobject _this,jint texture)269 android_glClientActiveTexture__I
270   (JNIEnv *_env, jobject _this, jint texture) {
271     glClientActiveTexture(
272         (GLenum)texture
273     );
274 }
275 
276 /* void glColor4f ( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha ) */
277 static void
android_glColor4f__FFFF(JNIEnv * _env,jobject _this,jfloat red,jfloat green,jfloat blue,jfloat alpha)278 android_glColor4f__FFFF
279   (JNIEnv *_env, jobject _this, jfloat red, jfloat green, jfloat blue, jfloat alpha) {
280     glColor4f(
281         (GLfloat)red,
282         (GLfloat)green,
283         (GLfloat)blue,
284         (GLfloat)alpha
285     );
286 }
287 
288 /* void glColor4x ( GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha ) */
289 static void
android_glColor4x__IIII(JNIEnv * _env,jobject _this,jint red,jint green,jint blue,jint alpha)290 android_glColor4x__IIII
291   (JNIEnv *_env, jobject _this, jint red, jint green, jint blue, jint alpha) {
292     glColor4x(
293         (GLfixed)red,
294         (GLfixed)green,
295         (GLfixed)blue,
296         (GLfixed)alpha
297     );
298 }
299 
300 /* void glColorMask ( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha ) */
301 static void
android_glColorMask__ZZZZ(JNIEnv * _env,jobject _this,jboolean red,jboolean green,jboolean blue,jboolean alpha)302 android_glColorMask__ZZZZ
303   (JNIEnv *_env, jobject _this, jboolean red, jboolean green, jboolean blue, jboolean alpha) {
304     glColorMask(
305         (GLboolean)red,
306         (GLboolean)green,
307         (GLboolean)blue,
308         (GLboolean)alpha
309     );
310 }
311 
312 /* void glColorPointer ( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer ) */
313 static void
android_glColorPointerBounds__IIILjava_nio_Buffer_2I(JNIEnv * _env,jobject _this,jint size,jint type,jint stride,jobject pointer_buf,jint remaining)314 android_glColorPointerBounds__IIILjava_nio_Buffer_2I
315   (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jobject pointer_buf, jint remaining) {
316     jarray _array = (jarray) 0;
317     jint _remaining;
318     GLvoid *pointer = (GLvoid *) 0;
319 
320     if (pointer_buf) {
321         pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf);
322         if ( ! pointer ) {
323             return;
324         }
325     }
326     glColorPointerBounds(
327         (GLint)size,
328         (GLenum)type,
329         (GLsizei)stride,
330         (GLvoid *)pointer,
331         (GLsizei)remaining
332     );
333 }
334 
335 /* void glCompressedTexImage2D ( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data ) */
336 static void
android_glCompressedTexImage2D__IIIIIIILjava_nio_Buffer_2(JNIEnv * _env,jobject _this,jint target,jint level,jint internalformat,jint width,jint height,jint border,jint imageSize,jobject data_buf)337 android_glCompressedTexImage2D__IIIIIIILjava_nio_Buffer_2
338   (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint border, jint imageSize, jobject data_buf) {
339     jarray _array = (jarray) 0;
340     jint _remaining;
341     GLvoid *data = (GLvoid *) 0;
342 
343     data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining);
344     glCompressedTexImage2D(
345         (GLenum)target,
346         (GLint)level,
347         (GLenum)internalformat,
348         (GLsizei)width,
349         (GLsizei)height,
350         (GLint)border,
351         (GLsizei)imageSize,
352         (GLvoid *)data
353     );
354     if (_array) {
355         releasePointer(_env, _array, data, JNI_FALSE);
356     }
357 }
358 
359 /* void glCompressedTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data ) */
360 static void
android_glCompressedTexSubImage2D__IIIIIIIILjava_nio_Buffer_2(JNIEnv * _env,jobject _this,jint target,jint level,jint xoffset,jint yoffset,jint width,jint height,jint format,jint imageSize,jobject data_buf)361 android_glCompressedTexSubImage2D__IIIIIIIILjava_nio_Buffer_2
362   (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint width, jint height, jint format, jint imageSize, jobject data_buf) {
363     jarray _array = (jarray) 0;
364     jint _remaining;
365     GLvoid *data = (GLvoid *) 0;
366 
367     data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining);
368     glCompressedTexSubImage2D(
369         (GLenum)target,
370         (GLint)level,
371         (GLint)xoffset,
372         (GLint)yoffset,
373         (GLsizei)width,
374         (GLsizei)height,
375         (GLenum)format,
376         (GLsizei)imageSize,
377         (GLvoid *)data
378     );
379     if (_array) {
380         releasePointer(_env, _array, data, JNI_FALSE);
381     }
382 }
383 
384 /* void glCopyTexImage2D ( GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border ) */
385 static void
android_glCopyTexImage2D__IIIIIIII(JNIEnv * _env,jobject _this,jint target,jint level,jint internalformat,jint x,jint y,jint width,jint height,jint border)386 android_glCopyTexImage2D__IIIIIIII
387   (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint x, jint y, jint width, jint height, jint border) {
388     glCopyTexImage2D(
389         (GLenum)target,
390         (GLint)level,
391         (GLenum)internalformat,
392         (GLint)x,
393         (GLint)y,
394         (GLsizei)width,
395         (GLsizei)height,
396         (GLint)border
397     );
398 }
399 
400 /* void glCopyTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height ) */
401 static void
android_glCopyTexSubImage2D__IIIIIIII(JNIEnv * _env,jobject _this,jint target,jint level,jint xoffset,jint yoffset,jint x,jint y,jint width,jint height)402 android_glCopyTexSubImage2D__IIIIIIII
403   (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint x, jint y, jint width, jint height) {
404     glCopyTexSubImage2D(
405         (GLenum)target,
406         (GLint)level,
407         (GLint)xoffset,
408         (GLint)yoffset,
409         (GLint)x,
410         (GLint)y,
411         (GLsizei)width,
412         (GLsizei)height
413     );
414 }
415 
416 /* void glCullFace ( GLenum mode ) */
417 static void
android_glCullFace__I(JNIEnv * _env,jobject _this,jint mode)418 android_glCullFace__I
419   (JNIEnv *_env, jobject _this, jint mode) {
420     glCullFace(
421         (GLenum)mode
422     );
423 }
424 
425 /* void glDeleteTextures ( GLsizei n, const GLuint *textures ) */
426 static void
android_glDeleteTextures__I_3II(JNIEnv * _env,jobject _this,jint n,jintArray textures_ref,jint offset)427 android_glDeleteTextures__I_3II
428   (JNIEnv *_env, jobject _this, jint n, jintArray textures_ref, jint offset) {
429     GLuint *textures_base = (GLuint *) 0;
430     jint _remaining;
431     GLuint *textures = (GLuint *) 0;
432 
433     if (!textures_ref) {
434         _env->ThrowNew(IAEClass, "textures == null");
435         goto exit;
436     }
437     if (offset < 0) {
438         _env->ThrowNew(IAEClass, "offset < 0");
439         goto exit;
440     }
441     _remaining = _env->GetArrayLength(textures_ref) - offset;
442     if (_remaining < n) {
443         _env->ThrowNew(IAEClass, "length - offset < n");
444         goto exit;
445     }
446     textures_base = (GLuint *)
447         _env->GetPrimitiveArrayCritical(textures_ref, (jboolean *)0);
448     textures = textures_base + offset;
449 
450     glDeleteTextures(
451         (GLsizei)n,
452         (GLuint *)textures
453     );
454 
455 exit:
456     if (textures_base) {
457         _env->ReleasePrimitiveArrayCritical(textures_ref, textures_base,
458             JNI_ABORT);
459     }
460 }
461 
462 /* void glDeleteTextures ( GLsizei n, const GLuint *textures ) */
463 static void
android_glDeleteTextures__ILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint n,jobject textures_buf)464 android_glDeleteTextures__ILjava_nio_IntBuffer_2
465   (JNIEnv *_env, jobject _this, jint n, jobject textures_buf) {
466     jarray _array = (jarray) 0;
467     jint _remaining;
468     GLuint *textures = (GLuint *) 0;
469 
470     textures = (GLuint *)getPointer(_env, textures_buf, &_array, &_remaining);
471     if (_remaining < n) {
472         _env->ThrowNew(IAEClass, "remaining() < n");
473         goto exit;
474     }
475     glDeleteTextures(
476         (GLsizei)n,
477         (GLuint *)textures
478     );
479 
480 exit:
481     if (_array) {
482         releasePointer(_env, _array, textures, JNI_FALSE);
483     }
484 }
485 
486 /* void glDepthFunc ( GLenum func ) */
487 static void
android_glDepthFunc__I(JNIEnv * _env,jobject _this,jint func)488 android_glDepthFunc__I
489   (JNIEnv *_env, jobject _this, jint func) {
490     glDepthFunc(
491         (GLenum)func
492     );
493 }
494 
495 /* void glDepthMask ( GLboolean flag ) */
496 static void
android_glDepthMask__Z(JNIEnv * _env,jobject _this,jboolean flag)497 android_glDepthMask__Z
498   (JNIEnv *_env, jobject _this, jboolean flag) {
499     glDepthMask(
500         (GLboolean)flag
501     );
502 }
503 
504 /* void glDepthRangef ( GLclampf zNear, GLclampf zFar ) */
505 static void
android_glDepthRangef__FF(JNIEnv * _env,jobject _this,jfloat zNear,jfloat zFar)506 android_glDepthRangef__FF
507   (JNIEnv *_env, jobject _this, jfloat zNear, jfloat zFar) {
508     glDepthRangef(
509         (GLclampf)zNear,
510         (GLclampf)zFar
511     );
512 }
513 
514 /* void glDepthRangex ( GLclampx zNear, GLclampx zFar ) */
515 static void
android_glDepthRangex__II(JNIEnv * _env,jobject _this,jint zNear,jint zFar)516 android_glDepthRangex__II
517   (JNIEnv *_env, jobject _this, jint zNear, jint zFar) {
518     glDepthRangex(
519         (GLclampx)zNear,
520         (GLclampx)zFar
521     );
522 }
523 
524 /* void glDisable ( GLenum cap ) */
525 static void
android_glDisable__I(JNIEnv * _env,jobject _this,jint cap)526 android_glDisable__I
527   (JNIEnv *_env, jobject _this, jint cap) {
528     glDisable(
529         (GLenum)cap
530     );
531 }
532 
533 /* void glDisableClientState ( GLenum array ) */
534 static void
android_glDisableClientState__I(JNIEnv * _env,jobject _this,jint array)535 android_glDisableClientState__I
536   (JNIEnv *_env, jobject _this, jint array) {
537     glDisableClientState(
538         (GLenum)array
539     );
540 }
541 
542 /* void glDrawArrays ( GLenum mode, GLint first, GLsizei count ) */
543 static void
android_glDrawArrays__III(JNIEnv * _env,jobject _this,jint mode,jint first,jint count)544 android_glDrawArrays__III
545   (JNIEnv *_env, jobject _this, jint mode, jint first, jint count) {
546     glDrawArrays(
547         (GLenum)mode,
548         (GLint)first,
549         (GLsizei)count
550     );
551 }
552 
553 /* void glDrawElements ( GLenum mode, GLsizei count, GLenum type, const GLvoid *indices ) */
554 static void
android_glDrawElements__IIILjava_nio_Buffer_2(JNIEnv * _env,jobject _this,jint mode,jint count,jint type,jobject indices_buf)555 android_glDrawElements__IIILjava_nio_Buffer_2
556   (JNIEnv *_env, jobject _this, jint mode, jint count, jint type, jobject indices_buf) {
557     jarray _array = (jarray) 0;
558     jint _remaining;
559     GLvoid *indices = (GLvoid *) 0;
560 
561     indices = (GLvoid *)getPointer(_env, indices_buf, &_array, &_remaining);
562     if (_remaining < count) {
563         _env->ThrowNew(AIOOBEClass, "remaining() < count");
564         goto exit;
565     }
566     glDrawElements(
567         (GLenum)mode,
568         (GLsizei)count,
569         (GLenum)type,
570         (GLvoid *)indices
571     );
572 
573 exit:
574     if (_array) {
575         releasePointer(_env, _array, indices, JNI_FALSE);
576     }
577 }
578 
579 /* void glEnable ( GLenum cap ) */
580 static void
android_glEnable__I(JNIEnv * _env,jobject _this,jint cap)581 android_glEnable__I
582   (JNIEnv *_env, jobject _this, jint cap) {
583     glEnable(
584         (GLenum)cap
585     );
586 }
587 
588 /* void glEnableClientState ( GLenum array ) */
589 static void
android_glEnableClientState__I(JNIEnv * _env,jobject _this,jint array)590 android_glEnableClientState__I
591   (JNIEnv *_env, jobject _this, jint array) {
592     glEnableClientState(
593         (GLenum)array
594     );
595 }
596 
597 /* void glFinish ( void ) */
598 static void
android_glFinish__(JNIEnv * _env,jobject _this)599 android_glFinish__
600   (JNIEnv *_env, jobject _this) {
601     glFinish();
602 }
603 
604 /* void glFlush ( void ) */
605 static void
android_glFlush__(JNIEnv * _env,jobject _this)606 android_glFlush__
607   (JNIEnv *_env, jobject _this) {
608     glFlush();
609 }
610 
611 /* void glFogf ( GLenum pname, GLfloat param ) */
612 static void
android_glFogf__IF(JNIEnv * _env,jobject _this,jint pname,jfloat param)613 android_glFogf__IF
614   (JNIEnv *_env, jobject _this, jint pname, jfloat param) {
615     glFogf(
616         (GLenum)pname,
617         (GLfloat)param
618     );
619 }
620 
621 /* void glFogfv ( GLenum pname, const GLfloat *params ) */
622 static void
android_glFogfv__I_3FI(JNIEnv * _env,jobject _this,jint pname,jfloatArray params_ref,jint offset)623 android_glFogfv__I_3FI
624   (JNIEnv *_env, jobject _this, jint pname, jfloatArray params_ref, jint offset) {
625     GLfloat *params_base = (GLfloat *) 0;
626     jint _remaining;
627     GLfloat *params = (GLfloat *) 0;
628 
629     if (!params_ref) {
630         _env->ThrowNew(IAEClass, "params == null");
631         goto exit;
632     }
633     if (offset < 0) {
634         _env->ThrowNew(IAEClass, "offset < 0");
635         goto exit;
636     }
637     _remaining = _env->GetArrayLength(params_ref) - offset;
638     int _needed;
639     switch (pname) {
640 #if defined(GL_FOG_MODE)
641         case GL_FOG_MODE:
642 #endif // defined(GL_FOG_MODE)
643 #if defined(GL_FOG_DENSITY)
644         case GL_FOG_DENSITY:
645 #endif // defined(GL_FOG_DENSITY)
646 #if defined(GL_FOG_START)
647         case GL_FOG_START:
648 #endif // defined(GL_FOG_START)
649 #if defined(GL_FOG_END)
650         case GL_FOG_END:
651 #endif // defined(GL_FOG_END)
652             _needed = 1;
653             break;
654 #if defined(GL_FOG_COLOR)
655         case GL_FOG_COLOR:
656 #endif // defined(GL_FOG_COLOR)
657             _needed = 4;
658             break;
659         default:
660             _needed = 0;
661             break;
662     }
663     if (_remaining < _needed) {
664         _env->ThrowNew(IAEClass, "length - offset < needed");
665         goto exit;
666     }
667     params_base = (GLfloat *)
668         _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
669     params = params_base + offset;
670 
671     glFogfv(
672         (GLenum)pname,
673         (GLfloat *)params
674     );
675 
676 exit:
677     if (params_base) {
678         _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
679             JNI_ABORT);
680     }
681 }
682 
683 /* void glFogfv ( GLenum pname, const GLfloat *params ) */
684 static void
android_glFogfv__ILjava_nio_FloatBuffer_2(JNIEnv * _env,jobject _this,jint pname,jobject params_buf)685 android_glFogfv__ILjava_nio_FloatBuffer_2
686   (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
687     jarray _array = (jarray) 0;
688     jint _remaining;
689     GLfloat *params = (GLfloat *) 0;
690 
691     params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining);
692     int _needed;
693     switch (pname) {
694 #if defined(GL_FOG_MODE)
695         case GL_FOG_MODE:
696 #endif // defined(GL_FOG_MODE)
697 #if defined(GL_FOG_DENSITY)
698         case GL_FOG_DENSITY:
699 #endif // defined(GL_FOG_DENSITY)
700 #if defined(GL_FOG_START)
701         case GL_FOG_START:
702 #endif // defined(GL_FOG_START)
703 #if defined(GL_FOG_END)
704         case GL_FOG_END:
705 #endif // defined(GL_FOG_END)
706             _needed = 1;
707             break;
708 #if defined(GL_FOG_COLOR)
709         case GL_FOG_COLOR:
710 #endif // defined(GL_FOG_COLOR)
711             _needed = 4;
712             break;
713         default:
714             _needed = 0;
715             break;
716     }
717     if (_remaining < _needed) {
718         _env->ThrowNew(IAEClass, "remaining() < needed");
719         goto exit;
720     }
721     glFogfv(
722         (GLenum)pname,
723         (GLfloat *)params
724     );
725 
726 exit:
727     if (_array) {
728         releasePointer(_env, _array, params, JNI_FALSE);
729     }
730 }
731 
732 /* void glFogx ( GLenum pname, GLfixed param ) */
733 static void
android_glFogx__II(JNIEnv * _env,jobject _this,jint pname,jint param)734 android_glFogx__II
735   (JNIEnv *_env, jobject _this, jint pname, jint param) {
736     glFogx(
737         (GLenum)pname,
738         (GLfixed)param
739     );
740 }
741 
742 /* void glFogxv ( GLenum pname, const GLfixed *params ) */
743 static void
android_glFogxv__I_3II(JNIEnv * _env,jobject _this,jint pname,jintArray params_ref,jint offset)744 android_glFogxv__I_3II
745   (JNIEnv *_env, jobject _this, jint pname, jintArray params_ref, jint offset) {
746     GLfixed *params_base = (GLfixed *) 0;
747     jint _remaining;
748     GLfixed *params = (GLfixed *) 0;
749 
750     if (!params_ref) {
751         _env->ThrowNew(IAEClass, "params == null");
752         goto exit;
753     }
754     if (offset < 0) {
755         _env->ThrowNew(IAEClass, "offset < 0");
756         goto exit;
757     }
758     _remaining = _env->GetArrayLength(params_ref) - offset;
759     int _needed;
760     switch (pname) {
761 #if defined(GL_FOG_MODE)
762         case GL_FOG_MODE:
763 #endif // defined(GL_FOG_MODE)
764 #if defined(GL_FOG_DENSITY)
765         case GL_FOG_DENSITY:
766 #endif // defined(GL_FOG_DENSITY)
767 #if defined(GL_FOG_START)
768         case GL_FOG_START:
769 #endif // defined(GL_FOG_START)
770 #if defined(GL_FOG_END)
771         case GL_FOG_END:
772 #endif // defined(GL_FOG_END)
773             _needed = 1;
774             break;
775 #if defined(GL_FOG_COLOR)
776         case GL_FOG_COLOR:
777 #endif // defined(GL_FOG_COLOR)
778             _needed = 4;
779             break;
780         default:
781             _needed = 0;
782             break;
783     }
784     if (_remaining < _needed) {
785         _env->ThrowNew(IAEClass, "length - offset < needed");
786         goto exit;
787     }
788     params_base = (GLfixed *)
789         _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
790     params = params_base + offset;
791 
792     glFogxv(
793         (GLenum)pname,
794         (GLfixed *)params
795     );
796 
797 exit:
798     if (params_base) {
799         _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
800             JNI_ABORT);
801     }
802 }
803 
804 /* void glFogxv ( GLenum pname, const GLfixed *params ) */
805 static void
android_glFogxv__ILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint pname,jobject params_buf)806 android_glFogxv__ILjava_nio_IntBuffer_2
807   (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
808     jarray _array = (jarray) 0;
809     jint _remaining;
810     GLfixed *params = (GLfixed *) 0;
811 
812     params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining);
813     int _needed;
814     switch (pname) {
815 #if defined(GL_FOG_MODE)
816         case GL_FOG_MODE:
817 #endif // defined(GL_FOG_MODE)
818 #if defined(GL_FOG_DENSITY)
819         case GL_FOG_DENSITY:
820 #endif // defined(GL_FOG_DENSITY)
821 #if defined(GL_FOG_START)
822         case GL_FOG_START:
823 #endif // defined(GL_FOG_START)
824 #if defined(GL_FOG_END)
825         case GL_FOG_END:
826 #endif // defined(GL_FOG_END)
827             _needed = 1;
828             break;
829 #if defined(GL_FOG_COLOR)
830         case GL_FOG_COLOR:
831 #endif // defined(GL_FOG_COLOR)
832             _needed = 4;
833             break;
834         default:
835             _needed = 0;
836             break;
837     }
838     if (_remaining < _needed) {
839         _env->ThrowNew(IAEClass, "remaining() < needed");
840         goto exit;
841     }
842     glFogxv(
843         (GLenum)pname,
844         (GLfixed *)params
845     );
846 
847 exit:
848     if (_array) {
849         releasePointer(_env, _array, params, JNI_FALSE);
850     }
851 }
852 
853 /* void glFrontFace ( GLenum mode ) */
854 static void
android_glFrontFace__I(JNIEnv * _env,jobject _this,jint mode)855 android_glFrontFace__I
856   (JNIEnv *_env, jobject _this, jint mode) {
857     glFrontFace(
858         (GLenum)mode
859     );
860 }
861 
862 /* void glFrustumf ( GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar ) */
863 static void
android_glFrustumf__FFFFFF(JNIEnv * _env,jobject _this,jfloat left,jfloat right,jfloat bottom,jfloat top,jfloat zNear,jfloat zFar)864 android_glFrustumf__FFFFFF
865   (JNIEnv *_env, jobject _this, jfloat left, jfloat right, jfloat bottom, jfloat top, jfloat zNear, jfloat zFar) {
866     glFrustumf(
867         (GLfloat)left,
868         (GLfloat)right,
869         (GLfloat)bottom,
870         (GLfloat)top,
871         (GLfloat)zNear,
872         (GLfloat)zFar
873     );
874 }
875 
876 /* void glFrustumx ( GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar ) */
877 static void
android_glFrustumx__IIIIII(JNIEnv * _env,jobject _this,jint left,jint right,jint bottom,jint top,jint zNear,jint zFar)878 android_glFrustumx__IIIIII
879   (JNIEnv *_env, jobject _this, jint left, jint right, jint bottom, jint top, jint zNear, jint zFar) {
880     glFrustumx(
881         (GLfixed)left,
882         (GLfixed)right,
883         (GLfixed)bottom,
884         (GLfixed)top,
885         (GLfixed)zNear,
886         (GLfixed)zFar
887     );
888 }
889 
890 /* void glGenTextures ( GLsizei n, GLuint *textures ) */
891 static void
android_glGenTextures__I_3II(JNIEnv * _env,jobject _this,jint n,jintArray textures_ref,jint offset)892 android_glGenTextures__I_3II
893   (JNIEnv *_env, jobject _this, jint n, jintArray textures_ref, jint offset) {
894     jint _exception = 0;
895     GLuint *textures_base = (GLuint *) 0;
896     jint _remaining;
897     GLuint *textures = (GLuint *) 0;
898 
899     if (!textures_ref) {
900         _exception = 1;
901         _env->ThrowNew(IAEClass, "textures == null");
902         goto exit;
903     }
904     if (offset < 0) {
905         _exception = 1;
906         _env->ThrowNew(IAEClass, "offset < 0");
907         goto exit;
908     }
909     _remaining = _env->GetArrayLength(textures_ref) - offset;
910     if (_remaining < n) {
911         _exception = 1;
912         _env->ThrowNew(IAEClass, "length - offset < n");
913         goto exit;
914     }
915     textures_base = (GLuint *)
916         _env->GetPrimitiveArrayCritical(textures_ref, (jboolean *)0);
917     textures = textures_base + offset;
918 
919     glGenTextures(
920         (GLsizei)n,
921         (GLuint *)textures
922     );
923 
924 exit:
925     if (textures_base) {
926         _env->ReleasePrimitiveArrayCritical(textures_ref, textures_base,
927             _exception ? JNI_ABORT: 0);
928     }
929 }
930 
931 /* void glGenTextures ( GLsizei n, GLuint *textures ) */
932 static void
android_glGenTextures__ILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint n,jobject textures_buf)933 android_glGenTextures__ILjava_nio_IntBuffer_2
934   (JNIEnv *_env, jobject _this, jint n, jobject textures_buf) {
935     jint _exception = 0;
936     jarray _array = (jarray) 0;
937     jint _remaining;
938     GLuint *textures = (GLuint *) 0;
939 
940     textures = (GLuint *)getPointer(_env, textures_buf, &_array, &_remaining);
941     if (_remaining < n) {
942         _exception = 1;
943         _env->ThrowNew(IAEClass, "remaining() < n");
944         goto exit;
945     }
946     glGenTextures(
947         (GLsizei)n,
948         (GLuint *)textures
949     );
950 
951 exit:
952     if (_array) {
953         releasePointer(_env, _array, textures, _exception ? JNI_FALSE : JNI_TRUE);
954     }
955 }
956 
957 /* GLenum glGetError ( void ) */
958 static jint
android_glGetError__(JNIEnv * _env,jobject _this)959 android_glGetError__
960   (JNIEnv *_env, jobject _this) {
961     GLenum _returnValue;
962     _returnValue = glGetError();
963     return _returnValue;
964 }
965 
966 /* void glGetIntegerv ( GLenum pname, GLint *params ) */
967 static void
android_glGetIntegerv__I_3II(JNIEnv * _env,jobject _this,jint pname,jintArray params_ref,jint offset)968 android_glGetIntegerv__I_3II
969   (JNIEnv *_env, jobject _this, jint pname, jintArray params_ref, jint offset) {
970     jint _exception = 0;
971     GLint *params_base = (GLint *) 0;
972     jint _remaining;
973     GLint *params = (GLint *) 0;
974 
975     if (!params_ref) {
976         _exception = 1;
977         _env->ThrowNew(IAEClass, "params == null");
978         goto exit;
979     }
980     if (offset < 0) {
981         _exception = 1;
982         _env->ThrowNew(IAEClass, "offset < 0");
983         goto exit;
984     }
985     _remaining = _env->GetArrayLength(params_ref) - offset;
986     int _needed;
987     switch (pname) {
988 #if defined(GL_ALPHA_BITS)
989         case GL_ALPHA_BITS:
990 #endif // defined(GL_ALPHA_BITS)
991 #if defined(GL_ALPHA_TEST_FUNC)
992         case GL_ALPHA_TEST_FUNC:
993 #endif // defined(GL_ALPHA_TEST_FUNC)
994 #if defined(GL_ALPHA_TEST_REF)
995         case GL_ALPHA_TEST_REF:
996 #endif // defined(GL_ALPHA_TEST_REF)
997 #if defined(GL_BLEND_DST)
998         case GL_BLEND_DST:
999 #endif // defined(GL_BLEND_DST)
1000 #if defined(GL_BLUE_BITS)
1001         case GL_BLUE_BITS:
1002 #endif // defined(GL_BLUE_BITS)
1003 #if defined(GL_COLOR_ARRAY_BUFFER_BINDING)
1004         case GL_COLOR_ARRAY_BUFFER_BINDING:
1005 #endif // defined(GL_COLOR_ARRAY_BUFFER_BINDING)
1006 #if defined(GL_COLOR_ARRAY_SIZE)
1007         case GL_COLOR_ARRAY_SIZE:
1008 #endif // defined(GL_COLOR_ARRAY_SIZE)
1009 #if defined(GL_COLOR_ARRAY_STRIDE)
1010         case GL_COLOR_ARRAY_STRIDE:
1011 #endif // defined(GL_COLOR_ARRAY_STRIDE)
1012 #if defined(GL_COLOR_ARRAY_TYPE)
1013         case GL_COLOR_ARRAY_TYPE:
1014 #endif // defined(GL_COLOR_ARRAY_TYPE)
1015 #if defined(GL_CULL_FACE)
1016         case GL_CULL_FACE:
1017 #endif // defined(GL_CULL_FACE)
1018 #if defined(GL_DEPTH_BITS)
1019         case GL_DEPTH_BITS:
1020 #endif // defined(GL_DEPTH_BITS)
1021 #if defined(GL_DEPTH_CLEAR_VALUE)
1022         case GL_DEPTH_CLEAR_VALUE:
1023 #endif // defined(GL_DEPTH_CLEAR_VALUE)
1024 #if defined(GL_DEPTH_FUNC)
1025         case GL_DEPTH_FUNC:
1026 #endif // defined(GL_DEPTH_FUNC)
1027 #if defined(GL_DEPTH_WRITEMASK)
1028         case GL_DEPTH_WRITEMASK:
1029 #endif // defined(GL_DEPTH_WRITEMASK)
1030 #if defined(GL_FOG_DENSITY)
1031         case GL_FOG_DENSITY:
1032 #endif // defined(GL_FOG_DENSITY)
1033 #if defined(GL_FOG_END)
1034         case GL_FOG_END:
1035 #endif // defined(GL_FOG_END)
1036 #if defined(GL_FOG_MODE)
1037         case GL_FOG_MODE:
1038 #endif // defined(GL_FOG_MODE)
1039 #if defined(GL_FOG_START)
1040         case GL_FOG_START:
1041 #endif // defined(GL_FOG_START)
1042 #if defined(GL_FRONT_FACE)
1043         case GL_FRONT_FACE:
1044 #endif // defined(GL_FRONT_FACE)
1045 #if defined(GL_GREEN_BITS)
1046         case GL_GREEN_BITS:
1047 #endif // defined(GL_GREEN_BITS)
1048 #if defined(GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES)
1049         case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
1050 #endif // defined(GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES)
1051 #if defined(GL_IMPLEMENTATION_COLOR_READ_TYPE_OES)
1052         case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
1053 #endif // defined(GL_IMPLEMENTATION_COLOR_READ_TYPE_OES)
1054 #if defined(GL_LIGHT_MODEL_COLOR_CONTROL)
1055         case GL_LIGHT_MODEL_COLOR_CONTROL:
1056 #endif // defined(GL_LIGHT_MODEL_COLOR_CONTROL)
1057 #if defined(GL_LIGHT_MODEL_LOCAL_VIEWER)
1058         case GL_LIGHT_MODEL_LOCAL_VIEWER:
1059 #endif // defined(GL_LIGHT_MODEL_LOCAL_VIEWER)
1060 #if defined(GL_LIGHT_MODEL_TWO_SIDE)
1061         case GL_LIGHT_MODEL_TWO_SIDE:
1062 #endif // defined(GL_LIGHT_MODEL_TWO_SIDE)
1063 #if defined(GL_LINE_SMOOTH_HINT)
1064         case GL_LINE_SMOOTH_HINT:
1065 #endif // defined(GL_LINE_SMOOTH_HINT)
1066 #if defined(GL_LINE_WIDTH)
1067         case GL_LINE_WIDTH:
1068 #endif // defined(GL_LINE_WIDTH)
1069 #if defined(GL_LOGIC_OP_MODE)
1070         case GL_LOGIC_OP_MODE:
1071 #endif // defined(GL_LOGIC_OP_MODE)
1072 #if defined(GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES)
1073         case GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES:
1074 #endif // defined(GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES)
1075 #if defined(GL_MATRIX_INDEX_ARRAY_SIZE_OES)
1076         case GL_MATRIX_INDEX_ARRAY_SIZE_OES:
1077 #endif // defined(GL_MATRIX_INDEX_ARRAY_SIZE_OES)
1078 #if defined(GL_MATRIX_INDEX_ARRAY_STRIDE_OES)
1079         case GL_MATRIX_INDEX_ARRAY_STRIDE_OES:
1080 #endif // defined(GL_MATRIX_INDEX_ARRAY_STRIDE_OES)
1081 #if defined(GL_MATRIX_INDEX_ARRAY_TYPE_OES)
1082         case GL_MATRIX_INDEX_ARRAY_TYPE_OES:
1083 #endif // defined(GL_MATRIX_INDEX_ARRAY_TYPE_OES)
1084 #if defined(GL_MATRIX_MODE)
1085         case GL_MATRIX_MODE:
1086 #endif // defined(GL_MATRIX_MODE)
1087 #if defined(GL_MAX_CLIP_PLANES)
1088         case GL_MAX_CLIP_PLANES:
1089 #endif // defined(GL_MAX_CLIP_PLANES)
1090 #if defined(GL_MAX_ELEMENTS_INDICES)
1091         case GL_MAX_ELEMENTS_INDICES:
1092 #endif // defined(GL_MAX_ELEMENTS_INDICES)
1093 #if defined(GL_MAX_ELEMENTS_VERTICES)
1094         case GL_MAX_ELEMENTS_VERTICES:
1095 #endif // defined(GL_MAX_ELEMENTS_VERTICES)
1096 #if defined(GL_MAX_LIGHTS)
1097         case GL_MAX_LIGHTS:
1098 #endif // defined(GL_MAX_LIGHTS)
1099 #if defined(GL_MAX_MODELVIEW_STACK_DEPTH)
1100         case GL_MAX_MODELVIEW_STACK_DEPTH:
1101 #endif // defined(GL_MAX_MODELVIEW_STACK_DEPTH)
1102 #if defined(GL_MAX_PALETTE_MATRICES_OES)
1103         case GL_MAX_PALETTE_MATRICES_OES:
1104 #endif // defined(GL_MAX_PALETTE_MATRICES_OES)
1105 #if defined(GL_MAX_PROJECTION_STACK_DEPTH)
1106         case GL_MAX_PROJECTION_STACK_DEPTH:
1107 #endif // defined(GL_MAX_PROJECTION_STACK_DEPTH)
1108 #if defined(GL_MAX_TEXTURE_SIZE)
1109         case GL_MAX_TEXTURE_SIZE:
1110 #endif // defined(GL_MAX_TEXTURE_SIZE)
1111 #if defined(GL_MAX_TEXTURE_STACK_DEPTH)
1112         case GL_MAX_TEXTURE_STACK_DEPTH:
1113 #endif // defined(GL_MAX_TEXTURE_STACK_DEPTH)
1114 #if defined(GL_MAX_TEXTURE_UNITS)
1115         case GL_MAX_TEXTURE_UNITS:
1116 #endif // defined(GL_MAX_TEXTURE_UNITS)
1117 #if defined(GL_MAX_VERTEX_UNITS_OES)
1118         case GL_MAX_VERTEX_UNITS_OES:
1119 #endif // defined(GL_MAX_VERTEX_UNITS_OES)
1120 #if defined(GL_MODELVIEW_STACK_DEPTH)
1121         case GL_MODELVIEW_STACK_DEPTH:
1122 #endif // defined(GL_MODELVIEW_STACK_DEPTH)
1123 #if defined(GL_NORMAL_ARRAY_BUFFER_BINDING)
1124         case GL_NORMAL_ARRAY_BUFFER_BINDING:
1125 #endif // defined(GL_NORMAL_ARRAY_BUFFER_BINDING)
1126 #if defined(GL_NORMAL_ARRAY_STRIDE)
1127         case GL_NORMAL_ARRAY_STRIDE:
1128 #endif // defined(GL_NORMAL_ARRAY_STRIDE)
1129 #if defined(GL_NORMAL_ARRAY_TYPE)
1130         case GL_NORMAL_ARRAY_TYPE:
1131 #endif // defined(GL_NORMAL_ARRAY_TYPE)
1132 #if defined(GL_NUM_COMPRESSED_TEXTURE_FORMATS)
1133         case GL_NUM_COMPRESSED_TEXTURE_FORMATS:
1134 #endif // defined(GL_NUM_COMPRESSED_TEXTURE_FORMATS)
1135 #if defined(GL_PACK_ALIGNMENT)
1136         case GL_PACK_ALIGNMENT:
1137 #endif // defined(GL_PACK_ALIGNMENT)
1138 #if defined(GL_PERSPECTIVE_CORRECTION_HINT)
1139         case GL_PERSPECTIVE_CORRECTION_HINT:
1140 #endif // defined(GL_PERSPECTIVE_CORRECTION_HINT)
1141 #if defined(GL_POINT_SIZE)
1142         case GL_POINT_SIZE:
1143 #endif // defined(GL_POINT_SIZE)
1144 #if defined(GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES)
1145         case GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES:
1146 #endif // defined(GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES)
1147 #if defined(GL_POINT_SIZE_ARRAY_STRIDE_OES)
1148         case GL_POINT_SIZE_ARRAY_STRIDE_OES:
1149 #endif // defined(GL_POINT_SIZE_ARRAY_STRIDE_OES)
1150 #if defined(GL_POINT_SIZE_ARRAY_TYPE_OES)
1151         case GL_POINT_SIZE_ARRAY_TYPE_OES:
1152 #endif // defined(GL_POINT_SIZE_ARRAY_TYPE_OES)
1153 #if defined(GL_POINT_SMOOTH_HINT)
1154         case GL_POINT_SMOOTH_HINT:
1155 #endif // defined(GL_POINT_SMOOTH_HINT)
1156 #if defined(GL_POLYGON_OFFSET_FACTOR)
1157         case GL_POLYGON_OFFSET_FACTOR:
1158 #endif // defined(GL_POLYGON_OFFSET_FACTOR)
1159 #if defined(GL_POLYGON_OFFSET_UNITS)
1160         case GL_POLYGON_OFFSET_UNITS:
1161 #endif // defined(GL_POLYGON_OFFSET_UNITS)
1162 #if defined(GL_PROJECTION_STACK_DEPTH)
1163         case GL_PROJECTION_STACK_DEPTH:
1164 #endif // defined(GL_PROJECTION_STACK_DEPTH)
1165 #if defined(GL_RED_BITS)
1166         case GL_RED_BITS:
1167 #endif // defined(GL_RED_BITS)
1168 #if defined(GL_SHADE_MODEL)
1169         case GL_SHADE_MODEL:
1170 #endif // defined(GL_SHADE_MODEL)
1171 #if defined(GL_STENCIL_BITS)
1172         case GL_STENCIL_BITS:
1173 #endif // defined(GL_STENCIL_BITS)
1174 #if defined(GL_STENCIL_CLEAR_VALUE)
1175         case GL_STENCIL_CLEAR_VALUE:
1176 #endif // defined(GL_STENCIL_CLEAR_VALUE)
1177 #if defined(GL_STENCIL_FAIL)
1178         case GL_STENCIL_FAIL:
1179 #endif // defined(GL_STENCIL_FAIL)
1180 #if defined(GL_STENCIL_FUNC)
1181         case GL_STENCIL_FUNC:
1182 #endif // defined(GL_STENCIL_FUNC)
1183 #if defined(GL_STENCIL_PASS_DEPTH_FAIL)
1184         case GL_STENCIL_PASS_DEPTH_FAIL:
1185 #endif // defined(GL_STENCIL_PASS_DEPTH_FAIL)
1186 #if defined(GL_STENCIL_PASS_DEPTH_PASS)
1187         case GL_STENCIL_PASS_DEPTH_PASS:
1188 #endif // defined(GL_STENCIL_PASS_DEPTH_PASS)
1189 #if defined(GL_STENCIL_REF)
1190         case GL_STENCIL_REF:
1191 #endif // defined(GL_STENCIL_REF)
1192 #if defined(GL_STENCIL_VALUE_MASK)
1193         case GL_STENCIL_VALUE_MASK:
1194 #endif // defined(GL_STENCIL_VALUE_MASK)
1195 #if defined(GL_STENCIL_WRITEMASK)
1196         case GL_STENCIL_WRITEMASK:
1197 #endif // defined(GL_STENCIL_WRITEMASK)
1198 #if defined(GL_SUBPIXEL_BITS)
1199         case GL_SUBPIXEL_BITS:
1200 #endif // defined(GL_SUBPIXEL_BITS)
1201 #if defined(GL_TEXTURE_BINDING_2D)
1202         case GL_TEXTURE_BINDING_2D:
1203 #endif // defined(GL_TEXTURE_BINDING_2D)
1204 #if defined(GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING)
1205         case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING:
1206 #endif // defined(GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING)
1207 #if defined(GL_TEXTURE_COORD_ARRAY_SIZE)
1208         case GL_TEXTURE_COORD_ARRAY_SIZE:
1209 #endif // defined(GL_TEXTURE_COORD_ARRAY_SIZE)
1210 #if defined(GL_TEXTURE_COORD_ARRAY_STRIDE)
1211         case GL_TEXTURE_COORD_ARRAY_STRIDE:
1212 #endif // defined(GL_TEXTURE_COORD_ARRAY_STRIDE)
1213 #if defined(GL_TEXTURE_COORD_ARRAY_TYPE)
1214         case GL_TEXTURE_COORD_ARRAY_TYPE:
1215 #endif // defined(GL_TEXTURE_COORD_ARRAY_TYPE)
1216 #if defined(GL_TEXTURE_STACK_DEPTH)
1217         case GL_TEXTURE_STACK_DEPTH:
1218 #endif // defined(GL_TEXTURE_STACK_DEPTH)
1219 #if defined(GL_UNPACK_ALIGNMENT)
1220         case GL_UNPACK_ALIGNMENT:
1221 #endif // defined(GL_UNPACK_ALIGNMENT)
1222 #if defined(GL_VERTEX_ARRAY_BUFFER_BINDING)
1223         case GL_VERTEX_ARRAY_BUFFER_BINDING:
1224 #endif // defined(GL_VERTEX_ARRAY_BUFFER_BINDING)
1225 #if defined(GL_VERTEX_ARRAY_SIZE)
1226         case GL_VERTEX_ARRAY_SIZE:
1227 #endif // defined(GL_VERTEX_ARRAY_SIZE)
1228 #if defined(GL_VERTEX_ARRAY_STRIDE)
1229         case GL_VERTEX_ARRAY_STRIDE:
1230 #endif // defined(GL_VERTEX_ARRAY_STRIDE)
1231 #if defined(GL_VERTEX_ARRAY_TYPE)
1232         case GL_VERTEX_ARRAY_TYPE:
1233 #endif // defined(GL_VERTEX_ARRAY_TYPE)
1234 #if defined(GL_WEIGHT_ARRAY_BUFFER_BINDING_OES)
1235         case GL_WEIGHT_ARRAY_BUFFER_BINDING_OES:
1236 #endif // defined(GL_WEIGHT_ARRAY_BUFFER_BINDING_OES)
1237 #if defined(GL_WEIGHT_ARRAY_SIZE_OES)
1238         case GL_WEIGHT_ARRAY_SIZE_OES:
1239 #endif // defined(GL_WEIGHT_ARRAY_SIZE_OES)
1240 #if defined(GL_WEIGHT_ARRAY_STRIDE_OES)
1241         case GL_WEIGHT_ARRAY_STRIDE_OES:
1242 #endif // defined(GL_WEIGHT_ARRAY_STRIDE_OES)
1243 #if defined(GL_WEIGHT_ARRAY_TYPE_OES)
1244         case GL_WEIGHT_ARRAY_TYPE_OES:
1245 #endif // defined(GL_WEIGHT_ARRAY_TYPE_OES)
1246             _needed = 1;
1247             break;
1248 #if defined(GL_ALIASED_POINT_SIZE_RANGE)
1249         case GL_ALIASED_POINT_SIZE_RANGE:
1250 #endif // defined(GL_ALIASED_POINT_SIZE_RANGE)
1251 #if defined(GL_ALIASED_LINE_WIDTH_RANGE)
1252         case GL_ALIASED_LINE_WIDTH_RANGE:
1253 #endif // defined(GL_ALIASED_LINE_WIDTH_RANGE)
1254 #if defined(GL_DEPTH_RANGE)
1255         case GL_DEPTH_RANGE:
1256 #endif // defined(GL_DEPTH_RANGE)
1257 #if defined(GL_MAX_VIEWPORT_DIMS)
1258         case GL_MAX_VIEWPORT_DIMS:
1259 #endif // defined(GL_MAX_VIEWPORT_DIMS)
1260 #if defined(GL_SMOOTH_LINE_WIDTH_RANGE)
1261         case GL_SMOOTH_LINE_WIDTH_RANGE:
1262 #endif // defined(GL_SMOOTH_LINE_WIDTH_RANGE)
1263 #if defined(GL_SMOOTH_POINT_SIZE_RANGE)
1264         case GL_SMOOTH_POINT_SIZE_RANGE:
1265 #endif // defined(GL_SMOOTH_POINT_SIZE_RANGE)
1266             _needed = 2;
1267             break;
1268 #if defined(GL_COLOR_CLEAR_VALUE)
1269         case GL_COLOR_CLEAR_VALUE:
1270 #endif // defined(GL_COLOR_CLEAR_VALUE)
1271 #if defined(GL_COLOR_WRITEMASK)
1272         case GL_COLOR_WRITEMASK:
1273 #endif // defined(GL_COLOR_WRITEMASK)
1274 #if defined(GL_FOG_COLOR)
1275         case GL_FOG_COLOR:
1276 #endif // defined(GL_FOG_COLOR)
1277 #if defined(GL_LIGHT_MODEL_AMBIENT)
1278         case GL_LIGHT_MODEL_AMBIENT:
1279 #endif // defined(GL_LIGHT_MODEL_AMBIENT)
1280 #if defined(GL_SCISSOR_BOX)
1281         case GL_SCISSOR_BOX:
1282 #endif // defined(GL_SCISSOR_BOX)
1283 #if defined(GL_VIEWPORT)
1284         case GL_VIEWPORT:
1285 #endif // defined(GL_VIEWPORT)
1286             _needed = 4;
1287             break;
1288 #if defined(GL_MODELVIEW_MATRIX)
1289         case GL_MODELVIEW_MATRIX:
1290 #endif // defined(GL_MODELVIEW_MATRIX)
1291 #if defined(GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES)
1292         case GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES:
1293 #endif // defined(GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES)
1294 #if defined(GL_PROJECTION_MATRIX)
1295         case GL_PROJECTION_MATRIX:
1296 #endif // defined(GL_PROJECTION_MATRIX)
1297 #if defined(GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES)
1298         case GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES:
1299 #endif // defined(GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES)
1300 #if defined(GL_TEXTURE_MATRIX)
1301         case GL_TEXTURE_MATRIX:
1302 #endif // defined(GL_TEXTURE_MATRIX)
1303 #if defined(GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES)
1304         case GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES:
1305 #endif // defined(GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES)
1306             _needed = 16;
1307             break;
1308 #if defined(GL_COMPRESSED_TEXTURE_FORMATS)
1309         case GL_COMPRESSED_TEXTURE_FORMATS:
1310 #endif // defined(GL_COMPRESSED_TEXTURE_FORMATS)
1311             _needed = getNumCompressedTextureFormats();
1312             break;
1313         default:
1314             _needed = 0;
1315             break;
1316     }
1317     if (_remaining < _needed) {
1318         _exception = 1;
1319         _env->ThrowNew(IAEClass, "length - offset < needed");
1320         goto exit;
1321     }
1322     params_base = (GLint *)
1323         _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
1324     params = params_base + offset;
1325 
1326     glGetIntegerv(
1327         (GLenum)pname,
1328         (GLint *)params
1329     );
1330 
1331 exit:
1332     if (params_base) {
1333         _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
1334             _exception ? JNI_ABORT: 0);
1335     }
1336 }
1337 
1338 /* void glGetIntegerv ( GLenum pname, GLint *params ) */
1339 static void
android_glGetIntegerv__ILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint pname,jobject params_buf)1340 android_glGetIntegerv__ILjava_nio_IntBuffer_2
1341   (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
1342     jint _exception = 0;
1343     jarray _array = (jarray) 0;
1344     jint _remaining;
1345     GLint *params = (GLint *) 0;
1346 
1347     params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining);
1348     int _needed;
1349     switch (pname) {
1350 #if defined(GL_ALPHA_BITS)
1351         case GL_ALPHA_BITS:
1352 #endif // defined(GL_ALPHA_BITS)
1353 #if defined(GL_ALPHA_TEST_FUNC)
1354         case GL_ALPHA_TEST_FUNC:
1355 #endif // defined(GL_ALPHA_TEST_FUNC)
1356 #if defined(GL_ALPHA_TEST_REF)
1357         case GL_ALPHA_TEST_REF:
1358 #endif // defined(GL_ALPHA_TEST_REF)
1359 #if defined(GL_BLEND_DST)
1360         case GL_BLEND_DST:
1361 #endif // defined(GL_BLEND_DST)
1362 #if defined(GL_BLUE_BITS)
1363         case GL_BLUE_BITS:
1364 #endif // defined(GL_BLUE_BITS)
1365 #if defined(GL_COLOR_ARRAY_BUFFER_BINDING)
1366         case GL_COLOR_ARRAY_BUFFER_BINDING:
1367 #endif // defined(GL_COLOR_ARRAY_BUFFER_BINDING)
1368 #if defined(GL_COLOR_ARRAY_SIZE)
1369         case GL_COLOR_ARRAY_SIZE:
1370 #endif // defined(GL_COLOR_ARRAY_SIZE)
1371 #if defined(GL_COLOR_ARRAY_STRIDE)
1372         case GL_COLOR_ARRAY_STRIDE:
1373 #endif // defined(GL_COLOR_ARRAY_STRIDE)
1374 #if defined(GL_COLOR_ARRAY_TYPE)
1375         case GL_COLOR_ARRAY_TYPE:
1376 #endif // defined(GL_COLOR_ARRAY_TYPE)
1377 #if defined(GL_CULL_FACE)
1378         case GL_CULL_FACE:
1379 #endif // defined(GL_CULL_FACE)
1380 #if defined(GL_DEPTH_BITS)
1381         case GL_DEPTH_BITS:
1382 #endif // defined(GL_DEPTH_BITS)
1383 #if defined(GL_DEPTH_CLEAR_VALUE)
1384         case GL_DEPTH_CLEAR_VALUE:
1385 #endif // defined(GL_DEPTH_CLEAR_VALUE)
1386 #if defined(GL_DEPTH_FUNC)
1387         case GL_DEPTH_FUNC:
1388 #endif // defined(GL_DEPTH_FUNC)
1389 #if defined(GL_DEPTH_WRITEMASK)
1390         case GL_DEPTH_WRITEMASK:
1391 #endif // defined(GL_DEPTH_WRITEMASK)
1392 #if defined(GL_FOG_DENSITY)
1393         case GL_FOG_DENSITY:
1394 #endif // defined(GL_FOG_DENSITY)
1395 #if defined(GL_FOG_END)
1396         case GL_FOG_END:
1397 #endif // defined(GL_FOG_END)
1398 #if defined(GL_FOG_MODE)
1399         case GL_FOG_MODE:
1400 #endif // defined(GL_FOG_MODE)
1401 #if defined(GL_FOG_START)
1402         case GL_FOG_START:
1403 #endif // defined(GL_FOG_START)
1404 #if defined(GL_FRONT_FACE)
1405         case GL_FRONT_FACE:
1406 #endif // defined(GL_FRONT_FACE)
1407 #if defined(GL_GREEN_BITS)
1408         case GL_GREEN_BITS:
1409 #endif // defined(GL_GREEN_BITS)
1410 #if defined(GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES)
1411         case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
1412 #endif // defined(GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES)
1413 #if defined(GL_IMPLEMENTATION_COLOR_READ_TYPE_OES)
1414         case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
1415 #endif // defined(GL_IMPLEMENTATION_COLOR_READ_TYPE_OES)
1416 #if defined(GL_LIGHT_MODEL_COLOR_CONTROL)
1417         case GL_LIGHT_MODEL_COLOR_CONTROL:
1418 #endif // defined(GL_LIGHT_MODEL_COLOR_CONTROL)
1419 #if defined(GL_LIGHT_MODEL_LOCAL_VIEWER)
1420         case GL_LIGHT_MODEL_LOCAL_VIEWER:
1421 #endif // defined(GL_LIGHT_MODEL_LOCAL_VIEWER)
1422 #if defined(GL_LIGHT_MODEL_TWO_SIDE)
1423         case GL_LIGHT_MODEL_TWO_SIDE:
1424 #endif // defined(GL_LIGHT_MODEL_TWO_SIDE)
1425 #if defined(GL_LINE_SMOOTH_HINT)
1426         case GL_LINE_SMOOTH_HINT:
1427 #endif // defined(GL_LINE_SMOOTH_HINT)
1428 #if defined(GL_LINE_WIDTH)
1429         case GL_LINE_WIDTH:
1430 #endif // defined(GL_LINE_WIDTH)
1431 #if defined(GL_LOGIC_OP_MODE)
1432         case GL_LOGIC_OP_MODE:
1433 #endif // defined(GL_LOGIC_OP_MODE)
1434 #if defined(GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES)
1435         case GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES:
1436 #endif // defined(GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES)
1437 #if defined(GL_MATRIX_INDEX_ARRAY_SIZE_OES)
1438         case GL_MATRIX_INDEX_ARRAY_SIZE_OES:
1439 #endif // defined(GL_MATRIX_INDEX_ARRAY_SIZE_OES)
1440 #if defined(GL_MATRIX_INDEX_ARRAY_STRIDE_OES)
1441         case GL_MATRIX_INDEX_ARRAY_STRIDE_OES:
1442 #endif // defined(GL_MATRIX_INDEX_ARRAY_STRIDE_OES)
1443 #if defined(GL_MATRIX_INDEX_ARRAY_TYPE_OES)
1444         case GL_MATRIX_INDEX_ARRAY_TYPE_OES:
1445 #endif // defined(GL_MATRIX_INDEX_ARRAY_TYPE_OES)
1446 #if defined(GL_MATRIX_MODE)
1447         case GL_MATRIX_MODE:
1448 #endif // defined(GL_MATRIX_MODE)
1449 #if defined(GL_MAX_CLIP_PLANES)
1450         case GL_MAX_CLIP_PLANES:
1451 #endif // defined(GL_MAX_CLIP_PLANES)
1452 #if defined(GL_MAX_ELEMENTS_INDICES)
1453         case GL_MAX_ELEMENTS_INDICES:
1454 #endif // defined(GL_MAX_ELEMENTS_INDICES)
1455 #if defined(GL_MAX_ELEMENTS_VERTICES)
1456         case GL_MAX_ELEMENTS_VERTICES:
1457 #endif // defined(GL_MAX_ELEMENTS_VERTICES)
1458 #if defined(GL_MAX_LIGHTS)
1459         case GL_MAX_LIGHTS:
1460 #endif // defined(GL_MAX_LIGHTS)
1461 #if defined(GL_MAX_MODELVIEW_STACK_DEPTH)
1462         case GL_MAX_MODELVIEW_STACK_DEPTH:
1463 #endif // defined(GL_MAX_MODELVIEW_STACK_DEPTH)
1464 #if defined(GL_MAX_PALETTE_MATRICES_OES)
1465         case GL_MAX_PALETTE_MATRICES_OES:
1466 #endif // defined(GL_MAX_PALETTE_MATRICES_OES)
1467 #if defined(GL_MAX_PROJECTION_STACK_DEPTH)
1468         case GL_MAX_PROJECTION_STACK_DEPTH:
1469 #endif // defined(GL_MAX_PROJECTION_STACK_DEPTH)
1470 #if defined(GL_MAX_TEXTURE_SIZE)
1471         case GL_MAX_TEXTURE_SIZE:
1472 #endif // defined(GL_MAX_TEXTURE_SIZE)
1473 #if defined(GL_MAX_TEXTURE_STACK_DEPTH)
1474         case GL_MAX_TEXTURE_STACK_DEPTH:
1475 #endif // defined(GL_MAX_TEXTURE_STACK_DEPTH)
1476 #if defined(GL_MAX_TEXTURE_UNITS)
1477         case GL_MAX_TEXTURE_UNITS:
1478 #endif // defined(GL_MAX_TEXTURE_UNITS)
1479 #if defined(GL_MAX_VERTEX_UNITS_OES)
1480         case GL_MAX_VERTEX_UNITS_OES:
1481 #endif // defined(GL_MAX_VERTEX_UNITS_OES)
1482 #if defined(GL_MODELVIEW_STACK_DEPTH)
1483         case GL_MODELVIEW_STACK_DEPTH:
1484 #endif // defined(GL_MODELVIEW_STACK_DEPTH)
1485 #if defined(GL_NORMAL_ARRAY_BUFFER_BINDING)
1486         case GL_NORMAL_ARRAY_BUFFER_BINDING:
1487 #endif // defined(GL_NORMAL_ARRAY_BUFFER_BINDING)
1488 #if defined(GL_NORMAL_ARRAY_STRIDE)
1489         case GL_NORMAL_ARRAY_STRIDE:
1490 #endif // defined(GL_NORMAL_ARRAY_STRIDE)
1491 #if defined(GL_NORMAL_ARRAY_TYPE)
1492         case GL_NORMAL_ARRAY_TYPE:
1493 #endif // defined(GL_NORMAL_ARRAY_TYPE)
1494 #if defined(GL_NUM_COMPRESSED_TEXTURE_FORMATS)
1495         case GL_NUM_COMPRESSED_TEXTURE_FORMATS:
1496 #endif // defined(GL_NUM_COMPRESSED_TEXTURE_FORMATS)
1497 #if defined(GL_PACK_ALIGNMENT)
1498         case GL_PACK_ALIGNMENT:
1499 #endif // defined(GL_PACK_ALIGNMENT)
1500 #if defined(GL_PERSPECTIVE_CORRECTION_HINT)
1501         case GL_PERSPECTIVE_CORRECTION_HINT:
1502 #endif // defined(GL_PERSPECTIVE_CORRECTION_HINT)
1503 #if defined(GL_POINT_SIZE)
1504         case GL_POINT_SIZE:
1505 #endif // defined(GL_POINT_SIZE)
1506 #if defined(GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES)
1507         case GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES:
1508 #endif // defined(GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES)
1509 #if defined(GL_POINT_SIZE_ARRAY_STRIDE_OES)
1510         case GL_POINT_SIZE_ARRAY_STRIDE_OES:
1511 #endif // defined(GL_POINT_SIZE_ARRAY_STRIDE_OES)
1512 #if defined(GL_POINT_SIZE_ARRAY_TYPE_OES)
1513         case GL_POINT_SIZE_ARRAY_TYPE_OES:
1514 #endif // defined(GL_POINT_SIZE_ARRAY_TYPE_OES)
1515 #if defined(GL_POINT_SMOOTH_HINT)
1516         case GL_POINT_SMOOTH_HINT:
1517 #endif // defined(GL_POINT_SMOOTH_HINT)
1518 #if defined(GL_POLYGON_OFFSET_FACTOR)
1519         case GL_POLYGON_OFFSET_FACTOR:
1520 #endif // defined(GL_POLYGON_OFFSET_FACTOR)
1521 #if defined(GL_POLYGON_OFFSET_UNITS)
1522         case GL_POLYGON_OFFSET_UNITS:
1523 #endif // defined(GL_POLYGON_OFFSET_UNITS)
1524 #if defined(GL_PROJECTION_STACK_DEPTH)
1525         case GL_PROJECTION_STACK_DEPTH:
1526 #endif // defined(GL_PROJECTION_STACK_DEPTH)
1527 #if defined(GL_RED_BITS)
1528         case GL_RED_BITS:
1529 #endif // defined(GL_RED_BITS)
1530 #if defined(GL_SHADE_MODEL)
1531         case GL_SHADE_MODEL:
1532 #endif // defined(GL_SHADE_MODEL)
1533 #if defined(GL_STENCIL_BITS)
1534         case GL_STENCIL_BITS:
1535 #endif // defined(GL_STENCIL_BITS)
1536 #if defined(GL_STENCIL_CLEAR_VALUE)
1537         case GL_STENCIL_CLEAR_VALUE:
1538 #endif // defined(GL_STENCIL_CLEAR_VALUE)
1539 #if defined(GL_STENCIL_FAIL)
1540         case GL_STENCIL_FAIL:
1541 #endif // defined(GL_STENCIL_FAIL)
1542 #if defined(GL_STENCIL_FUNC)
1543         case GL_STENCIL_FUNC:
1544 #endif // defined(GL_STENCIL_FUNC)
1545 #if defined(GL_STENCIL_PASS_DEPTH_FAIL)
1546         case GL_STENCIL_PASS_DEPTH_FAIL:
1547 #endif // defined(GL_STENCIL_PASS_DEPTH_FAIL)
1548 #if defined(GL_STENCIL_PASS_DEPTH_PASS)
1549         case GL_STENCIL_PASS_DEPTH_PASS:
1550 #endif // defined(GL_STENCIL_PASS_DEPTH_PASS)
1551 #if defined(GL_STENCIL_REF)
1552         case GL_STENCIL_REF:
1553 #endif // defined(GL_STENCIL_REF)
1554 #if defined(GL_STENCIL_VALUE_MASK)
1555         case GL_STENCIL_VALUE_MASK:
1556 #endif // defined(GL_STENCIL_VALUE_MASK)
1557 #if defined(GL_STENCIL_WRITEMASK)
1558         case GL_STENCIL_WRITEMASK:
1559 #endif // defined(GL_STENCIL_WRITEMASK)
1560 #if defined(GL_SUBPIXEL_BITS)
1561         case GL_SUBPIXEL_BITS:
1562 #endif // defined(GL_SUBPIXEL_BITS)
1563 #if defined(GL_TEXTURE_BINDING_2D)
1564         case GL_TEXTURE_BINDING_2D:
1565 #endif // defined(GL_TEXTURE_BINDING_2D)
1566 #if defined(GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING)
1567         case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING:
1568 #endif // defined(GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING)
1569 #if defined(GL_TEXTURE_COORD_ARRAY_SIZE)
1570         case GL_TEXTURE_COORD_ARRAY_SIZE:
1571 #endif // defined(GL_TEXTURE_COORD_ARRAY_SIZE)
1572 #if defined(GL_TEXTURE_COORD_ARRAY_STRIDE)
1573         case GL_TEXTURE_COORD_ARRAY_STRIDE:
1574 #endif // defined(GL_TEXTURE_COORD_ARRAY_STRIDE)
1575 #if defined(GL_TEXTURE_COORD_ARRAY_TYPE)
1576         case GL_TEXTURE_COORD_ARRAY_TYPE:
1577 #endif // defined(GL_TEXTURE_COORD_ARRAY_TYPE)
1578 #if defined(GL_TEXTURE_STACK_DEPTH)
1579         case GL_TEXTURE_STACK_DEPTH:
1580 #endif // defined(GL_TEXTURE_STACK_DEPTH)
1581 #if defined(GL_UNPACK_ALIGNMENT)
1582         case GL_UNPACK_ALIGNMENT:
1583 #endif // defined(GL_UNPACK_ALIGNMENT)
1584 #if defined(GL_VERTEX_ARRAY_BUFFER_BINDING)
1585         case GL_VERTEX_ARRAY_BUFFER_BINDING:
1586 #endif // defined(GL_VERTEX_ARRAY_BUFFER_BINDING)
1587 #if defined(GL_VERTEX_ARRAY_SIZE)
1588         case GL_VERTEX_ARRAY_SIZE:
1589 #endif // defined(GL_VERTEX_ARRAY_SIZE)
1590 #if defined(GL_VERTEX_ARRAY_STRIDE)
1591         case GL_VERTEX_ARRAY_STRIDE:
1592 #endif // defined(GL_VERTEX_ARRAY_STRIDE)
1593 #if defined(GL_VERTEX_ARRAY_TYPE)
1594         case GL_VERTEX_ARRAY_TYPE:
1595 #endif // defined(GL_VERTEX_ARRAY_TYPE)
1596 #if defined(GL_WEIGHT_ARRAY_BUFFER_BINDING_OES)
1597         case GL_WEIGHT_ARRAY_BUFFER_BINDING_OES:
1598 #endif // defined(GL_WEIGHT_ARRAY_BUFFER_BINDING_OES)
1599 #if defined(GL_WEIGHT_ARRAY_SIZE_OES)
1600         case GL_WEIGHT_ARRAY_SIZE_OES:
1601 #endif // defined(GL_WEIGHT_ARRAY_SIZE_OES)
1602 #if defined(GL_WEIGHT_ARRAY_STRIDE_OES)
1603         case GL_WEIGHT_ARRAY_STRIDE_OES:
1604 #endif // defined(GL_WEIGHT_ARRAY_STRIDE_OES)
1605 #if defined(GL_WEIGHT_ARRAY_TYPE_OES)
1606         case GL_WEIGHT_ARRAY_TYPE_OES:
1607 #endif // defined(GL_WEIGHT_ARRAY_TYPE_OES)
1608             _needed = 1;
1609             break;
1610 #if defined(GL_ALIASED_POINT_SIZE_RANGE)
1611         case GL_ALIASED_POINT_SIZE_RANGE:
1612 #endif // defined(GL_ALIASED_POINT_SIZE_RANGE)
1613 #if defined(GL_ALIASED_LINE_WIDTH_RANGE)
1614         case GL_ALIASED_LINE_WIDTH_RANGE:
1615 #endif // defined(GL_ALIASED_LINE_WIDTH_RANGE)
1616 #if defined(GL_DEPTH_RANGE)
1617         case GL_DEPTH_RANGE:
1618 #endif // defined(GL_DEPTH_RANGE)
1619 #if defined(GL_MAX_VIEWPORT_DIMS)
1620         case GL_MAX_VIEWPORT_DIMS:
1621 #endif // defined(GL_MAX_VIEWPORT_DIMS)
1622 #if defined(GL_SMOOTH_LINE_WIDTH_RANGE)
1623         case GL_SMOOTH_LINE_WIDTH_RANGE:
1624 #endif // defined(GL_SMOOTH_LINE_WIDTH_RANGE)
1625 #if defined(GL_SMOOTH_POINT_SIZE_RANGE)
1626         case GL_SMOOTH_POINT_SIZE_RANGE:
1627 #endif // defined(GL_SMOOTH_POINT_SIZE_RANGE)
1628             _needed = 2;
1629             break;
1630 #if defined(GL_COLOR_CLEAR_VALUE)
1631         case GL_COLOR_CLEAR_VALUE:
1632 #endif // defined(GL_COLOR_CLEAR_VALUE)
1633 #if defined(GL_COLOR_WRITEMASK)
1634         case GL_COLOR_WRITEMASK:
1635 #endif // defined(GL_COLOR_WRITEMASK)
1636 #if defined(GL_FOG_COLOR)
1637         case GL_FOG_COLOR:
1638 #endif // defined(GL_FOG_COLOR)
1639 #if defined(GL_LIGHT_MODEL_AMBIENT)
1640         case GL_LIGHT_MODEL_AMBIENT:
1641 #endif // defined(GL_LIGHT_MODEL_AMBIENT)
1642 #if defined(GL_SCISSOR_BOX)
1643         case GL_SCISSOR_BOX:
1644 #endif // defined(GL_SCISSOR_BOX)
1645 #if defined(GL_VIEWPORT)
1646         case GL_VIEWPORT:
1647 #endif // defined(GL_VIEWPORT)
1648             _needed = 4;
1649             break;
1650 #if defined(GL_MODELVIEW_MATRIX)
1651         case GL_MODELVIEW_MATRIX:
1652 #endif // defined(GL_MODELVIEW_MATRIX)
1653 #if defined(GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES)
1654         case GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES:
1655 #endif // defined(GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES)
1656 #if defined(GL_PROJECTION_MATRIX)
1657         case GL_PROJECTION_MATRIX:
1658 #endif // defined(GL_PROJECTION_MATRIX)
1659 #if defined(GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES)
1660         case GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES:
1661 #endif // defined(GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES)
1662 #if defined(GL_TEXTURE_MATRIX)
1663         case GL_TEXTURE_MATRIX:
1664 #endif // defined(GL_TEXTURE_MATRIX)
1665 #if defined(GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES)
1666         case GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES:
1667 #endif // defined(GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES)
1668             _needed = 16;
1669             break;
1670 #if defined(GL_COMPRESSED_TEXTURE_FORMATS)
1671         case GL_COMPRESSED_TEXTURE_FORMATS:
1672 #endif // defined(GL_COMPRESSED_TEXTURE_FORMATS)
1673             _needed = getNumCompressedTextureFormats();
1674             break;
1675         default:
1676             _needed = 0;
1677             break;
1678     }
1679     if (_remaining < _needed) {
1680         _exception = 1;
1681         _env->ThrowNew(IAEClass, "remaining() < needed");
1682         goto exit;
1683     }
1684     glGetIntegerv(
1685         (GLenum)pname,
1686         (GLint *)params
1687     );
1688 
1689 exit:
1690     if (_array) {
1691         releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
1692     }
1693 }
1694 
1695 #include <string.h>
1696 
1697 /* const GLubyte * glGetString ( GLenum name ) */
1698 static
1699 jstring
android_glGetString(JNIEnv * _env,jobject _this,jint name)1700 android_glGetString
1701   (JNIEnv *_env, jobject _this, jint name) {
1702     const char * chars = (const char *)glGetString((GLenum)name);
1703     jstring output = _env->NewStringUTF(chars);
1704     return output;
1705 }
1706 /* void glHint ( GLenum target, GLenum mode ) */
1707 static void
android_glHint__II(JNIEnv * _env,jobject _this,jint target,jint mode)1708 android_glHint__II
1709   (JNIEnv *_env, jobject _this, jint target, jint mode) {
1710     glHint(
1711         (GLenum)target,
1712         (GLenum)mode
1713     );
1714 }
1715 
1716 /* void glLightModelf ( GLenum pname, GLfloat param ) */
1717 static void
android_glLightModelf__IF(JNIEnv * _env,jobject _this,jint pname,jfloat param)1718 android_glLightModelf__IF
1719   (JNIEnv *_env, jobject _this, jint pname, jfloat param) {
1720     glLightModelf(
1721         (GLenum)pname,
1722         (GLfloat)param
1723     );
1724 }
1725 
1726 /* void glLightModelfv ( GLenum pname, const GLfloat *params ) */
1727 static void
android_glLightModelfv__I_3FI(JNIEnv * _env,jobject _this,jint pname,jfloatArray params_ref,jint offset)1728 android_glLightModelfv__I_3FI
1729   (JNIEnv *_env, jobject _this, jint pname, jfloatArray params_ref, jint offset) {
1730     GLfloat *params_base = (GLfloat *) 0;
1731     jint _remaining;
1732     GLfloat *params = (GLfloat *) 0;
1733 
1734     if (!params_ref) {
1735         _env->ThrowNew(IAEClass, "params == null");
1736         goto exit;
1737     }
1738     if (offset < 0) {
1739         _env->ThrowNew(IAEClass, "offset < 0");
1740         goto exit;
1741     }
1742     _remaining = _env->GetArrayLength(params_ref) - offset;
1743     int _needed;
1744     switch (pname) {
1745 #if defined(GL_LIGHT_MODEL_TWO_SIDE)
1746         case GL_LIGHT_MODEL_TWO_SIDE:
1747 #endif // defined(GL_LIGHT_MODEL_TWO_SIDE)
1748             _needed = 1;
1749             break;
1750 #if defined(GL_LIGHT_MODEL_AMBIENT)
1751         case GL_LIGHT_MODEL_AMBIENT:
1752 #endif // defined(GL_LIGHT_MODEL_AMBIENT)
1753             _needed = 4;
1754             break;
1755         default:
1756             _needed = 0;
1757             break;
1758     }
1759     if (_remaining < _needed) {
1760         _env->ThrowNew(IAEClass, "length - offset < needed");
1761         goto exit;
1762     }
1763     params_base = (GLfloat *)
1764         _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
1765     params = params_base + offset;
1766 
1767     glLightModelfv(
1768         (GLenum)pname,
1769         (GLfloat *)params
1770     );
1771 
1772 exit:
1773     if (params_base) {
1774         _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
1775             JNI_ABORT);
1776     }
1777 }
1778 
1779 /* void glLightModelfv ( GLenum pname, const GLfloat *params ) */
1780 static void
android_glLightModelfv__ILjava_nio_FloatBuffer_2(JNIEnv * _env,jobject _this,jint pname,jobject params_buf)1781 android_glLightModelfv__ILjava_nio_FloatBuffer_2
1782   (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
1783     jarray _array = (jarray) 0;
1784     jint _remaining;
1785     GLfloat *params = (GLfloat *) 0;
1786 
1787     params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining);
1788     int _needed;
1789     switch (pname) {
1790 #if defined(GL_LIGHT_MODEL_TWO_SIDE)
1791         case GL_LIGHT_MODEL_TWO_SIDE:
1792 #endif // defined(GL_LIGHT_MODEL_TWO_SIDE)
1793             _needed = 1;
1794             break;
1795 #if defined(GL_LIGHT_MODEL_AMBIENT)
1796         case GL_LIGHT_MODEL_AMBIENT:
1797 #endif // defined(GL_LIGHT_MODEL_AMBIENT)
1798             _needed = 4;
1799             break;
1800         default:
1801             _needed = 0;
1802             break;
1803     }
1804     if (_remaining < _needed) {
1805         _env->ThrowNew(IAEClass, "remaining() < needed");
1806         goto exit;
1807     }
1808     glLightModelfv(
1809         (GLenum)pname,
1810         (GLfloat *)params
1811     );
1812 
1813 exit:
1814     if (_array) {
1815         releasePointer(_env, _array, params, JNI_FALSE);
1816     }
1817 }
1818 
1819 /* void glLightModelx ( GLenum pname, GLfixed param ) */
1820 static void
android_glLightModelx__II(JNIEnv * _env,jobject _this,jint pname,jint param)1821 android_glLightModelx__II
1822   (JNIEnv *_env, jobject _this, jint pname, jint param) {
1823     glLightModelx(
1824         (GLenum)pname,
1825         (GLfixed)param
1826     );
1827 }
1828 
1829 /* void glLightModelxv ( GLenum pname, const GLfixed *params ) */
1830 static void
android_glLightModelxv__I_3II(JNIEnv * _env,jobject _this,jint pname,jintArray params_ref,jint offset)1831 android_glLightModelxv__I_3II
1832   (JNIEnv *_env, jobject _this, jint pname, jintArray params_ref, jint offset) {
1833     GLfixed *params_base = (GLfixed *) 0;
1834     jint _remaining;
1835     GLfixed *params = (GLfixed *) 0;
1836 
1837     if (!params_ref) {
1838         _env->ThrowNew(IAEClass, "params == null");
1839         goto exit;
1840     }
1841     if (offset < 0) {
1842         _env->ThrowNew(IAEClass, "offset < 0");
1843         goto exit;
1844     }
1845     _remaining = _env->GetArrayLength(params_ref) - offset;
1846     int _needed;
1847     switch (pname) {
1848 #if defined(GL_LIGHT_MODEL_TWO_SIDE)
1849         case GL_LIGHT_MODEL_TWO_SIDE:
1850 #endif // defined(GL_LIGHT_MODEL_TWO_SIDE)
1851             _needed = 1;
1852             break;
1853 #if defined(GL_LIGHT_MODEL_AMBIENT)
1854         case GL_LIGHT_MODEL_AMBIENT:
1855 #endif // defined(GL_LIGHT_MODEL_AMBIENT)
1856             _needed = 4;
1857             break;
1858         default:
1859             _needed = 0;
1860             break;
1861     }
1862     if (_remaining < _needed) {
1863         _env->ThrowNew(IAEClass, "length - offset < needed");
1864         goto exit;
1865     }
1866     params_base = (GLfixed *)
1867         _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
1868     params = params_base + offset;
1869 
1870     glLightModelxv(
1871         (GLenum)pname,
1872         (GLfixed *)params
1873     );
1874 
1875 exit:
1876     if (params_base) {
1877         _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
1878             JNI_ABORT);
1879     }
1880 }
1881 
1882 /* void glLightModelxv ( GLenum pname, const GLfixed *params ) */
1883 static void
android_glLightModelxv__ILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint pname,jobject params_buf)1884 android_glLightModelxv__ILjava_nio_IntBuffer_2
1885   (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
1886     jarray _array = (jarray) 0;
1887     jint _remaining;
1888     GLfixed *params = (GLfixed *) 0;
1889 
1890     params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining);
1891     int _needed;
1892     switch (pname) {
1893 #if defined(GL_LIGHT_MODEL_TWO_SIDE)
1894         case GL_LIGHT_MODEL_TWO_SIDE:
1895 #endif // defined(GL_LIGHT_MODEL_TWO_SIDE)
1896             _needed = 1;
1897             break;
1898 #if defined(GL_LIGHT_MODEL_AMBIENT)
1899         case GL_LIGHT_MODEL_AMBIENT:
1900 #endif // defined(GL_LIGHT_MODEL_AMBIENT)
1901             _needed = 4;
1902             break;
1903         default:
1904             _needed = 0;
1905             break;
1906     }
1907     if (_remaining < _needed) {
1908         _env->ThrowNew(IAEClass, "remaining() < needed");
1909         goto exit;
1910     }
1911     glLightModelxv(
1912         (GLenum)pname,
1913         (GLfixed *)params
1914     );
1915 
1916 exit:
1917     if (_array) {
1918         releasePointer(_env, _array, params, JNI_FALSE);
1919     }
1920 }
1921 
1922 /* void glLightf ( GLenum light, GLenum pname, GLfloat param ) */
1923 static void
android_glLightf__IIF(JNIEnv * _env,jobject _this,jint light,jint pname,jfloat param)1924 android_glLightf__IIF
1925   (JNIEnv *_env, jobject _this, jint light, jint pname, jfloat param) {
1926     glLightf(
1927         (GLenum)light,
1928         (GLenum)pname,
1929         (GLfloat)param
1930     );
1931 }
1932 
1933 /* void glLightfv ( GLenum light, GLenum pname, const GLfloat *params ) */
1934 static void
android_glLightfv__II_3FI(JNIEnv * _env,jobject _this,jint light,jint pname,jfloatArray params_ref,jint offset)1935 android_glLightfv__II_3FI
1936   (JNIEnv *_env, jobject _this, jint light, jint pname, jfloatArray params_ref, jint offset) {
1937     GLfloat *params_base = (GLfloat *) 0;
1938     jint _remaining;
1939     GLfloat *params = (GLfloat *) 0;
1940 
1941     if (!params_ref) {
1942         _env->ThrowNew(IAEClass, "params == null");
1943         goto exit;
1944     }
1945     if (offset < 0) {
1946         _env->ThrowNew(IAEClass, "offset < 0");
1947         goto exit;
1948     }
1949     _remaining = _env->GetArrayLength(params_ref) - offset;
1950     int _needed;
1951     switch (pname) {
1952 #if defined(GL_SPOT_EXPONENT)
1953         case GL_SPOT_EXPONENT:
1954 #endif // defined(GL_SPOT_EXPONENT)
1955 #if defined(GL_SPOT_CUTOFF)
1956         case GL_SPOT_CUTOFF:
1957 #endif // defined(GL_SPOT_CUTOFF)
1958 #if defined(GL_CONSTANT_ATTENUATION)
1959         case GL_CONSTANT_ATTENUATION:
1960 #endif // defined(GL_CONSTANT_ATTENUATION)
1961 #if defined(GL_LINEAR_ATTENUATION)
1962         case GL_LINEAR_ATTENUATION:
1963 #endif // defined(GL_LINEAR_ATTENUATION)
1964 #if defined(GL_QUADRATIC_ATTENUATION)
1965         case GL_QUADRATIC_ATTENUATION:
1966 #endif // defined(GL_QUADRATIC_ATTENUATION)
1967             _needed = 1;
1968             break;
1969 #if defined(GL_SPOT_DIRECTION)
1970         case GL_SPOT_DIRECTION:
1971 #endif // defined(GL_SPOT_DIRECTION)
1972             _needed = 3;
1973             break;
1974 #if defined(GL_AMBIENT)
1975         case GL_AMBIENT:
1976 #endif // defined(GL_AMBIENT)
1977 #if defined(GL_DIFFUSE)
1978         case GL_DIFFUSE:
1979 #endif // defined(GL_DIFFUSE)
1980 #if defined(GL_SPECULAR)
1981         case GL_SPECULAR:
1982 #endif // defined(GL_SPECULAR)
1983 #if defined(GL_EMISSION)
1984         case GL_EMISSION:
1985 #endif // defined(GL_EMISSION)
1986             _needed = 4;
1987             break;
1988         default:
1989             _needed = 0;
1990             break;
1991     }
1992     if (_remaining < _needed) {
1993         _env->ThrowNew(IAEClass, "length - offset < needed");
1994         goto exit;
1995     }
1996     params_base = (GLfloat *)
1997         _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
1998     params = params_base + offset;
1999 
2000     glLightfv(
2001         (GLenum)light,
2002         (GLenum)pname,
2003         (GLfloat *)params
2004     );
2005 
2006 exit:
2007     if (params_base) {
2008         _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
2009             JNI_ABORT);
2010     }
2011 }
2012 
2013 /* void glLightfv ( GLenum light, GLenum pname, const GLfloat *params ) */
2014 static void
android_glLightfv__IILjava_nio_FloatBuffer_2(JNIEnv * _env,jobject _this,jint light,jint pname,jobject params_buf)2015 android_glLightfv__IILjava_nio_FloatBuffer_2
2016   (JNIEnv *_env, jobject _this, jint light, jint pname, jobject params_buf) {
2017     jarray _array = (jarray) 0;
2018     jint _remaining;
2019     GLfloat *params = (GLfloat *) 0;
2020 
2021     params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining);
2022     int _needed;
2023     switch (pname) {
2024 #if defined(GL_SPOT_EXPONENT)
2025         case GL_SPOT_EXPONENT:
2026 #endif // defined(GL_SPOT_EXPONENT)
2027 #if defined(GL_SPOT_CUTOFF)
2028         case GL_SPOT_CUTOFF:
2029 #endif // defined(GL_SPOT_CUTOFF)
2030 #if defined(GL_CONSTANT_ATTENUATION)
2031         case GL_CONSTANT_ATTENUATION:
2032 #endif // defined(GL_CONSTANT_ATTENUATION)
2033 #if defined(GL_LINEAR_ATTENUATION)
2034         case GL_LINEAR_ATTENUATION:
2035 #endif // defined(GL_LINEAR_ATTENUATION)
2036 #if defined(GL_QUADRATIC_ATTENUATION)
2037         case GL_QUADRATIC_ATTENUATION:
2038 #endif // defined(GL_QUADRATIC_ATTENUATION)
2039             _needed = 1;
2040             break;
2041 #if defined(GL_SPOT_DIRECTION)
2042         case GL_SPOT_DIRECTION:
2043 #endif // defined(GL_SPOT_DIRECTION)
2044             _needed = 3;
2045             break;
2046 #if defined(GL_AMBIENT)
2047         case GL_AMBIENT:
2048 #endif // defined(GL_AMBIENT)
2049 #if defined(GL_DIFFUSE)
2050         case GL_DIFFUSE:
2051 #endif // defined(GL_DIFFUSE)
2052 #if defined(GL_SPECULAR)
2053         case GL_SPECULAR:
2054 #endif // defined(GL_SPECULAR)
2055 #if defined(GL_EMISSION)
2056         case GL_EMISSION:
2057 #endif // defined(GL_EMISSION)
2058             _needed = 4;
2059             break;
2060         default:
2061             _needed = 0;
2062             break;
2063     }
2064     if (_remaining < _needed) {
2065         _env->ThrowNew(IAEClass, "remaining() < needed");
2066         goto exit;
2067     }
2068     glLightfv(
2069         (GLenum)light,
2070         (GLenum)pname,
2071         (GLfloat *)params
2072     );
2073 
2074 exit:
2075     if (_array) {
2076         releasePointer(_env, _array, params, JNI_FALSE);
2077     }
2078 }
2079 
2080 /* void glLightx ( GLenum light, GLenum pname, GLfixed param ) */
2081 static void
android_glLightx__III(JNIEnv * _env,jobject _this,jint light,jint pname,jint param)2082 android_glLightx__III
2083   (JNIEnv *_env, jobject _this, jint light, jint pname, jint param) {
2084     glLightx(
2085         (GLenum)light,
2086         (GLenum)pname,
2087         (GLfixed)param
2088     );
2089 }
2090 
2091 /* void glLightxv ( GLenum light, GLenum pname, const GLfixed *params ) */
2092 static void
android_glLightxv__II_3II(JNIEnv * _env,jobject _this,jint light,jint pname,jintArray params_ref,jint offset)2093 android_glLightxv__II_3II
2094   (JNIEnv *_env, jobject _this, jint light, jint pname, jintArray params_ref, jint offset) {
2095     GLfixed *params_base = (GLfixed *) 0;
2096     jint _remaining;
2097     GLfixed *params = (GLfixed *) 0;
2098 
2099     if (!params_ref) {
2100         _env->ThrowNew(IAEClass, "params == null");
2101         goto exit;
2102     }
2103     if (offset < 0) {
2104         _env->ThrowNew(IAEClass, "offset < 0");
2105         goto exit;
2106     }
2107     _remaining = _env->GetArrayLength(params_ref) - offset;
2108     int _needed;
2109     switch (pname) {
2110 #if defined(GL_SPOT_EXPONENT)
2111         case GL_SPOT_EXPONENT:
2112 #endif // defined(GL_SPOT_EXPONENT)
2113 #if defined(GL_SPOT_CUTOFF)
2114         case GL_SPOT_CUTOFF:
2115 #endif // defined(GL_SPOT_CUTOFF)
2116 #if defined(GL_CONSTANT_ATTENUATION)
2117         case GL_CONSTANT_ATTENUATION:
2118 #endif // defined(GL_CONSTANT_ATTENUATION)
2119 #if defined(GL_LINEAR_ATTENUATION)
2120         case GL_LINEAR_ATTENUATION:
2121 #endif // defined(GL_LINEAR_ATTENUATION)
2122 #if defined(GL_QUADRATIC_ATTENUATION)
2123         case GL_QUADRATIC_ATTENUATION:
2124 #endif // defined(GL_QUADRATIC_ATTENUATION)
2125             _needed = 1;
2126             break;
2127 #if defined(GL_SPOT_DIRECTION)
2128         case GL_SPOT_DIRECTION:
2129 #endif // defined(GL_SPOT_DIRECTION)
2130             _needed = 3;
2131             break;
2132 #if defined(GL_AMBIENT)
2133         case GL_AMBIENT:
2134 #endif // defined(GL_AMBIENT)
2135 #if defined(GL_DIFFUSE)
2136         case GL_DIFFUSE:
2137 #endif // defined(GL_DIFFUSE)
2138 #if defined(GL_SPECULAR)
2139         case GL_SPECULAR:
2140 #endif // defined(GL_SPECULAR)
2141 #if defined(GL_EMISSION)
2142         case GL_EMISSION:
2143 #endif // defined(GL_EMISSION)
2144             _needed = 4;
2145             break;
2146         default:
2147             _needed = 0;
2148             break;
2149     }
2150     if (_remaining < _needed) {
2151         _env->ThrowNew(IAEClass, "length - offset < needed");
2152         goto exit;
2153     }
2154     params_base = (GLfixed *)
2155         _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
2156     params = params_base + offset;
2157 
2158     glLightxv(
2159         (GLenum)light,
2160         (GLenum)pname,
2161         (GLfixed *)params
2162     );
2163 
2164 exit:
2165     if (params_base) {
2166         _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
2167             JNI_ABORT);
2168     }
2169 }
2170 
2171 /* void glLightxv ( GLenum light, GLenum pname, const GLfixed *params ) */
2172 static void
android_glLightxv__IILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint light,jint pname,jobject params_buf)2173 android_glLightxv__IILjava_nio_IntBuffer_2
2174   (JNIEnv *_env, jobject _this, jint light, jint pname, jobject params_buf) {
2175     jarray _array = (jarray) 0;
2176     jint _remaining;
2177     GLfixed *params = (GLfixed *) 0;
2178 
2179     params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining);
2180     int _needed;
2181     switch (pname) {
2182 #if defined(GL_SPOT_EXPONENT)
2183         case GL_SPOT_EXPONENT:
2184 #endif // defined(GL_SPOT_EXPONENT)
2185 #if defined(GL_SPOT_CUTOFF)
2186         case GL_SPOT_CUTOFF:
2187 #endif // defined(GL_SPOT_CUTOFF)
2188 #if defined(GL_CONSTANT_ATTENUATION)
2189         case GL_CONSTANT_ATTENUATION:
2190 #endif // defined(GL_CONSTANT_ATTENUATION)
2191 #if defined(GL_LINEAR_ATTENUATION)
2192         case GL_LINEAR_ATTENUATION:
2193 #endif // defined(GL_LINEAR_ATTENUATION)
2194 #if defined(GL_QUADRATIC_ATTENUATION)
2195         case GL_QUADRATIC_ATTENUATION:
2196 #endif // defined(GL_QUADRATIC_ATTENUATION)
2197             _needed = 1;
2198             break;
2199 #if defined(GL_SPOT_DIRECTION)
2200         case GL_SPOT_DIRECTION:
2201 #endif // defined(GL_SPOT_DIRECTION)
2202             _needed = 3;
2203             break;
2204 #if defined(GL_AMBIENT)
2205         case GL_AMBIENT:
2206 #endif // defined(GL_AMBIENT)
2207 #if defined(GL_DIFFUSE)
2208         case GL_DIFFUSE:
2209 #endif // defined(GL_DIFFUSE)
2210 #if defined(GL_SPECULAR)
2211         case GL_SPECULAR:
2212 #endif // defined(GL_SPECULAR)
2213 #if defined(GL_EMISSION)
2214         case GL_EMISSION:
2215 #endif // defined(GL_EMISSION)
2216             _needed = 4;
2217             break;
2218         default:
2219             _needed = 0;
2220             break;
2221     }
2222     if (_remaining < _needed) {
2223         _env->ThrowNew(IAEClass, "remaining() < needed");
2224         goto exit;
2225     }
2226     glLightxv(
2227         (GLenum)light,
2228         (GLenum)pname,
2229         (GLfixed *)params
2230     );
2231 
2232 exit:
2233     if (_array) {
2234         releasePointer(_env, _array, params, JNI_FALSE);
2235     }
2236 }
2237 
2238 /* void glLineWidth ( GLfloat width ) */
2239 static void
android_glLineWidth__F(JNIEnv * _env,jobject _this,jfloat width)2240 android_glLineWidth__F
2241   (JNIEnv *_env, jobject _this, jfloat width) {
2242     glLineWidth(
2243         (GLfloat)width
2244     );
2245 }
2246 
2247 /* void glLineWidthx ( GLfixed width ) */
2248 static void
android_glLineWidthx__I(JNIEnv * _env,jobject _this,jint width)2249 android_glLineWidthx__I
2250   (JNIEnv *_env, jobject _this, jint width) {
2251     glLineWidthx(
2252         (GLfixed)width
2253     );
2254 }
2255 
2256 /* void glLoadIdentity ( void ) */
2257 static void
android_glLoadIdentity__(JNIEnv * _env,jobject _this)2258 android_glLoadIdentity__
2259   (JNIEnv *_env, jobject _this) {
2260     glLoadIdentity();
2261 }
2262 
2263 /* void glLoadMatrixf ( const GLfloat *m ) */
2264 static void
android_glLoadMatrixf___3FI(JNIEnv * _env,jobject _this,jfloatArray m_ref,jint offset)2265 android_glLoadMatrixf___3FI
2266   (JNIEnv *_env, jobject _this, jfloatArray m_ref, jint offset) {
2267     GLfloat *m_base = (GLfloat *) 0;
2268     jint _remaining;
2269     GLfloat *m = (GLfloat *) 0;
2270 
2271     if (!m_ref) {
2272         _env->ThrowNew(IAEClass, "m == null");
2273         goto exit;
2274     }
2275     if (offset < 0) {
2276         _env->ThrowNew(IAEClass, "offset < 0");
2277         goto exit;
2278     }
2279     _remaining = _env->GetArrayLength(m_ref) - offset;
2280     m_base = (GLfloat *)
2281         _env->GetPrimitiveArrayCritical(m_ref, (jboolean *)0);
2282     m = m_base + offset;
2283 
2284     glLoadMatrixf(
2285         (GLfloat *)m
2286     );
2287 
2288 exit:
2289     if (m_base) {
2290         _env->ReleasePrimitiveArrayCritical(m_ref, m_base,
2291             JNI_ABORT);
2292     }
2293 }
2294 
2295 /* void glLoadMatrixf ( const GLfloat *m ) */
2296 static void
android_glLoadMatrixf__Ljava_nio_FloatBuffer_2(JNIEnv * _env,jobject _this,jobject m_buf)2297 android_glLoadMatrixf__Ljava_nio_FloatBuffer_2
2298   (JNIEnv *_env, jobject _this, jobject m_buf) {
2299     jarray _array = (jarray) 0;
2300     jint _remaining;
2301     GLfloat *m = (GLfloat *) 0;
2302 
2303     m = (GLfloat *)getPointer(_env, m_buf, &_array, &_remaining);
2304     glLoadMatrixf(
2305         (GLfloat *)m
2306     );
2307     if (_array) {
2308         releasePointer(_env, _array, m, JNI_FALSE);
2309     }
2310 }
2311 
2312 /* void glLoadMatrixx ( const GLfixed *m ) */
2313 static void
android_glLoadMatrixx___3II(JNIEnv * _env,jobject _this,jintArray m_ref,jint offset)2314 android_glLoadMatrixx___3II
2315   (JNIEnv *_env, jobject _this, jintArray m_ref, jint offset) {
2316     GLfixed *m_base = (GLfixed *) 0;
2317     jint _remaining;
2318     GLfixed *m = (GLfixed *) 0;
2319 
2320     if (!m_ref) {
2321         _env->ThrowNew(IAEClass, "m == null");
2322         goto exit;
2323     }
2324     if (offset < 0) {
2325         _env->ThrowNew(IAEClass, "offset < 0");
2326         goto exit;
2327     }
2328     _remaining = _env->GetArrayLength(m_ref) - offset;
2329     m_base = (GLfixed *)
2330         _env->GetPrimitiveArrayCritical(m_ref, (jboolean *)0);
2331     m = m_base + offset;
2332 
2333     glLoadMatrixx(
2334         (GLfixed *)m
2335     );
2336 
2337 exit:
2338     if (m_base) {
2339         _env->ReleasePrimitiveArrayCritical(m_ref, m_base,
2340             JNI_ABORT);
2341     }
2342 }
2343 
2344 /* void glLoadMatrixx ( const GLfixed *m ) */
2345 static void
android_glLoadMatrixx__Ljava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jobject m_buf)2346 android_glLoadMatrixx__Ljava_nio_IntBuffer_2
2347   (JNIEnv *_env, jobject _this, jobject m_buf) {
2348     jarray _array = (jarray) 0;
2349     jint _remaining;
2350     GLfixed *m = (GLfixed *) 0;
2351 
2352     m = (GLfixed *)getPointer(_env, m_buf, &_array, &_remaining);
2353     glLoadMatrixx(
2354         (GLfixed *)m
2355     );
2356     if (_array) {
2357         releasePointer(_env, _array, m, JNI_FALSE);
2358     }
2359 }
2360 
2361 /* void glLogicOp ( GLenum opcode ) */
2362 static void
android_glLogicOp__I(JNIEnv * _env,jobject _this,jint opcode)2363 android_glLogicOp__I
2364   (JNIEnv *_env, jobject _this, jint opcode) {
2365     glLogicOp(
2366         (GLenum)opcode
2367     );
2368 }
2369 
2370 /* void glMaterialf ( GLenum face, GLenum pname, GLfloat param ) */
2371 static void
android_glMaterialf__IIF(JNIEnv * _env,jobject _this,jint face,jint pname,jfloat param)2372 android_glMaterialf__IIF
2373   (JNIEnv *_env, jobject _this, jint face, jint pname, jfloat param) {
2374     glMaterialf(
2375         (GLenum)face,
2376         (GLenum)pname,
2377         (GLfloat)param
2378     );
2379 }
2380 
2381 /* void glMaterialfv ( GLenum face, GLenum pname, const GLfloat *params ) */
2382 static void
android_glMaterialfv__II_3FI(JNIEnv * _env,jobject _this,jint face,jint pname,jfloatArray params_ref,jint offset)2383 android_glMaterialfv__II_3FI
2384   (JNIEnv *_env, jobject _this, jint face, jint pname, jfloatArray params_ref, jint offset) {
2385     GLfloat *params_base = (GLfloat *) 0;
2386     jint _remaining;
2387     GLfloat *params = (GLfloat *) 0;
2388 
2389     if (!params_ref) {
2390         _env->ThrowNew(IAEClass, "params == null");
2391         goto exit;
2392     }
2393     if (offset < 0) {
2394         _env->ThrowNew(IAEClass, "offset < 0");
2395         goto exit;
2396     }
2397     _remaining = _env->GetArrayLength(params_ref) - offset;
2398     int _needed;
2399     switch (pname) {
2400 #if defined(GL_SHININESS)
2401         case GL_SHININESS:
2402 #endif // defined(GL_SHININESS)
2403             _needed = 1;
2404             break;
2405 #if defined(GL_AMBIENT)
2406         case GL_AMBIENT:
2407 #endif // defined(GL_AMBIENT)
2408 #if defined(GL_DIFFUSE)
2409         case GL_DIFFUSE:
2410 #endif // defined(GL_DIFFUSE)
2411 #if defined(GL_SPECULAR)
2412         case GL_SPECULAR:
2413 #endif // defined(GL_SPECULAR)
2414 #if defined(GL_EMISSION)
2415         case GL_EMISSION:
2416 #endif // defined(GL_EMISSION)
2417 #if defined(GL_AMBIENT_AND_DIFFUSE)
2418         case GL_AMBIENT_AND_DIFFUSE:
2419 #endif // defined(GL_AMBIENT_AND_DIFFUSE)
2420             _needed = 4;
2421             break;
2422         default:
2423             _needed = 0;
2424             break;
2425     }
2426     if (_remaining < _needed) {
2427         _env->ThrowNew(IAEClass, "length - offset < needed");
2428         goto exit;
2429     }
2430     params_base = (GLfloat *)
2431         _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
2432     params = params_base + offset;
2433 
2434     glMaterialfv(
2435         (GLenum)face,
2436         (GLenum)pname,
2437         (GLfloat *)params
2438     );
2439 
2440 exit:
2441     if (params_base) {
2442         _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
2443             JNI_ABORT);
2444     }
2445 }
2446 
2447 /* void glMaterialfv ( GLenum face, GLenum pname, const GLfloat *params ) */
2448 static void
android_glMaterialfv__IILjava_nio_FloatBuffer_2(JNIEnv * _env,jobject _this,jint face,jint pname,jobject params_buf)2449 android_glMaterialfv__IILjava_nio_FloatBuffer_2
2450   (JNIEnv *_env, jobject _this, jint face, jint pname, jobject params_buf) {
2451     jarray _array = (jarray) 0;
2452     jint _remaining;
2453     GLfloat *params = (GLfloat *) 0;
2454 
2455     params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining);
2456     int _needed;
2457     switch (pname) {
2458 #if defined(GL_SHININESS)
2459         case GL_SHININESS:
2460 #endif // defined(GL_SHININESS)
2461             _needed = 1;
2462             break;
2463 #if defined(GL_AMBIENT)
2464         case GL_AMBIENT:
2465 #endif // defined(GL_AMBIENT)
2466 #if defined(GL_DIFFUSE)
2467         case GL_DIFFUSE:
2468 #endif // defined(GL_DIFFUSE)
2469 #if defined(GL_SPECULAR)
2470         case GL_SPECULAR:
2471 #endif // defined(GL_SPECULAR)
2472 #if defined(GL_EMISSION)
2473         case GL_EMISSION:
2474 #endif // defined(GL_EMISSION)
2475 #if defined(GL_AMBIENT_AND_DIFFUSE)
2476         case GL_AMBIENT_AND_DIFFUSE:
2477 #endif // defined(GL_AMBIENT_AND_DIFFUSE)
2478             _needed = 4;
2479             break;
2480         default:
2481             _needed = 0;
2482             break;
2483     }
2484     if (_remaining < _needed) {
2485         _env->ThrowNew(IAEClass, "remaining() < needed");
2486         goto exit;
2487     }
2488     glMaterialfv(
2489         (GLenum)face,
2490         (GLenum)pname,
2491         (GLfloat *)params
2492     );
2493 
2494 exit:
2495     if (_array) {
2496         releasePointer(_env, _array, params, JNI_FALSE);
2497     }
2498 }
2499 
2500 /* void glMaterialx ( GLenum face, GLenum pname, GLfixed param ) */
2501 static void
android_glMaterialx__III(JNIEnv * _env,jobject _this,jint face,jint pname,jint param)2502 android_glMaterialx__III
2503   (JNIEnv *_env, jobject _this, jint face, jint pname, jint param) {
2504     glMaterialx(
2505         (GLenum)face,
2506         (GLenum)pname,
2507         (GLfixed)param
2508     );
2509 }
2510 
2511 /* void glMaterialxv ( GLenum face, GLenum pname, const GLfixed *params ) */
2512 static void
android_glMaterialxv__II_3II(JNIEnv * _env,jobject _this,jint face,jint pname,jintArray params_ref,jint offset)2513 android_glMaterialxv__II_3II
2514   (JNIEnv *_env, jobject _this, jint face, jint pname, jintArray params_ref, jint offset) {
2515     GLfixed *params_base = (GLfixed *) 0;
2516     jint _remaining;
2517     GLfixed *params = (GLfixed *) 0;
2518 
2519     if (!params_ref) {
2520         _env->ThrowNew(IAEClass, "params == null");
2521         goto exit;
2522     }
2523     if (offset < 0) {
2524         _env->ThrowNew(IAEClass, "offset < 0");
2525         goto exit;
2526     }
2527     _remaining = _env->GetArrayLength(params_ref) - offset;
2528     int _needed;
2529     switch (pname) {
2530 #if defined(GL_SHININESS)
2531         case GL_SHININESS:
2532 #endif // defined(GL_SHININESS)
2533             _needed = 1;
2534             break;
2535 #if defined(GL_AMBIENT)
2536         case GL_AMBIENT:
2537 #endif // defined(GL_AMBIENT)
2538 #if defined(GL_DIFFUSE)
2539         case GL_DIFFUSE:
2540 #endif // defined(GL_DIFFUSE)
2541 #if defined(GL_SPECULAR)
2542         case GL_SPECULAR:
2543 #endif // defined(GL_SPECULAR)
2544 #if defined(GL_EMISSION)
2545         case GL_EMISSION:
2546 #endif // defined(GL_EMISSION)
2547 #if defined(GL_AMBIENT_AND_DIFFUSE)
2548         case GL_AMBIENT_AND_DIFFUSE:
2549 #endif // defined(GL_AMBIENT_AND_DIFFUSE)
2550             _needed = 4;
2551             break;
2552         default:
2553             _needed = 0;
2554             break;
2555     }
2556     if (_remaining < _needed) {
2557         _env->ThrowNew(IAEClass, "length - offset < needed");
2558         goto exit;
2559     }
2560     params_base = (GLfixed *)
2561         _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
2562     params = params_base + offset;
2563 
2564     glMaterialxv(
2565         (GLenum)face,
2566         (GLenum)pname,
2567         (GLfixed *)params
2568     );
2569 
2570 exit:
2571     if (params_base) {
2572         _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
2573             JNI_ABORT);
2574     }
2575 }
2576 
2577 /* void glMaterialxv ( GLenum face, GLenum pname, const GLfixed *params ) */
2578 static void
android_glMaterialxv__IILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint face,jint pname,jobject params_buf)2579 android_glMaterialxv__IILjava_nio_IntBuffer_2
2580   (JNIEnv *_env, jobject _this, jint face, jint pname, jobject params_buf) {
2581     jarray _array = (jarray) 0;
2582     jint _remaining;
2583     GLfixed *params = (GLfixed *) 0;
2584 
2585     params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining);
2586     int _needed;
2587     switch (pname) {
2588 #if defined(GL_SHININESS)
2589         case GL_SHININESS:
2590 #endif // defined(GL_SHININESS)
2591             _needed = 1;
2592             break;
2593 #if defined(GL_AMBIENT)
2594         case GL_AMBIENT:
2595 #endif // defined(GL_AMBIENT)
2596 #if defined(GL_DIFFUSE)
2597         case GL_DIFFUSE:
2598 #endif // defined(GL_DIFFUSE)
2599 #if defined(GL_SPECULAR)
2600         case GL_SPECULAR:
2601 #endif // defined(GL_SPECULAR)
2602 #if defined(GL_EMISSION)
2603         case GL_EMISSION:
2604 #endif // defined(GL_EMISSION)
2605 #if defined(GL_AMBIENT_AND_DIFFUSE)
2606         case GL_AMBIENT_AND_DIFFUSE:
2607 #endif // defined(GL_AMBIENT_AND_DIFFUSE)
2608             _needed = 4;
2609             break;
2610         default:
2611             _needed = 0;
2612             break;
2613     }
2614     if (_remaining < _needed) {
2615         _env->ThrowNew(IAEClass, "remaining() < needed");
2616         goto exit;
2617     }
2618     glMaterialxv(
2619         (GLenum)face,
2620         (GLenum)pname,
2621         (GLfixed *)params
2622     );
2623 
2624 exit:
2625     if (_array) {
2626         releasePointer(_env, _array, params, JNI_FALSE);
2627     }
2628 }
2629 
2630 /* void glMatrixMode ( GLenum mode ) */
2631 static void
android_glMatrixMode__I(JNIEnv * _env,jobject _this,jint mode)2632 android_glMatrixMode__I
2633   (JNIEnv *_env, jobject _this, jint mode) {
2634     glMatrixMode(
2635         (GLenum)mode
2636     );
2637 }
2638 
2639 /* void glMultMatrixf ( const GLfloat *m ) */
2640 static void
android_glMultMatrixf___3FI(JNIEnv * _env,jobject _this,jfloatArray m_ref,jint offset)2641 android_glMultMatrixf___3FI
2642   (JNIEnv *_env, jobject _this, jfloatArray m_ref, jint offset) {
2643     GLfloat *m_base = (GLfloat *) 0;
2644     jint _remaining;
2645     GLfloat *m = (GLfloat *) 0;
2646 
2647     if (!m_ref) {
2648         _env->ThrowNew(IAEClass, "m == null");
2649         goto exit;
2650     }
2651     if (offset < 0) {
2652         _env->ThrowNew(IAEClass, "offset < 0");
2653         goto exit;
2654     }
2655     _remaining = _env->GetArrayLength(m_ref) - offset;
2656     m_base = (GLfloat *)
2657         _env->GetPrimitiveArrayCritical(m_ref, (jboolean *)0);
2658     m = m_base + offset;
2659 
2660     glMultMatrixf(
2661         (GLfloat *)m
2662     );
2663 
2664 exit:
2665     if (m_base) {
2666         _env->ReleasePrimitiveArrayCritical(m_ref, m_base,
2667             JNI_ABORT);
2668     }
2669 }
2670 
2671 /* void glMultMatrixf ( const GLfloat *m ) */
2672 static void
android_glMultMatrixf__Ljava_nio_FloatBuffer_2(JNIEnv * _env,jobject _this,jobject m_buf)2673 android_glMultMatrixf__Ljava_nio_FloatBuffer_2
2674   (JNIEnv *_env, jobject _this, jobject m_buf) {
2675     jarray _array = (jarray) 0;
2676     jint _remaining;
2677     GLfloat *m = (GLfloat *) 0;
2678 
2679     m = (GLfloat *)getPointer(_env, m_buf, &_array, &_remaining);
2680     glMultMatrixf(
2681         (GLfloat *)m
2682     );
2683     if (_array) {
2684         releasePointer(_env, _array, m, JNI_FALSE);
2685     }
2686 }
2687 
2688 /* void glMultMatrixx ( const GLfixed *m ) */
2689 static void
android_glMultMatrixx___3II(JNIEnv * _env,jobject _this,jintArray m_ref,jint offset)2690 android_glMultMatrixx___3II
2691   (JNIEnv *_env, jobject _this, jintArray m_ref, jint offset) {
2692     GLfixed *m_base = (GLfixed *) 0;
2693     jint _remaining;
2694     GLfixed *m = (GLfixed *) 0;
2695 
2696     if (!m_ref) {
2697         _env->ThrowNew(IAEClass, "m == null");
2698         goto exit;
2699     }
2700     if (offset < 0) {
2701         _env->ThrowNew(IAEClass, "offset < 0");
2702         goto exit;
2703     }
2704     _remaining = _env->GetArrayLength(m_ref) - offset;
2705     m_base = (GLfixed *)
2706         _env->GetPrimitiveArrayCritical(m_ref, (jboolean *)0);
2707     m = m_base + offset;
2708 
2709     glMultMatrixx(
2710         (GLfixed *)m
2711     );
2712 
2713 exit:
2714     if (m_base) {
2715         _env->ReleasePrimitiveArrayCritical(m_ref, m_base,
2716             JNI_ABORT);
2717     }
2718 }
2719 
2720 /* void glMultMatrixx ( const GLfixed *m ) */
2721 static void
android_glMultMatrixx__Ljava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jobject m_buf)2722 android_glMultMatrixx__Ljava_nio_IntBuffer_2
2723   (JNIEnv *_env, jobject _this, jobject m_buf) {
2724     jarray _array = (jarray) 0;
2725     jint _remaining;
2726     GLfixed *m = (GLfixed *) 0;
2727 
2728     m = (GLfixed *)getPointer(_env, m_buf, &_array, &_remaining);
2729     glMultMatrixx(
2730         (GLfixed *)m
2731     );
2732     if (_array) {
2733         releasePointer(_env, _array, m, JNI_FALSE);
2734     }
2735 }
2736 
2737 /* void glMultiTexCoord4f ( GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q ) */
2738 static void
android_glMultiTexCoord4f__IFFFF(JNIEnv * _env,jobject _this,jint target,jfloat s,jfloat t,jfloat r,jfloat q)2739 android_glMultiTexCoord4f__IFFFF
2740   (JNIEnv *_env, jobject _this, jint target, jfloat s, jfloat t, jfloat r, jfloat q) {
2741     glMultiTexCoord4f(
2742         (GLenum)target,
2743         (GLfloat)s,
2744         (GLfloat)t,
2745         (GLfloat)r,
2746         (GLfloat)q
2747     );
2748 }
2749 
2750 /* void glMultiTexCoord4x ( GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q ) */
2751 static void
android_glMultiTexCoord4x__IIIII(JNIEnv * _env,jobject _this,jint target,jint s,jint t,jint r,jint q)2752 android_glMultiTexCoord4x__IIIII
2753   (JNIEnv *_env, jobject _this, jint target, jint s, jint t, jint r, jint q) {
2754     glMultiTexCoord4x(
2755         (GLenum)target,
2756         (GLfixed)s,
2757         (GLfixed)t,
2758         (GLfixed)r,
2759         (GLfixed)q
2760     );
2761 }
2762 
2763 /* void glNormal3f ( GLfloat nx, GLfloat ny, GLfloat nz ) */
2764 static void
android_glNormal3f__FFF(JNIEnv * _env,jobject _this,jfloat nx,jfloat ny,jfloat nz)2765 android_glNormal3f__FFF
2766   (JNIEnv *_env, jobject _this, jfloat nx, jfloat ny, jfloat nz) {
2767     glNormal3f(
2768         (GLfloat)nx,
2769         (GLfloat)ny,
2770         (GLfloat)nz
2771     );
2772 }
2773 
2774 /* void glNormal3x ( GLfixed nx, GLfixed ny, GLfixed nz ) */
2775 static void
android_glNormal3x__III(JNIEnv * _env,jobject _this,jint nx,jint ny,jint nz)2776 android_glNormal3x__III
2777   (JNIEnv *_env, jobject _this, jint nx, jint ny, jint nz) {
2778     glNormal3x(
2779         (GLfixed)nx,
2780         (GLfixed)ny,
2781         (GLfixed)nz
2782     );
2783 }
2784 
2785 /* void glNormalPointer ( GLenum type, GLsizei stride, const GLvoid *pointer ) */
2786 static void
android_glNormalPointerBounds__IILjava_nio_Buffer_2I(JNIEnv * _env,jobject _this,jint type,jint stride,jobject pointer_buf,jint remaining)2787 android_glNormalPointerBounds__IILjava_nio_Buffer_2I
2788   (JNIEnv *_env, jobject _this, jint type, jint stride, jobject pointer_buf, jint remaining) {
2789     jarray _array = (jarray) 0;
2790     jint _remaining;
2791     GLvoid *pointer = (GLvoid *) 0;
2792 
2793     if (pointer_buf) {
2794         pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf);
2795         if ( ! pointer ) {
2796             return;
2797         }
2798     }
2799     glNormalPointerBounds(
2800         (GLenum)type,
2801         (GLsizei)stride,
2802         (GLvoid *)pointer,
2803         (GLsizei)remaining
2804     );
2805 }
2806 
2807 /* void glOrthof ( GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar ) */
2808 static void
android_glOrthof__FFFFFF(JNIEnv * _env,jobject _this,jfloat left,jfloat right,jfloat bottom,jfloat top,jfloat zNear,jfloat zFar)2809 android_glOrthof__FFFFFF
2810   (JNIEnv *_env, jobject _this, jfloat left, jfloat right, jfloat bottom, jfloat top, jfloat zNear, jfloat zFar) {
2811     glOrthof(
2812         (GLfloat)left,
2813         (GLfloat)right,
2814         (GLfloat)bottom,
2815         (GLfloat)top,
2816         (GLfloat)zNear,
2817         (GLfloat)zFar
2818     );
2819 }
2820 
2821 /* void glOrthox ( GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar ) */
2822 static void
android_glOrthox__IIIIII(JNIEnv * _env,jobject _this,jint left,jint right,jint bottom,jint top,jint zNear,jint zFar)2823 android_glOrthox__IIIIII
2824   (JNIEnv *_env, jobject _this, jint left, jint right, jint bottom, jint top, jint zNear, jint zFar) {
2825     glOrthox(
2826         (GLfixed)left,
2827         (GLfixed)right,
2828         (GLfixed)bottom,
2829         (GLfixed)top,
2830         (GLfixed)zNear,
2831         (GLfixed)zFar
2832     );
2833 }
2834 
2835 /* void glPixelStorei ( GLenum pname, GLint param ) */
2836 static void
android_glPixelStorei__II(JNIEnv * _env,jobject _this,jint pname,jint param)2837 android_glPixelStorei__II
2838   (JNIEnv *_env, jobject _this, jint pname, jint param) {
2839     glPixelStorei(
2840         (GLenum)pname,
2841         (GLint)param
2842     );
2843 }
2844 
2845 /* void glPointSize ( GLfloat size ) */
2846 static void
android_glPointSize__F(JNIEnv * _env,jobject _this,jfloat size)2847 android_glPointSize__F
2848   (JNIEnv *_env, jobject _this, jfloat size) {
2849     glPointSize(
2850         (GLfloat)size
2851     );
2852 }
2853 
2854 /* void glPointSizex ( GLfixed size ) */
2855 static void
android_glPointSizex__I(JNIEnv * _env,jobject _this,jint size)2856 android_glPointSizex__I
2857   (JNIEnv *_env, jobject _this, jint size) {
2858     glPointSizex(
2859         (GLfixed)size
2860     );
2861 }
2862 
2863 /* void glPolygonOffset ( GLfloat factor, GLfloat units ) */
2864 static void
android_glPolygonOffset__FF(JNIEnv * _env,jobject _this,jfloat factor,jfloat units)2865 android_glPolygonOffset__FF
2866   (JNIEnv *_env, jobject _this, jfloat factor, jfloat units) {
2867     glPolygonOffset(
2868         (GLfloat)factor,
2869         (GLfloat)units
2870     );
2871 }
2872 
2873 /* void glPolygonOffsetx ( GLfixed factor, GLfixed units ) */
2874 static void
android_glPolygonOffsetx__II(JNIEnv * _env,jobject _this,jint factor,jint units)2875 android_glPolygonOffsetx__II
2876   (JNIEnv *_env, jobject _this, jint factor, jint units) {
2877     glPolygonOffsetx(
2878         (GLfixed)factor,
2879         (GLfixed)units
2880     );
2881 }
2882 
2883 /* void glPopMatrix ( void ) */
2884 static void
android_glPopMatrix__(JNIEnv * _env,jobject _this)2885 android_glPopMatrix__
2886   (JNIEnv *_env, jobject _this) {
2887     glPopMatrix();
2888 }
2889 
2890 /* void glPushMatrix ( void ) */
2891 static void
android_glPushMatrix__(JNIEnv * _env,jobject _this)2892 android_glPushMatrix__
2893   (JNIEnv *_env, jobject _this) {
2894     glPushMatrix();
2895 }
2896 
2897 /* void glReadPixels ( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels ) */
2898 static void
android_glReadPixels__IIIIIILjava_nio_Buffer_2(JNIEnv * _env,jobject _this,jint x,jint y,jint width,jint height,jint format,jint type,jobject pixels_buf)2899 android_glReadPixels__IIIIIILjava_nio_Buffer_2
2900   (JNIEnv *_env, jobject _this, jint x, jint y, jint width, jint height, jint format, jint type, jobject pixels_buf) {
2901     jint _exception = 0;
2902     jarray _array = (jarray) 0;
2903     jint _remaining;
2904     GLvoid *pixels = (GLvoid *) 0;
2905 
2906     pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining);
2907     glReadPixels(
2908         (GLint)x,
2909         (GLint)y,
2910         (GLsizei)width,
2911         (GLsizei)height,
2912         (GLenum)format,
2913         (GLenum)type,
2914         (GLvoid *)pixels
2915     );
2916     if (_array) {
2917         releasePointer(_env, _array, pixels, _exception ? JNI_FALSE : JNI_TRUE);
2918     }
2919 }
2920 
2921 /* void glRotatef ( GLfloat angle, GLfloat x, GLfloat y, GLfloat z ) */
2922 static void
android_glRotatef__FFFF(JNIEnv * _env,jobject _this,jfloat angle,jfloat x,jfloat y,jfloat z)2923 android_glRotatef__FFFF
2924   (JNIEnv *_env, jobject _this, jfloat angle, jfloat x, jfloat y, jfloat z) {
2925     glRotatef(
2926         (GLfloat)angle,
2927         (GLfloat)x,
2928         (GLfloat)y,
2929         (GLfloat)z
2930     );
2931 }
2932 
2933 /* void glRotatex ( GLfixed angle, GLfixed x, GLfixed y, GLfixed z ) */
2934 static void
android_glRotatex__IIII(JNIEnv * _env,jobject _this,jint angle,jint x,jint y,jint z)2935 android_glRotatex__IIII
2936   (JNIEnv *_env, jobject _this, jint angle, jint x, jint y, jint z) {
2937     glRotatex(
2938         (GLfixed)angle,
2939         (GLfixed)x,
2940         (GLfixed)y,
2941         (GLfixed)z
2942     );
2943 }
2944 
2945 /* void glSampleCoverage ( GLclampf value, GLboolean invert ) */
2946 static void
android_glSampleCoverage__FZ(JNIEnv * _env,jobject _this,jfloat value,jboolean invert)2947 android_glSampleCoverage__FZ
2948   (JNIEnv *_env, jobject _this, jfloat value, jboolean invert) {
2949     glSampleCoverage(
2950         (GLclampf)value,
2951         (GLboolean)invert
2952     );
2953 }
2954 
2955 /* void glSampleCoveragex ( GLclampx value, GLboolean invert ) */
2956 static void
android_glSampleCoveragex__IZ(JNIEnv * _env,jobject _this,jint value,jboolean invert)2957 android_glSampleCoveragex__IZ
2958   (JNIEnv *_env, jobject _this, jint value, jboolean invert) {
2959     glSampleCoveragex(
2960         (GLclampx)value,
2961         (GLboolean)invert
2962     );
2963 }
2964 
2965 /* void glScalef ( GLfloat x, GLfloat y, GLfloat z ) */
2966 static void
android_glScalef__FFF(JNIEnv * _env,jobject _this,jfloat x,jfloat y,jfloat z)2967 android_glScalef__FFF
2968   (JNIEnv *_env, jobject _this, jfloat x, jfloat y, jfloat z) {
2969     glScalef(
2970         (GLfloat)x,
2971         (GLfloat)y,
2972         (GLfloat)z
2973     );
2974 }
2975 
2976 /* void glScalex ( GLfixed x, GLfixed y, GLfixed z ) */
2977 static void
android_glScalex__III(JNIEnv * _env,jobject _this,jint x,jint y,jint z)2978 android_glScalex__III
2979   (JNIEnv *_env, jobject _this, jint x, jint y, jint z) {
2980     glScalex(
2981         (GLfixed)x,
2982         (GLfixed)y,
2983         (GLfixed)z
2984     );
2985 }
2986 
2987 /* void glScissor ( GLint x, GLint y, GLsizei width, GLsizei height ) */
2988 static void
android_glScissor__IIII(JNIEnv * _env,jobject _this,jint x,jint y,jint width,jint height)2989 android_glScissor__IIII
2990   (JNIEnv *_env, jobject _this, jint x, jint y, jint width, jint height) {
2991     glScissor(
2992         (GLint)x,
2993         (GLint)y,
2994         (GLsizei)width,
2995         (GLsizei)height
2996     );
2997 }
2998 
2999 /* void glShadeModel ( GLenum mode ) */
3000 static void
android_glShadeModel__I(JNIEnv * _env,jobject _this,jint mode)3001 android_glShadeModel__I
3002   (JNIEnv *_env, jobject _this, jint mode) {
3003     glShadeModel(
3004         (GLenum)mode
3005     );
3006 }
3007 
3008 /* void glStencilFunc ( GLenum func, GLint ref, GLuint mask ) */
3009 static void
android_glStencilFunc__III(JNIEnv * _env,jobject _this,jint func,jint ref,jint mask)3010 android_glStencilFunc__III
3011   (JNIEnv *_env, jobject _this, jint func, jint ref, jint mask) {
3012     glStencilFunc(
3013         (GLenum)func,
3014         (GLint)ref,
3015         (GLuint)mask
3016     );
3017 }
3018 
3019 /* void glStencilMask ( GLuint mask ) */
3020 static void
android_glStencilMask__I(JNIEnv * _env,jobject _this,jint mask)3021 android_glStencilMask__I
3022   (JNIEnv *_env, jobject _this, jint mask) {
3023     glStencilMask(
3024         (GLuint)mask
3025     );
3026 }
3027 
3028 /* void glStencilOp ( GLenum fail, GLenum zfail, GLenum zpass ) */
3029 static void
android_glStencilOp__III(JNIEnv * _env,jobject _this,jint fail,jint zfail,jint zpass)3030 android_glStencilOp__III
3031   (JNIEnv *_env, jobject _this, jint fail, jint zfail, jint zpass) {
3032     glStencilOp(
3033         (GLenum)fail,
3034         (GLenum)zfail,
3035         (GLenum)zpass
3036     );
3037 }
3038 
3039 /* void glTexCoordPointer ( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer ) */
3040 static void
android_glTexCoordPointerBounds__IIILjava_nio_Buffer_2I(JNIEnv * _env,jobject _this,jint size,jint type,jint stride,jobject pointer_buf,jint remaining)3041 android_glTexCoordPointerBounds__IIILjava_nio_Buffer_2I
3042   (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jobject pointer_buf, jint remaining) {
3043     jarray _array = (jarray) 0;
3044     jint _remaining;
3045     GLvoid *pointer = (GLvoid *) 0;
3046 
3047     if (pointer_buf) {
3048         pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf);
3049         if ( ! pointer ) {
3050             return;
3051         }
3052     }
3053     glTexCoordPointerBounds(
3054         (GLint)size,
3055         (GLenum)type,
3056         (GLsizei)stride,
3057         (GLvoid *)pointer,
3058         (GLsizei)remaining
3059     );
3060 }
3061 
3062 /* void glTexEnvf ( GLenum target, GLenum pname, GLfloat param ) */
3063 static void
android_glTexEnvf__IIF(JNIEnv * _env,jobject _this,jint target,jint pname,jfloat param)3064 android_glTexEnvf__IIF
3065   (JNIEnv *_env, jobject _this, jint target, jint pname, jfloat param) {
3066     glTexEnvf(
3067         (GLenum)target,
3068         (GLenum)pname,
3069         (GLfloat)param
3070     );
3071 }
3072 
3073 /* void glTexEnvfv ( GLenum target, GLenum pname, const GLfloat *params ) */
3074 static void
android_glTexEnvfv__II_3FI(JNIEnv * _env,jobject _this,jint target,jint pname,jfloatArray params_ref,jint offset)3075 android_glTexEnvfv__II_3FI
3076   (JNIEnv *_env, jobject _this, jint target, jint pname, jfloatArray params_ref, jint offset) {
3077     GLfloat *params_base = (GLfloat *) 0;
3078     jint _remaining;
3079     GLfloat *params = (GLfloat *) 0;
3080 
3081     if (!params_ref) {
3082         _env->ThrowNew(IAEClass, "params == null");
3083         goto exit;
3084     }
3085     if (offset < 0) {
3086         _env->ThrowNew(IAEClass, "offset < 0");
3087         goto exit;
3088     }
3089     _remaining = _env->GetArrayLength(params_ref) - offset;
3090     int _needed;
3091     switch (pname) {
3092 #if defined(GL_TEXTURE_ENV_MODE)
3093         case GL_TEXTURE_ENV_MODE:
3094 #endif // defined(GL_TEXTURE_ENV_MODE)
3095 #if defined(GL_COMBINE_RGB)
3096         case GL_COMBINE_RGB:
3097 #endif // defined(GL_COMBINE_RGB)
3098 #if defined(GL_COMBINE_ALPHA)
3099         case GL_COMBINE_ALPHA:
3100 #endif // defined(GL_COMBINE_ALPHA)
3101             _needed = 1;
3102             break;
3103 #if defined(GL_TEXTURE_ENV_COLOR)
3104         case GL_TEXTURE_ENV_COLOR:
3105 #endif // defined(GL_TEXTURE_ENV_COLOR)
3106             _needed = 4;
3107             break;
3108         default:
3109             _needed = 0;
3110             break;
3111     }
3112     if (_remaining < _needed) {
3113         _env->ThrowNew(IAEClass, "length - offset < needed");
3114         goto exit;
3115     }
3116     params_base = (GLfloat *)
3117         _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
3118     params = params_base + offset;
3119 
3120     glTexEnvfv(
3121         (GLenum)target,
3122         (GLenum)pname,
3123         (GLfloat *)params
3124     );
3125 
3126 exit:
3127     if (params_base) {
3128         _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
3129             JNI_ABORT);
3130     }
3131 }
3132 
3133 /* void glTexEnvfv ( GLenum target, GLenum pname, const GLfloat *params ) */
3134 static void
android_glTexEnvfv__IILjava_nio_FloatBuffer_2(JNIEnv * _env,jobject _this,jint target,jint pname,jobject params_buf)3135 android_glTexEnvfv__IILjava_nio_FloatBuffer_2
3136   (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
3137     jarray _array = (jarray) 0;
3138     jint _remaining;
3139     GLfloat *params = (GLfloat *) 0;
3140 
3141     params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining);
3142     int _needed;
3143     switch (pname) {
3144 #if defined(GL_TEXTURE_ENV_MODE)
3145         case GL_TEXTURE_ENV_MODE:
3146 #endif // defined(GL_TEXTURE_ENV_MODE)
3147 #if defined(GL_COMBINE_RGB)
3148         case GL_COMBINE_RGB:
3149 #endif // defined(GL_COMBINE_RGB)
3150 #if defined(GL_COMBINE_ALPHA)
3151         case GL_COMBINE_ALPHA:
3152 #endif // defined(GL_COMBINE_ALPHA)
3153             _needed = 1;
3154             break;
3155 #if defined(GL_TEXTURE_ENV_COLOR)
3156         case GL_TEXTURE_ENV_COLOR:
3157 #endif // defined(GL_TEXTURE_ENV_COLOR)
3158             _needed = 4;
3159             break;
3160         default:
3161             _needed = 0;
3162             break;
3163     }
3164     if (_remaining < _needed) {
3165         _env->ThrowNew(IAEClass, "remaining() < needed");
3166         goto exit;
3167     }
3168     glTexEnvfv(
3169         (GLenum)target,
3170         (GLenum)pname,
3171         (GLfloat *)params
3172     );
3173 
3174 exit:
3175     if (_array) {
3176         releasePointer(_env, _array, params, JNI_FALSE);
3177     }
3178 }
3179 
3180 /* void glTexEnvx ( GLenum target, GLenum pname, GLfixed param ) */
3181 static void
android_glTexEnvx__III(JNIEnv * _env,jobject _this,jint target,jint pname,jint param)3182 android_glTexEnvx__III
3183   (JNIEnv *_env, jobject _this, jint target, jint pname, jint param) {
3184     glTexEnvx(
3185         (GLenum)target,
3186         (GLenum)pname,
3187         (GLfixed)param
3188     );
3189 }
3190 
3191 /* void glTexEnvxv ( GLenum target, GLenum pname, const GLfixed *params ) */
3192 static void
android_glTexEnvxv__II_3II(JNIEnv * _env,jobject _this,jint target,jint pname,jintArray params_ref,jint offset)3193 android_glTexEnvxv__II_3II
3194   (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
3195     GLfixed *params_base = (GLfixed *) 0;
3196     jint _remaining;
3197     GLfixed *params = (GLfixed *) 0;
3198 
3199     if (!params_ref) {
3200         _env->ThrowNew(IAEClass, "params == null");
3201         goto exit;
3202     }
3203     if (offset < 0) {
3204         _env->ThrowNew(IAEClass, "offset < 0");
3205         goto exit;
3206     }
3207     _remaining = _env->GetArrayLength(params_ref) - offset;
3208     int _needed;
3209     switch (pname) {
3210 #if defined(GL_TEXTURE_ENV_MODE)
3211         case GL_TEXTURE_ENV_MODE:
3212 #endif // defined(GL_TEXTURE_ENV_MODE)
3213 #if defined(GL_COMBINE_RGB)
3214         case GL_COMBINE_RGB:
3215 #endif // defined(GL_COMBINE_RGB)
3216 #if defined(GL_COMBINE_ALPHA)
3217         case GL_COMBINE_ALPHA:
3218 #endif // defined(GL_COMBINE_ALPHA)
3219             _needed = 1;
3220             break;
3221 #if defined(GL_TEXTURE_ENV_COLOR)
3222         case GL_TEXTURE_ENV_COLOR:
3223 #endif // defined(GL_TEXTURE_ENV_COLOR)
3224             _needed = 4;
3225             break;
3226         default:
3227             _needed = 0;
3228             break;
3229     }
3230     if (_remaining < _needed) {
3231         _env->ThrowNew(IAEClass, "length - offset < needed");
3232         goto exit;
3233     }
3234     params_base = (GLfixed *)
3235         _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
3236     params = params_base + offset;
3237 
3238     glTexEnvxv(
3239         (GLenum)target,
3240         (GLenum)pname,
3241         (GLfixed *)params
3242     );
3243 
3244 exit:
3245     if (params_base) {
3246         _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
3247             JNI_ABORT);
3248     }
3249 }
3250 
3251 /* void glTexEnvxv ( GLenum target, GLenum pname, const GLfixed *params ) */
3252 static void
android_glTexEnvxv__IILjava_nio_IntBuffer_2(JNIEnv * _env,jobject _this,jint target,jint pname,jobject params_buf)3253 android_glTexEnvxv__IILjava_nio_IntBuffer_2
3254   (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
3255     jarray _array = (jarray) 0;
3256     jint _remaining;
3257     GLfixed *params = (GLfixed *) 0;
3258 
3259     params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining);
3260     int _needed;
3261     switch (pname) {
3262 #if defined(GL_TEXTURE_ENV_MODE)
3263         case GL_TEXTURE_ENV_MODE:
3264 #endif // defined(GL_TEXTURE_ENV_MODE)
3265 #if defined(GL_COMBINE_RGB)
3266         case GL_COMBINE_RGB:
3267 #endif // defined(GL_COMBINE_RGB)
3268 #if defined(GL_COMBINE_ALPHA)
3269         case GL_COMBINE_ALPHA:
3270 #endif // defined(GL_COMBINE_ALPHA)
3271             _needed = 1;
3272             break;
3273 #if defined(GL_TEXTURE_ENV_COLOR)
3274         case GL_TEXTURE_ENV_COLOR:
3275 #endif // defined(GL_TEXTURE_ENV_COLOR)
3276             _needed = 4;
3277             break;
3278         default:
3279             _needed = 0;
3280             break;
3281     }
3282     if (_remaining < _needed) {
3283         _env->ThrowNew(IAEClass, "remaining() < needed");
3284         goto exit;
3285     }
3286     glTexEnvxv(
3287         (GLenum)target,
3288         (GLenum)pname,
3289         (GLfixed *)params
3290     );
3291 
3292 exit:
3293     if (_array) {
3294         releasePointer(_env, _array, params, JNI_FALSE);
3295     }
3296 }
3297 
3298 /* void glTexImage2D ( GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels ) */
3299 static void
android_glTexImage2D__IIIIIIIILjava_nio_Buffer_2(JNIEnv * _env,jobject _this,jint target,jint level,jint internalformat,jint width,jint height,jint border,jint format,jint type,jobject pixels_buf)3300 android_glTexImage2D__IIIIIIIILjava_nio_Buffer_2
3301   (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint border, jint format, jint type, jobject pixels_buf) {
3302     jarray _array = (jarray) 0;
3303     jint _remaining;
3304     GLvoid *pixels = (GLvoid *) 0;
3305 
3306     if (pixels_buf) {
3307         pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining);
3308     }
3309     glTexImage2D(
3310         (GLenum)target,
3311         (GLint)level,
3312         (GLint)internalformat,
3313         (GLsizei)width,
3314         (GLsizei)height,
3315         (GLint)border,
3316         (GLenum)format,
3317         (GLenum)type,
3318         (GLvoid *)pixels
3319     );
3320     if (_array) {
3321         releasePointer(_env, _array, pixels, JNI_FALSE);
3322     }
3323 }
3324 
3325 /* void glTexParameterf ( GLenum target, GLenum pname, GLfloat param ) */
3326 static void
android_glTexParameterf__IIF(JNIEnv * _env,jobject _this,jint target,jint pname,jfloat param)3327 android_glTexParameterf__IIF
3328   (JNIEnv *_env, jobject _this, jint target, jint pname, jfloat param) {
3329     glTexParameterf(
3330         (GLenum)target,
3331         (GLenum)pname,
3332         (GLfloat)param
3333     );
3334 }
3335 
3336 /* void glTexParameterx ( GLenum target, GLenum pname, GLfixed param ) */
3337 static void
android_glTexParameterx__III(JNIEnv * _env,jobject _this,jint target,jint pname,jint param)3338 android_glTexParameterx__III
3339   (JNIEnv *_env, jobject _this, jint target, jint pname, jint param) {
3340     glTexParameterx(
3341         (GLenum)target,
3342         (GLenum)pname,
3343         (GLfixed)param
3344     );
3345 }
3346 
3347 /* void glTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels ) */
3348 static void
android_glTexSubImage2D__IIIIIIIILjava_nio_Buffer_2(JNIEnv * _env,jobject _this,jint target,jint level,jint xoffset,jint yoffset,jint width,jint height,jint format,jint type,jobject pixels_buf)3349 android_glTexSubImage2D__IIIIIIIILjava_nio_Buffer_2
3350   (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint width, jint height, jint format, jint type, jobject pixels_buf) {
3351     jarray _array = (jarray) 0;
3352     jint _remaining;
3353     GLvoid *pixels = (GLvoid *) 0;
3354 
3355     if (pixels_buf) {
3356         pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining);
3357     }
3358     glTexSubImage2D(
3359         (GLenum)target,
3360         (GLint)level,
3361         (GLint)xoffset,
3362         (GLint)yoffset,
3363         (GLsizei)width,
3364         (GLsizei)height,
3365         (GLenum)format,
3366         (GLenum)type,
3367         (GLvoid *)pixels
3368     );
3369     if (_array) {
3370         releasePointer(_env, _array, pixels, JNI_FALSE);
3371     }
3372 }
3373 
3374 /* void glTranslatef ( GLfloat x, GLfloat y, GLfloat z ) */
3375 static void
android_glTranslatef__FFF(JNIEnv * _env,jobject _this,jfloat x,jfloat y,jfloat z)3376 android_glTranslatef__FFF
3377   (JNIEnv *_env, jobject _this, jfloat x, jfloat y, jfloat z) {
3378     glTranslatef(
3379         (GLfloat)x,
3380         (GLfloat)y,
3381         (GLfloat)z
3382     );
3383 }
3384 
3385 /* void glTranslatex ( GLfixed x, GLfixed y, GLfixed z ) */
3386 static void
android_glTranslatex__III(JNIEnv * _env,jobject _this,jint x,jint y,jint z)3387 android_glTranslatex__III
3388   (JNIEnv *_env, jobject _this, jint x, jint y, jint z) {
3389     glTranslatex(
3390         (GLfixed)x,
3391         (GLfixed)y,
3392         (GLfixed)z
3393     );
3394 }
3395 
3396 /* void glVertexPointer ( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer ) */
3397 static void
android_glVertexPointerBounds__IIILjava_nio_Buffer_2I(JNIEnv * _env,jobject _this,jint size,jint type,jint stride,jobject pointer_buf,jint remaining)3398 android_glVertexPointerBounds__IIILjava_nio_Buffer_2I
3399   (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jobject pointer_buf, jint remaining) {
3400     jarray _array = (jarray) 0;
3401     jint _remaining;
3402     GLvoid *pointer = (GLvoid *) 0;
3403 
3404     if (pointer_buf) {
3405         pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf);
3406         if ( ! pointer ) {
3407             return;
3408         }
3409     }
3410     glVertexPointerBounds(
3411         (GLint)size,
3412         (GLenum)type,
3413         (GLsizei)stride,
3414         (GLvoid *)pointer,
3415         (GLsizei)remaining
3416     );
3417 }
3418 
3419 /* void glViewport ( GLint x, GLint y, GLsizei width, GLsizei height ) */
3420 static void
android_glViewport__IIII(JNIEnv * _env,jobject _this,jint x,jint y,jint width,jint height)3421 android_glViewport__IIII
3422   (JNIEnv *_env, jobject _this, jint x, jint y, jint width, jint height) {
3423     glViewport(
3424         (GLint)x,
3425         (GLint)y,
3426         (GLsizei)width,
3427         (GLsizei)height
3428     );
3429 }
3430 
3431 static const char *classPathName = "android/opengl/GLES10";
3432 
3433 static JNINativeMethod methods[] = {
3434 {"_nativeClassInit", "()V", (void*)nativeClassInit },
3435 {"glActiveTexture", "(I)V", (void *) android_glActiveTexture__I },
3436 {"glAlphaFunc", "(IF)V", (void *) android_glAlphaFunc__IF },
3437 {"glAlphaFuncx", "(II)V", (void *) android_glAlphaFuncx__II },
3438 {"glBindTexture", "(II)V", (void *) android_glBindTexture__II },
3439 {"glBlendFunc", "(II)V", (void *) android_glBlendFunc__II },
3440 {"glClear", "(I)V", (void *) android_glClear__I },
3441 {"glClearColor", "(FFFF)V", (void *) android_glClearColor__FFFF },
3442 {"glClearColorx", "(IIII)V", (void *) android_glClearColorx__IIII },
3443 {"glClearDepthf", "(F)V", (void *) android_glClearDepthf__F },
3444 {"glClearDepthx", "(I)V", (void *) android_glClearDepthx__I },
3445 {"glClearStencil", "(I)V", (void *) android_glClearStencil__I },
3446 {"glClientActiveTexture", "(I)V", (void *) android_glClientActiveTexture__I },
3447 {"glColor4f", "(FFFF)V", (void *) android_glColor4f__FFFF },
3448 {"glColor4x", "(IIII)V", (void *) android_glColor4x__IIII },
3449 {"glColorMask", "(ZZZZ)V", (void *) android_glColorMask__ZZZZ },
3450 {"glColorPointerBounds", "(IIILjava/nio/Buffer;I)V", (void *) android_glColorPointerBounds__IIILjava_nio_Buffer_2I },
3451 {"glCompressedTexImage2D", "(IIIIIIILjava/nio/Buffer;)V", (void *) android_glCompressedTexImage2D__IIIIIIILjava_nio_Buffer_2 },
3452 {"glCompressedTexSubImage2D", "(IIIIIIIILjava/nio/Buffer;)V", (void *) android_glCompressedTexSubImage2D__IIIIIIIILjava_nio_Buffer_2 },
3453 {"glCopyTexImage2D", "(IIIIIIII)V", (void *) android_glCopyTexImage2D__IIIIIIII },
3454 {"glCopyTexSubImage2D", "(IIIIIIII)V", (void *) android_glCopyTexSubImage2D__IIIIIIII },
3455 {"glCullFace", "(I)V", (void *) android_glCullFace__I },
3456 {"glDeleteTextures", "(I[II)V", (void *) android_glDeleteTextures__I_3II },
3457 {"glDeleteTextures", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteTextures__ILjava_nio_IntBuffer_2 },
3458 {"glDepthFunc", "(I)V", (void *) android_glDepthFunc__I },
3459 {"glDepthMask", "(Z)V", (void *) android_glDepthMask__Z },
3460 {"glDepthRangef", "(FF)V", (void *) android_glDepthRangef__FF },
3461 {"glDepthRangex", "(II)V", (void *) android_glDepthRangex__II },
3462 {"glDisable", "(I)V", (void *) android_glDisable__I },
3463 {"glDisableClientState", "(I)V", (void *) android_glDisableClientState__I },
3464 {"glDrawArrays", "(III)V", (void *) android_glDrawArrays__III },
3465 {"glDrawElements", "(IIILjava/nio/Buffer;)V", (void *) android_glDrawElements__IIILjava_nio_Buffer_2 },
3466 {"glEnable", "(I)V", (void *) android_glEnable__I },
3467 {"glEnableClientState", "(I)V", (void *) android_glEnableClientState__I },
3468 {"glFinish", "()V", (void *) android_glFinish__ },
3469 {"glFlush", "()V", (void *) android_glFlush__ },
3470 {"glFogf", "(IF)V", (void *) android_glFogf__IF },
3471 {"glFogfv", "(I[FI)V", (void *) android_glFogfv__I_3FI },
3472 {"glFogfv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glFogfv__ILjava_nio_FloatBuffer_2 },
3473 {"glFogx", "(II)V", (void *) android_glFogx__II },
3474 {"glFogxv", "(I[II)V", (void *) android_glFogxv__I_3II },
3475 {"glFogxv", "(ILjava/nio/IntBuffer;)V", (void *) android_glFogxv__ILjava_nio_IntBuffer_2 },
3476 {"glFrontFace", "(I)V", (void *) android_glFrontFace__I },
3477 {"glFrustumf", "(FFFFFF)V", (void *) android_glFrustumf__FFFFFF },
3478 {"glFrustumx", "(IIIIII)V", (void *) android_glFrustumx__IIIIII },
3479 {"glGenTextures", "(I[II)V", (void *) android_glGenTextures__I_3II },
3480 {"glGenTextures", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenTextures__ILjava_nio_IntBuffer_2 },
3481 {"glGetError", "()I", (void *) android_glGetError__ },
3482 {"glGetIntegerv", "(I[II)V", (void *) android_glGetIntegerv__I_3II },
3483 {"glGetIntegerv", "(ILjava/nio/IntBuffer;)V", (void *) android_glGetIntegerv__ILjava_nio_IntBuffer_2 },
3484 {"glGetString", "(I)Ljava/lang/String;", (void *) android_glGetString },
3485 {"glHint", "(II)V", (void *) android_glHint__II },
3486 {"glLightModelf", "(IF)V", (void *) android_glLightModelf__IF },
3487 {"glLightModelfv", "(I[FI)V", (void *) android_glLightModelfv__I_3FI },
3488 {"glLightModelfv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glLightModelfv__ILjava_nio_FloatBuffer_2 },
3489 {"glLightModelx", "(II)V", (void *) android_glLightModelx__II },
3490 {"glLightModelxv", "(I[II)V", (void *) android_glLightModelxv__I_3II },
3491 {"glLightModelxv", "(ILjava/nio/IntBuffer;)V", (void *) android_glLightModelxv__ILjava_nio_IntBuffer_2 },
3492 {"glLightf", "(IIF)V", (void *) android_glLightf__IIF },
3493 {"glLightfv", "(II[FI)V", (void *) android_glLightfv__II_3FI },
3494 {"glLightfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glLightfv__IILjava_nio_FloatBuffer_2 },
3495 {"glLightx", "(III)V", (void *) android_glLightx__III },
3496 {"glLightxv", "(II[II)V", (void *) android_glLightxv__II_3II },
3497 {"glLightxv", "(IILjava/nio/IntBuffer;)V", (void *) android_glLightxv__IILjava_nio_IntBuffer_2 },
3498 {"glLineWidth", "(F)V", (void *) android_glLineWidth__F },
3499 {"glLineWidthx", "(I)V", (void *) android_glLineWidthx__I },
3500 {"glLoadIdentity", "()V", (void *) android_glLoadIdentity__ },
3501 {"glLoadMatrixf", "([FI)V", (void *) android_glLoadMatrixf___3FI },
3502 {"glLoadMatrixf", "(Ljava/nio/FloatBuffer;)V", (void *) android_glLoadMatrixf__Ljava_nio_FloatBuffer_2 },
3503 {"glLoadMatrixx", "([II)V", (void *) android_glLoadMatrixx___3II },
3504 {"glLoadMatrixx", "(Ljava/nio/IntBuffer;)V", (void *) android_glLoadMatrixx__Ljava_nio_IntBuffer_2 },
3505 {"glLogicOp", "(I)V", (void *) android_glLogicOp__I },
3506 {"glMaterialf", "(IIF)V", (void *) android_glMaterialf__IIF },
3507 {"glMaterialfv", "(II[FI)V", (void *) android_glMaterialfv__II_3FI },
3508 {"glMaterialfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glMaterialfv__IILjava_nio_FloatBuffer_2 },
3509 {"glMaterialx", "(III)V", (void *) android_glMaterialx__III },
3510 {"glMaterialxv", "(II[II)V", (void *) android_glMaterialxv__II_3II },
3511 {"glMaterialxv", "(IILjava/nio/IntBuffer;)V", (void *) android_glMaterialxv__IILjava_nio_IntBuffer_2 },
3512 {"glMatrixMode", "(I)V", (void *) android_glMatrixMode__I },
3513 {"glMultMatrixf", "([FI)V", (void *) android_glMultMatrixf___3FI },
3514 {"glMultMatrixf", "(Ljava/nio/FloatBuffer;)V", (void *) android_glMultMatrixf__Ljava_nio_FloatBuffer_2 },
3515 {"glMultMatrixx", "([II)V", (void *) android_glMultMatrixx___3II },
3516 {"glMultMatrixx", "(Ljava/nio/IntBuffer;)V", (void *) android_glMultMatrixx__Ljava_nio_IntBuffer_2 },
3517 {"glMultiTexCoord4f", "(IFFFF)V", (void *) android_glMultiTexCoord4f__IFFFF },
3518 {"glMultiTexCoord4x", "(IIIII)V", (void *) android_glMultiTexCoord4x__IIIII },
3519 {"glNormal3f", "(FFF)V", (void *) android_glNormal3f__FFF },
3520 {"glNormal3x", "(III)V", (void *) android_glNormal3x__III },
3521 {"glNormalPointerBounds", "(IILjava/nio/Buffer;I)V", (void *) android_glNormalPointerBounds__IILjava_nio_Buffer_2I },
3522 {"glOrthof", "(FFFFFF)V", (void *) android_glOrthof__FFFFFF },
3523 {"glOrthox", "(IIIIII)V", (void *) android_glOrthox__IIIIII },
3524 {"glPixelStorei", "(II)V", (void *) android_glPixelStorei__II },
3525 {"glPointSize", "(F)V", (void *) android_glPointSize__F },
3526 {"glPointSizex", "(I)V", (void *) android_glPointSizex__I },
3527 {"glPolygonOffset", "(FF)V", (void *) android_glPolygonOffset__FF },
3528 {"glPolygonOffsetx", "(II)V", (void *) android_glPolygonOffsetx__II },
3529 {"glPopMatrix", "()V", (void *) android_glPopMatrix__ },
3530 {"glPushMatrix", "()V", (void *) android_glPushMatrix__ },
3531 {"glReadPixels", "(IIIIIILjava/nio/Buffer;)V", (void *) android_glReadPixels__IIIIIILjava_nio_Buffer_2 },
3532 {"glRotatef", "(FFFF)V", (void *) android_glRotatef__FFFF },
3533 {"glRotatex", "(IIII)V", (void *) android_glRotatex__IIII },
3534 {"glSampleCoverage", "(FZ)V", (void *) android_glSampleCoverage__FZ },
3535 {"glSampleCoveragex", "(IZ)V", (void *) android_glSampleCoveragex__IZ },
3536 {"glScalef", "(FFF)V", (void *) android_glScalef__FFF },
3537 {"glScalex", "(III)V", (void *) android_glScalex__III },
3538 {"glScissor", "(IIII)V", (void *) android_glScissor__IIII },
3539 {"glShadeModel", "(I)V", (void *) android_glShadeModel__I },
3540 {"glStencilFunc", "(III)V", (void *) android_glStencilFunc__III },
3541 {"glStencilMask", "(I)V", (void *) android_glStencilMask__I },
3542 {"glStencilOp", "(III)V", (void *) android_glStencilOp__III },
3543 {"glTexCoordPointerBounds", "(IIILjava/nio/Buffer;I)V", (void *) android_glTexCoordPointerBounds__IIILjava_nio_Buffer_2I },
3544 {"glTexEnvf", "(IIF)V", (void *) android_glTexEnvf__IIF },
3545 {"glTexEnvfv", "(II[FI)V", (void *) android_glTexEnvfv__II_3FI },
3546 {"glTexEnvfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glTexEnvfv__IILjava_nio_FloatBuffer_2 },
3547 {"glTexEnvx", "(III)V", (void *) android_glTexEnvx__III },
3548 {"glTexEnvxv", "(II[II)V", (void *) android_glTexEnvxv__II_3II },
3549 {"glTexEnvxv", "(IILjava/nio/IntBuffer;)V", (void *) android_glTexEnvxv__IILjava_nio_IntBuffer_2 },
3550 {"glTexImage2D", "(IIIIIIIILjava/nio/Buffer;)V", (void *) android_glTexImage2D__IIIIIIIILjava_nio_Buffer_2 },
3551 {"glTexParameterf", "(IIF)V", (void *) android_glTexParameterf__IIF },
3552 {"glTexParameterx", "(III)V", (void *) android_glTexParameterx__III },
3553 {"glTexSubImage2D", "(IIIIIIIILjava/nio/Buffer;)V", (void *) android_glTexSubImage2D__IIIIIIIILjava_nio_Buffer_2 },
3554 {"glTranslatef", "(FFF)V", (void *) android_glTranslatef__FFF },
3555 {"glTranslatex", "(III)V", (void *) android_glTranslatex__III },
3556 {"glVertexPointerBounds", "(IIILjava/nio/Buffer;I)V", (void *) android_glVertexPointerBounds__IIILjava_nio_Buffer_2I },
3557 {"glViewport", "(IIII)V", (void *) android_glViewport__IIII },
3558 };
3559 
register_android_opengl_jni_GLES10(JNIEnv * _env)3560 int register_android_opengl_jni_GLES10(JNIEnv *_env)
3561 {
3562     int err;
3563     err = android::AndroidRuntime::registerNativeMethods(_env, classPathName, methods, NELEM(methods));
3564     return err;
3565 }
3566