127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* 227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich** 327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich** Copyright 2009, The Android Open Source Project 427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich** 524ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** Licensed under the Apache License, Version 2.0 (the "License"); 624ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** you may not use this file except in compliance with the License. 724ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** You may obtain a copy of the License at 827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich** 924ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** http://www.apache.org/licenses/LICENSE-2.0 1027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich** 1124ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** Unless required by applicable law or agreed to in writing, software 1224ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** distributed under the License is distributed on an "AS IS" BASIS, 1324ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1424ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** See the License for the specific language governing permissions and 1527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich** limitations under the License. 1627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich*/ 1727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 1827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich// This source file is automatically generated 1927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 20bfe6333c3cf529600f41f14e3b8c5846e632c9a2Andreas Gampe#pragma GCC diagnostic ignored "-Wunused-variable" 21bfe6333c3cf529600f41f14e3b8c5846e632c9a2Andreas Gampe#pragma GCC diagnostic ignored "-Wunused-but-set-variable" 22bfe6333c3cf529600f41f14e3b8c5846e632c9a2Andreas Gampe#pragma GCC diagnostic ignored "-Wunused-function" 23bfe6333c3cf529600f41f14e3b8c5846e632c9a2Andreas Gampe 242ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#include <GLES/gl.h> 252ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#include <GLES/glext.h> 262ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 279626f8203a8c222b8960a49cdc66d540fdb688b0Jesse Hall#include <jni.h> 289626f8203a8c222b8960a49cdc66d540fdb688b0Jesse Hall#include <JNIHelp.h> 2927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#include <android_runtime/AndroidRuntime.h> 3027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#include <utils/misc.h> 3127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#include <assert.h> 322ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 332ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianstatic int initialized = 0; 342ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 352ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianstatic jclass nioAccessClass; 362ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianstatic jclass bufferClass; 372ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianstatic jmethodID getBasePointerID; 382ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianstatic jmethodID getBaseArrayID; 392ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianstatic jmethodID getBaseArrayOffsetID; 402ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianstatic jfieldID positionID; 412ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianstatic jfieldID limitID; 422ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianstatic jfieldID elementSizeShiftID; 432ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 4427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 458331f72078051cdf5a26230ee819f7ef7f9fcc24Mathias Agopian/* special calls implemented in Android's GLES wrapper used to more 468331f72078051cdf5a26230ee819f7ef7f9fcc24Mathias Agopian * efficiently bound-check passed arrays */ 478331f72078051cdf5a26230ee819f7ef7f9fcc24Mathias Agopianextern "C" { 482ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#ifdef GL_VERSION_ES_CM_1_1 498331f72078051cdf5a26230ee819f7ef7f9fcc24Mathias AgopianGL_API void GL_APIENTRY glColorPointerBounds(GLint size, GLenum type, GLsizei stride, 508331f72078051cdf5a26230ee819f7ef7f9fcc24Mathias Agopian const GLvoid *ptr, GLsizei count); 518331f72078051cdf5a26230ee819f7ef7f9fcc24Mathias AgopianGL_API void GL_APIENTRY glNormalPointerBounds(GLenum type, GLsizei stride, 528331f72078051cdf5a26230ee819f7ef7f9fcc24Mathias Agopian const GLvoid *pointer, GLsizei count); 538331f72078051cdf5a26230ee819f7ef7f9fcc24Mathias AgopianGL_API void GL_APIENTRY glTexCoordPointerBounds(GLint size, GLenum type, 548331f72078051cdf5a26230ee819f7ef7f9fcc24Mathias Agopian GLsizei stride, const GLvoid *pointer, GLsizei count); 558331f72078051cdf5a26230ee819f7ef7f9fcc24Mathias AgopianGL_API void GL_APIENTRY glVertexPointerBounds(GLint size, GLenum type, 568331f72078051cdf5a26230ee819f7ef7f9fcc24Mathias Agopian GLsizei stride, const GLvoid *pointer, GLsizei count); 572ad0477f16c64dc3126741933f11e27353521bb4Mathias AgopianGL_API void GL_APIENTRY glPointSizePointerOESBounds(GLenum type, 582ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian GLsizei stride, const GLvoid *pointer, GLsizei count); 592ad0477f16c64dc3126741933f11e27353521bb4Mathias AgopianGL_API void GL_APIENTRY glMatrixIndexPointerOESBounds(GLint size, GLenum type, 602ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian GLsizei stride, const GLvoid *pointer, GLsizei count); 612ad0477f16c64dc3126741933f11e27353521bb4Mathias AgopianGL_API void GL_APIENTRY glWeightPointerOESBounds(GLint size, GLenum type, 622ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian GLsizei stride, const GLvoid *pointer, GLsizei count); 632ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#endif 642ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#ifdef GL_ES_VERSION_2_0 652ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianstatic void glVertexAttribPointerBounds(GLuint indx, GLint size, GLenum type, 662ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian GLboolean normalized, GLsizei stride, const GLvoid *pointer, GLsizei count) { 672ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian glVertexAttribPointer(indx, size, type, normalized, stride, pointer); 682ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian} 692ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#endif 70cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden#ifdef GL_ES_VERSION_3_0 71cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFaddenstatic void glVertexAttribIPointerBounds(GLuint indx, GLint size, GLenum type, 72cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden GLsizei stride, const GLvoid *pointer, GLsizei count) { 73cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden glVertexAttribIPointer(indx, size, type, stride, pointer); 74cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden} 75cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden#endif 768331f72078051cdf5a26230ee819f7ef7f9fcc24Mathias Agopian} 7727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 7827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* Cache method IDs each time the class is loaded. */ 7927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 8027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 8124ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott HughesnativeClassInit(JNIEnv *_env, jclass glImplClass) 8227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{ 8327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jclass nioAccessClassLocal = _env->FindClass("java/nio/NIOAccess"); 8427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich nioAccessClass = (jclass) _env->NewGlobalRef(nioAccessClassLocal); 8527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 8627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jclass bufferClassLocal = _env->FindClass("java/nio/Buffer"); 8727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich bufferClass = (jclass) _env->NewGlobalRef(bufferClassLocal); 8827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 8927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich getBasePointerID = _env->GetStaticMethodID(nioAccessClass, 9027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich "getBasePointer", "(Ljava/nio/Buffer;)J"); 9127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich getBaseArrayID = _env->GetStaticMethodID(nioAccessClass, 9227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich "getBaseArray", "(Ljava/nio/Buffer;)Ljava/lang/Object;"); 9327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich getBaseArrayOffsetID = _env->GetStaticMethodID(nioAccessClass, 9427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich "getBaseArrayOffset", "(Ljava/nio/Buffer;)I"); 9527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 9627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich positionID = _env->GetFieldID(bufferClass, "position", "I"); 9727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich limitID = _env->GetFieldID(bufferClass, "limit", "I"); 9827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich elementSizeShiftID = 9927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->GetFieldID(bufferClass, "_elementSizeShift", "I"); 10027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 10127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 10227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void * 10317045a16575ece34cfadb63da4791f115625df78Thomas TafertshofergetPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining, jint *offset) 10427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{ 10527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint position; 10627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint limit; 10727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint elementSizeShift; 10827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jlong pointer; 10927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 11027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich position = _env->GetIntField(buffer, positionID); 11127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich limit = _env->GetIntField(buffer, limitID); 11227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID); 11327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich *remaining = (limit - position) << elementSizeShift; 11427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich pointer = _env->CallStaticLongMethod(nioAccessClass, 11527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich getBasePointerID, buffer); 11627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (pointer != 0L) { 11727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich *array = NULL; 11801c26ea89d4bbea3cf550e9328742302dd9a2b25Ashok Bhat return reinterpret_cast<void*>(pointer); 11927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 12024ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes 12127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich *array = (jarray) _env->CallStaticObjectMethod(nioAccessClass, 12227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich getBaseArrayID, buffer); 12317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer *offset = _env->CallStaticIntMethod(nioAccessClass, 12427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich getBaseArrayOffsetID, buffer); 12524ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes 12617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer return NULL; 12727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 12827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 1295b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchiclass ByteArrayGetter { 1305b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchipublic: 1315b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi static void* Get(JNIEnv* _env, jbyteArray array, jboolean* is_copy) { 1325b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi return _env->GetByteArrayElements(array, is_copy); 1335b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi } 1345b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi}; 1355b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchiclass BooleanArrayGetter { 1365b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchipublic: 1375b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi static void* Get(JNIEnv* _env, jbooleanArray array, jboolean* is_copy) { 1385b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi return _env->GetBooleanArrayElements(array, is_copy); 1395b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi } 1405b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi}; 1415b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchiclass CharArrayGetter { 1425b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchipublic: 1435b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi static void* Get(JNIEnv* _env, jcharArray array, jboolean* is_copy) { 1445b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi return _env->GetCharArrayElements(array, is_copy); 1455b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi } 1465b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi}; 1475b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchiclass ShortArrayGetter { 1485b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchipublic: 1495b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi static void* Get(JNIEnv* _env, jshortArray array, jboolean* is_copy) { 1505b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi return _env->GetShortArrayElements(array, is_copy); 1515b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi } 1525b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi}; 1535b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchiclass IntArrayGetter { 1545b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchipublic: 1555b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi static void* Get(JNIEnv* _env, jintArray array, jboolean* is_copy) { 1565b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi return _env->GetIntArrayElements(array, is_copy); 1575b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi } 1585b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi}; 1595b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchiclass LongArrayGetter { 1605b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchipublic: 1615b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi static void* Get(JNIEnv* _env, jlongArray array, jboolean* is_copy) { 1625b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi return _env->GetLongArrayElements(array, is_copy); 1635b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi } 1645b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi}; 1655b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchiclass FloatArrayGetter { 1665b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchipublic: 1675b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi static void* Get(JNIEnv* _env, jfloatArray array, jboolean* is_copy) { 1685b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi return _env->GetFloatArrayElements(array, is_copy); 1695b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi } 1705b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi}; 1715b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchiclass DoubleArrayGetter { 1725b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchipublic: 1735b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi static void* Get(JNIEnv* _env, jdoubleArray array, jboolean* is_copy) { 1745b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi return _env->GetDoubleArrayElements(array, is_copy); 1755b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi } 1765b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi}; 1775b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi 1785b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchitemplate<typename JTYPEARRAY, typename ARRAYGETTER> 1795b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchistatic void* 1805b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi YamauchigetArrayPointer(JNIEnv *_env, JTYPEARRAY array, jboolean* is_copy) { 1815b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi return ARRAYGETTER::Get(_env, array, is_copy); 1825b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi} 1835b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi 1845b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchiclass ByteArrayReleaser { 1855b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchipublic: 1865b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi static void Release(JNIEnv* _env, jbyteArray array, jbyte* data, jboolean commit) { 1875b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->ReleaseByteArrayElements(array, data, commit ? 0 : JNI_ABORT); 1885b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi } 1895b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi}; 1905b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchiclass BooleanArrayReleaser { 1915b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchipublic: 1925b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi static void Release(JNIEnv* _env, jbooleanArray array, jboolean* data, jboolean commit) { 1935b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->ReleaseBooleanArrayElements(array, data, commit ? 0 : JNI_ABORT); 1945b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi } 1955b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi}; 1965b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchiclass CharArrayReleaser { 1975b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchipublic: 1985b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi static void Release(JNIEnv* _env, jcharArray array, jchar* data, jboolean commit) { 1995b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->ReleaseCharArrayElements(array, data, commit ? 0 : JNI_ABORT); 2005b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi } 2015b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi}; 2025b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchiclass ShortArrayReleaser { 2035b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchipublic: 2045b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi static void Release(JNIEnv* _env, jshortArray array, jshort* data, jboolean commit) { 2055b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->ReleaseShortArrayElements(array, data, commit ? 0 : JNI_ABORT); 2065b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi } 2075b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi}; 2085b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchiclass IntArrayReleaser { 2095b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchipublic: 2105b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi static void Release(JNIEnv* _env, jintArray array, jint* data, jboolean commit) { 2115b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->ReleaseIntArrayElements(array, data, commit ? 0 : JNI_ABORT); 2125b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi } 2135b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi}; 2145b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchiclass LongArrayReleaser { 2155b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchipublic: 2165b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi static void Release(JNIEnv* _env, jlongArray array, jlong* data, jboolean commit) { 2175b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->ReleaseLongArrayElements(array, data, commit ? 0 : JNI_ABORT); 2185b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi } 2195b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi}; 2205b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchiclass FloatArrayReleaser { 2215b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchipublic: 2225b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi static void Release(JNIEnv* _env, jfloatArray array, jfloat* data, jboolean commit) { 2235b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->ReleaseFloatArrayElements(array, data, commit ? 0 : JNI_ABORT); 2245b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi } 2255b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi}; 2265b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchiclass DoubleArrayReleaser { 2275b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchipublic: 2285b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi static void Release(JNIEnv* _env, jdoubleArray array, jdouble* data, jboolean commit) { 2295b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->ReleaseDoubleArrayElements(array, data, commit ? 0 : JNI_ABORT); 2305b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi } 2315b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi}; 2325b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi 2335b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchitemplate<typename JTYPEARRAY, typename NTYPEARRAY, typename ARRAYRELEASER> 2345b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchistatic void 2355b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi YamauchireleaseArrayPointer(JNIEnv *_env, JTYPEARRAY array, NTYPEARRAY data, jboolean commit) { 2365b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi ARRAYRELEASER::Release(_env, array, data, commit); 2375b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi} 2385b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi 23927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 24027f8002e591b5c579f75b2580183b5d1c4219cd4Jack PalevichreleasePointer(JNIEnv *_env, jarray array, void *data, jboolean commit) 24127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{ 24227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->ReleasePrimitiveArrayCritical(array, data, 2432ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian commit ? 0 : JNI_ABORT); 24427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 24527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 24616e7972f0d986eebf846ea8feb50f4435a9c6970Jack Palevichstatic void * 24716e7972f0d986eebf846ea8feb50f4435a9c6970Jack PalevichgetDirectBufferPointer(JNIEnv *_env, jobject buffer) { 24816e7972f0d986eebf846ea8feb50f4435a9c6970Jack Palevich char* buf = (char*) _env->GetDirectBufferAddress(buffer); 24916e7972f0d986eebf846ea8feb50f4435a9c6970Jack Palevich if (buf) { 25016e7972f0d986eebf846ea8feb50f4435a9c6970Jack Palevich jint position = _env->GetIntField(buffer, positionID); 25116e7972f0d986eebf846ea8feb50f4435a9c6970Jack Palevich jint elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID); 25216e7972f0d986eebf846ea8feb50f4435a9c6970Jack Palevich buf += position << elementSizeShift; 25316e7972f0d986eebf846ea8feb50f4435a9c6970Jack Palevich } else { 25424ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", 25524ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes "Must use a native order direct Buffer"); 25616e7972f0d986eebf846ea8feb50f4435a9c6970Jack Palevich } 25716e7972f0d986eebf846ea8feb50f4435a9c6970Jack Palevich return (void*) buf; 25816e7972f0d986eebf846ea8feb50f4435a9c6970Jack Palevich} 25916e7972f0d986eebf846ea8feb50f4435a9c6970Jack Palevich 2602ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian// -------------------------------------------------------------------------- 2612ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 2622ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian/* 2632ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian * returns the number of values glGet returns for a given pname. 2642ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian * 2652ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian * The code below is written such that pnames requiring only one values 2662ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian * are the default (and are not explicitely tested for). This makes the 2672ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian * checking code much shorter/readable/efficient. 2682ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian * 2692ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian * This means that unknown pnames (e.g.: extensions) will default to 1. If 2702ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian * that unknown pname needs more than 1 value, then the validation check 2712ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian * is incomplete and the app may crash if it passed the wrong number params. 2722ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian */ 2732ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianstatic int getNeededCount(GLint pname) { 2742ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian int needed = 1; 2752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#ifdef GL_ES_VERSION_2_0 2762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian // GLES 2.x pnames 2772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian switch (pname) { 2782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_ALIASED_LINE_WIDTH_RANGE: 2792ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_ALIASED_POINT_SIZE_RANGE: 2802ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian needed = 2; 2812ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian break; 2822ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 2832ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_BLEND_COLOR: 2842ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_COLOR_CLEAR_VALUE: 2852ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_COLOR_WRITEMASK: 2862ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_SCISSOR_BOX: 2872ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_VIEWPORT: 2882ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian needed = 4; 2892ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian break; 2902ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 2912ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_COMPRESSED_TEXTURE_FORMATS: 2922ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &needed); 2932ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian break; 2942ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 2952ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_SHADER_BINARY_FORMATS: 2962ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian glGetIntegerv(GL_NUM_SHADER_BINARY_FORMATS, &needed); 2972ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian break; 2982ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 2992ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#endif 3002ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 3012ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#ifdef GL_VERSION_ES_CM_1_1 3022ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian // GLES 1.x pnames 3032ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian switch (pname) { 3042ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_ALIASED_LINE_WIDTH_RANGE: 3052ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_ALIASED_POINT_SIZE_RANGE: 3062ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_DEPTH_RANGE: 3072ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_SMOOTH_LINE_WIDTH_RANGE: 3082ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_SMOOTH_POINT_SIZE_RANGE: 3092ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian needed = 2; 3102ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian break; 3112ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 3122ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_CURRENT_NORMAL: 3132ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_POINT_DISTANCE_ATTENUATION: 3142ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian needed = 3; 3152ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian break; 3162ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 3172ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_COLOR_CLEAR_VALUE: 3182ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_COLOR_WRITEMASK: 3192ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_CURRENT_COLOR: 3202ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_CURRENT_TEXTURE_COORDS: 3212ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_FOG_COLOR: 3222ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_LIGHT_MODEL_AMBIENT: 3232ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_SCISSOR_BOX: 3242ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_VIEWPORT: 3252ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian needed = 4; 3262ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian break; 3272ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 3282ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_MODELVIEW_MATRIX: 3292ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_PROJECTION_MATRIX: 3302ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_TEXTURE_MATRIX: 3312ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian needed = 16; 3322ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian break; 3332ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 3342ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_COMPRESSED_TEXTURE_FORMATS: 3352ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &needed); 3362ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian break; 3372ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 3382ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#endif 3392ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian return needed; 3402ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian} 3412ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 3425b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchitemplate <typename JTYPEARRAY, typename ARRAYGETTER, typename NTYPEARRAY, 3435b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi typename ARRAYRELEASER, typename CTYPE, void GET(GLenum, CTYPE*)> 3442ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianstatic void 3452ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianget 3462ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian (JNIEnv *_env, jobject _this, jint pname, JTYPEARRAY params_ref, jint offset) { 3472ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jint _exception = 0; 3482ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType; 3492ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage; 3502ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian CTYPE *params_base = (CTYPE *) 0; 3512ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jint _remaining; 3522ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian CTYPE *params = (CTYPE *) 0; 3532ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian int _needed = 0; 3542ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 3552ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (!params_ref) { 3562ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 3572ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 3582ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "params == null"; 3592ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 3602ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 3612ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (offset < 0) { 3622ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 3632ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 3642ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "offset < 0"; 3652ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 3662ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 3672ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _remaining = _env->GetArrayLength(params_ref) - offset; 3682ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _needed = getNeededCount(pname); 3692ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian // if we didn't find this pname, we just assume the user passed 3702ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian // an array of the right size -- this might happen with extensions 3712ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian // or if we forget an enum here. 3722ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < _needed) { 3732ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 3742ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 3752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "length - offset < needed"; 3762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 3772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 3785b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi params_base = (CTYPE *) getArrayPointer<JTYPEARRAY, ARRAYGETTER>( 3795b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env, params_ref, (jboolean *)0); 3802ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian params = params_base + offset; 3812ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 3822ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian GET( 3832ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian (GLenum)pname, 3842ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian (CTYPE *)params 3852ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian ); 3862ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 3872ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit: 3882ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (params_base) { 3895b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi releaseArrayPointer<JTYPEARRAY, NTYPEARRAY, ARRAYRELEASER>( 3905b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env, params_ref, params_base, !_exception); 3912ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 3922ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_exception) { 3932ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jniThrowException(_env, _exceptionType, _exceptionMessage); 3942ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 3952ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian} 3962ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 3972ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 3985b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchitemplate <typename CTYPE, typename JTYPEARRAY, typename ARRAYGETTER, typename NTYPEARRAY, 3995b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi typename ARRAYRELEASER, void GET(GLenum, CTYPE*)> 4002ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianstatic void 4012ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopiangetarray 4022ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) { 4032ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jint _exception = 0; 4042ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType; 4052ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage; 4065b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi JTYPEARRAY _array = (JTYPEARRAY) 0; 4072ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jint _bufferOffset = (jint) 0; 4082ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jint _remaining; 4092ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian CTYPE *params = (CTYPE *) 0; 4102ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian int _needed = 0; 4112ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 4125b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi params = (CTYPE *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 413cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden _remaining /= sizeof(CTYPE); // convert from bytes to item count 4142ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _needed = getNeededCount(pname); 4152ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian // if we didn't find this pname, we just assume the user passed 4162ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian // an array of the right size -- this might happen with extensions 4172ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian // or if we forget an enum here. 4182ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_needed>0 && _remaining < _needed) { 4192ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 4202ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 4212ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "remaining() < needed"; 4222ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 4232ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 4242ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (params == NULL) { 4255b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi char * _paramsBase = (char *) getArrayPointer<JTYPEARRAY, ARRAYGETTER>( 4265b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env, _array, (jboolean *) 0); 4272ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian params = (CTYPE *) (_paramsBase + _bufferOffset); 4282ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 4292ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian GET( 4302ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian (GLenum)pname, 4312ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian (CTYPE *)params 4322ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian ); 4332ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 4342ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit: 4352ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_array) { 4365b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi releaseArrayPointer<JTYPEARRAY, NTYPEARRAY, ARRAYRELEASER>( 4375b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env, _array, (NTYPEARRAY)params, _exception ? JNI_FALSE : JNI_TRUE); 4382ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 4392ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_exception) { 4402ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jniThrowException(_env, _exceptionType, _exceptionMessage); 4412ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 442be509c9c7de5929d014dfe6d45e71cc8454ede0fJack Palevich} 443be509c9c7de5929d014dfe6d45e71cc8454ede0fJack Palevich 44427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich// -------------------------------------------------------------------------- 44527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glActiveTexture ( GLenum texture ) */ 44627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 44727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glActiveTexture__I 44827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint texture) { 44927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glActiveTexture( 45027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)texture 45127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 45227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 45327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 45427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glAlphaFunc ( GLenum func, GLclampf ref ) */ 45527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 45627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glAlphaFunc__IF 45727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint func, jfloat ref) { 45827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glAlphaFunc( 45927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)func, 46027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLclampf)ref 46127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 46227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 46327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 46427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glAlphaFuncx ( GLenum func, GLclampx ref ) */ 46527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 46627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glAlphaFuncx__II 46727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint func, jint ref) { 46827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glAlphaFuncx( 46927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)func, 47027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLclampx)ref 47127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 47227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 47327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 47427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glBindTexture ( GLenum target, GLuint texture ) */ 47527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 47627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glBindTexture__II 47727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint texture) { 47827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glBindTexture( 47927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)target, 48027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLuint)texture 48127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 48227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 48327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 48427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glBlendFunc ( GLenum sfactor, GLenum dfactor ) */ 48527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 48627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glBlendFunc__II 48727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint sfactor, jint dfactor) { 48827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glBlendFunc( 48927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)sfactor, 49027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)dfactor 49127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 49227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 49327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 49427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glClear ( GLbitfield mask ) */ 49527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 49627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glClear__I 49727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint mask) { 49827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glClear( 49927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLbitfield)mask 50027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 50127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 50227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 50327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glClearColor ( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ) */ 50427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 50527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glClearColor__FFFF 50627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jfloat red, jfloat green, jfloat blue, jfloat alpha) { 50727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glClearColor( 50827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLclampf)red, 50927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLclampf)green, 51027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLclampf)blue, 51127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLclampf)alpha 51227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 51327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 51427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 51527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glClearColorx ( GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha ) */ 51627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 51727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glClearColorx__IIII 51827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint red, jint green, jint blue, jint alpha) { 51927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glClearColorx( 52027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLclampx)red, 52127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLclampx)green, 52227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLclampx)blue, 52327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLclampx)alpha 52427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 52527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 52627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 52727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glClearDepthf ( GLclampf depth ) */ 52827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 52927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glClearDepthf__F 53027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jfloat depth) { 53127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glClearDepthf( 53227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLclampf)depth 53327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 53427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 53527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 53627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glClearDepthx ( GLclampx depth ) */ 53727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 53827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glClearDepthx__I 53927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint depth) { 54027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glClearDepthx( 54127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLclampx)depth 54227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 54327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 54427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 54527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glClearStencil ( GLint s ) */ 54627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 54727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glClearStencil__I 54827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint s) { 54927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glClearStencil( 55027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint)s 55127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 55227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 55327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 55427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glClientActiveTexture ( GLenum texture ) */ 55527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 55627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glClientActiveTexture__I 55727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint texture) { 55827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glClientActiveTexture( 55927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)texture 56027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 56127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 56227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 56327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glColor4f ( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha ) */ 56427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 56527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glColor4f__FFFF 56627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jfloat red, jfloat green, jfloat blue, jfloat alpha) { 56727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glColor4f( 56827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)red, 56927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)green, 57027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)blue, 57127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)alpha 57227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 57327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 57427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 57527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glColor4x ( GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha ) */ 57627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 57727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glColor4x__IIII 57827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint red, jint green, jint blue, jint alpha) { 57927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glColor4x( 58027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)red, 58127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)green, 58227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)blue, 58327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)alpha 58427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 58527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 58627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 58727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glColorMask ( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha ) */ 58827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 58927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glColorMask__ZZZZ 59027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jboolean red, jboolean green, jboolean blue, jboolean alpha) { 59127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glColorMask( 59227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLboolean)red, 59327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLboolean)green, 59427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLboolean)blue, 59527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLboolean)alpha 59627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 59727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 59827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 59927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glColorPointer ( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer ) */ 60027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 60127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glColorPointerBounds__IIILjava_nio_Buffer_2I 60227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jobject pointer_buf, jint remaining) { 60327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jarray _array = (jarray) 0; 60417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 60527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 60627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLvoid *pointer = (GLvoid *) 0; 60727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 608e20ea783a12f1031482c3aa01938efe39dcbf0a2Jack Palevich if (pointer_buf) { 60916e7972f0d986eebf846ea8feb50f4435a9c6970Jack Palevich pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf); 610e20ea783a12f1031482c3aa01938efe39dcbf0a2Jack Palevich if ( ! pointer ) { 611e20ea783a12f1031482c3aa01938efe39dcbf0a2Jack Palevich return; 612e20ea783a12f1031482c3aa01938efe39dcbf0a2Jack Palevich } 613e20ea783a12f1031482c3aa01938efe39dcbf0a2Jack Palevich } 61427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glColorPointerBounds( 61527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint)size, 61627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)type, 61727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)stride, 61827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLvoid *)pointer, 61927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)remaining 62027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 62127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 62227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 62327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glCompressedTexImage2D ( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data ) */ 62427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 62527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glCompressedTexImage2D__IIIIIIILjava_nio_Buffer_2 62627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint border, jint imageSize, jobject data_buf) { 62727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jarray _array = (jarray) 0; 62817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 62927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 63027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLvoid *data = (GLvoid *) 0; 63127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 6325b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi data = (GLvoid *)getPointer(_env, data_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 63317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (data == NULL) { 63417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 63517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer data = (GLvoid *) (_dataBase + _bufferOffset); 63617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 63727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glCompressedTexImage2D( 63827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)target, 63927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint)level, 64027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)internalformat, 64127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)width, 64227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)height, 64327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint)border, 64427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)imageSize, 64527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLvoid *)data 64627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 64727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 64827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich releasePointer(_env, _array, data, JNI_FALSE); 64927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 65027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 65127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 65227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glCompressedTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data ) */ 65327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 65427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glCompressedTexSubImage2D__IIIIIIIILjava_nio_Buffer_2 65527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint width, jint height, jint format, jint imageSize, jobject data_buf) { 65627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jarray _array = (jarray) 0; 65717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 65827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 65927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLvoid *data = (GLvoid *) 0; 66027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 6615b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi data = (GLvoid *)getPointer(_env, data_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 66217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (data == NULL) { 66317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 66417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer data = (GLvoid *) (_dataBase + _bufferOffset); 66517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 66627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glCompressedTexSubImage2D( 66727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)target, 66827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint)level, 66927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint)xoffset, 67027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint)yoffset, 67127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)width, 67227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)height, 67327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)format, 67427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)imageSize, 67527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLvoid *)data 67627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 67727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 67827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich releasePointer(_env, _array, data, JNI_FALSE); 67927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 68027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 68127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 68227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glCopyTexImage2D ( GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border ) */ 68327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 68427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glCopyTexImage2D__IIIIIIII 68527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint x, jint y, jint width, jint height, jint border) { 68627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glCopyTexImage2D( 68727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)target, 68827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint)level, 68927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)internalformat, 69027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint)x, 69127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint)y, 69227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)width, 69327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)height, 69427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint)border 69527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 69627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 69727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 69827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glCopyTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height ) */ 69927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 70027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glCopyTexSubImage2D__IIIIIIII 70127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint x, jint y, jint width, jint height) { 70227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glCopyTexSubImage2D( 70327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)target, 70427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint)level, 70527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint)xoffset, 70627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint)yoffset, 70727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint)x, 70827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint)y, 70927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)width, 71027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)height 71127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 71227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 71327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 71427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glCullFace ( GLenum mode ) */ 71527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 71627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glCullFace__I 71727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint mode) { 71827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glCullFace( 71927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)mode 72027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 72127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 72227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 72327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glDeleteTextures ( GLsizei n, const GLuint *textures ) */ 72427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 72527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glDeleteTextures__I_3II 72627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint n, jintArray textures_ref, jint offset) { 7272545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 7282ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 7292ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 73027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLuint *textures_base = (GLuint *) 0; 73127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 73227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLuint *textures = (GLuint *) 0; 73327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 73427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (!textures_ref) { 7352545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 7362545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 7372545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "textures == null"; 73827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 73927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 74027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (offset < 0) { 7412545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 7422545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 7432545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 74427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 74527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 74627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _remaining = _env->GetArrayLength(textures_ref) - offset; 74727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < n) { 7482545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 7492545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 7502545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "length - offset < n < needed"; 75127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 75227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 75327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich textures_base = (GLuint *) 7545b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->GetIntArrayElements(textures_ref, (jboolean *)0); 75527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich textures = textures_base + offset; 75627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 75727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glDeleteTextures( 75827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)n, 75927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLuint *)textures 76027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 76127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 76227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 76327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (textures_base) { 7645b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->ReleaseIntArrayElements(textures_ref, (jint*)textures_base, 76527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich JNI_ABORT); 76627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 7672545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 7682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 7692545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 77027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 77127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 77227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glDeleteTextures ( GLsizei n, const GLuint *textures ) */ 77327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 77427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glDeleteTextures__ILjava_nio_IntBuffer_2 77527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint n, jobject textures_buf) { 7762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 7772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 7782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 7795b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi jintArray _array = (jintArray) 0; 78017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 78127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 78227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLuint *textures = (GLuint *) 0; 78327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 7845b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi textures = (GLuint *)getPointer(_env, textures_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 78527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < n) { 7862545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 7872545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 7882545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "remaining() < n < needed"; 78927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 79027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 79117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (textures == NULL) { 7925b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi char * _texturesBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 79317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer textures = (GLuint *) (_texturesBase + _bufferOffset); 79417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 79527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glDeleteTextures( 79627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)n, 79727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLuint *)textures 79827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 79927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 80027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 80127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 8025b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)textures, JNI_ABORT); 80327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 8042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 8052545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 8062545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 80727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 80827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 80927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glDepthFunc ( GLenum func ) */ 81027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 81127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glDepthFunc__I 81227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint func) { 81327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glDepthFunc( 81427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)func 81527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 81627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 81727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 81827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glDepthMask ( GLboolean flag ) */ 81927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 82027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glDepthMask__Z 82127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jboolean flag) { 82227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glDepthMask( 82327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLboolean)flag 82427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 82527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 82627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 82727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glDepthRangef ( GLclampf zNear, GLclampf zFar ) */ 82827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 82927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glDepthRangef__FF 83027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jfloat zNear, jfloat zFar) { 83127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glDepthRangef( 83227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLclampf)zNear, 83327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLclampf)zFar 83427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 83527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 83627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 83727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glDepthRangex ( GLclampx zNear, GLclampx zFar ) */ 83827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 83927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glDepthRangex__II 84027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint zNear, jint zFar) { 84127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glDepthRangex( 84227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLclampx)zNear, 84327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLclampx)zFar 84427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 84527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 84627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 84727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glDisable ( GLenum cap ) */ 84827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 84927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glDisable__I 85027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint cap) { 85127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glDisable( 85227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)cap 85327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 85427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 85527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 85627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glDisableClientState ( GLenum array ) */ 85727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 85827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glDisableClientState__I 85927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint array) { 86027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glDisableClientState( 86127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)array 86227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 86327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 86427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 86527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glDrawArrays ( GLenum mode, GLint first, GLsizei count ) */ 86627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 86727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glDrawArrays__III 86827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint mode, jint first, jint count) { 86927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glDrawArrays( 87027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)mode, 87127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint)first, 87227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)count 87327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 87427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 87527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 87627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glDrawElements ( GLenum mode, GLsizei count, GLenum type, const GLvoid *indices ) */ 87727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 87827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glDrawElements__IIILjava_nio_Buffer_2 87927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint mode, jint count, jint type, jobject indices_buf) { 8802545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 8812ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 8822ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 88327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jarray _array = (jarray) 0; 88417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 88527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 88627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLvoid *indices = (GLvoid *) 0; 88727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 8885b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi indices = (GLvoid *)getPointer(_env, indices_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 88927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < count) { 8902545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 8912545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/ArrayIndexOutOfBoundsException"; 8922545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "remaining() < count < needed"; 89327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 89427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 89517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (indices == NULL) { 89617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _indicesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 89717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer indices = (GLvoid *) (_indicesBase + _bufferOffset); 89817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 89927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glDrawElements( 90027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)mode, 90127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)count, 90227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)type, 90327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLvoid *)indices 90427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 90527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 90627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 90727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 90827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich releasePointer(_env, _array, indices, JNI_FALSE); 90927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 9102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 9112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 9122545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 91327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 91427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 91527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glEnable ( GLenum cap ) */ 91627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 91727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glEnable__I 91827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint cap) { 91927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glEnable( 92027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)cap 92127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 92227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 92327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 92427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glEnableClientState ( GLenum array ) */ 92527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 92627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glEnableClientState__I 92727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint array) { 92827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glEnableClientState( 92927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)array 93027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 93127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 93227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 93327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glFinish ( void ) */ 93427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 93527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glFinish__ 93627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this) { 93727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glFinish(); 93827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 93927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 94027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glFlush ( void ) */ 94127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 94227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glFlush__ 94327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this) { 94427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glFlush(); 94527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 94627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 94727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glFogf ( GLenum pname, GLfloat param ) */ 94827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 94927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glFogf__IF 95027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint pname, jfloat param) { 95127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glFogf( 95227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 95327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)param 95427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 95527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 95627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 95727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glFogfv ( GLenum pname, const GLfloat *params ) */ 95827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 95927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glFogfv__I_3FI 96027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint pname, jfloatArray params_ref, jint offset) { 9612545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 9622ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 9632ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 96427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *params_base = (GLfloat *) 0; 96527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 96627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *params = (GLfloat *) 0; 96727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 96827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (!params_ref) { 9692545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 9702545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 9712545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "params == null"; 97227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 97327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 97427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (offset < 0) { 9752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 9762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 9772545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 97827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 97927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 98027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _remaining = _env->GetArrayLength(params_ref) - offset; 98127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich int _needed; 98227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich switch (pname) { 98327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_FOG_COLOR) 98427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_FOG_COLOR: 98527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_FOG_COLOR) 98627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 4; 98727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 98827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich default: 9892ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _needed = 1; 99027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 99127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 99227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < _needed) { 9932545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 9942545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 9952545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "length - offset < needed"; 99627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 99727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 99827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params_base = (GLfloat *) 9995b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->GetFloatArrayElements(params_ref, (jboolean *)0); 100027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = params_base + offset; 100127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 100227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glFogfv( 100327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 100427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat *)params 100527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 100627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 100727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 100827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (params_base) { 10095b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->ReleaseFloatArrayElements(params_ref, (jfloat*)params_base, 101027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich JNI_ABORT); 101127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 10122545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 10132545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 10142545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 101527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 101627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 101727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glFogfv ( GLenum pname, const GLfloat *params ) */ 101827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 101927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glFogfv__ILjava_nio_FloatBuffer_2 102027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) { 10212545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 10222ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 10232ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 10245b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 102517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 102627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 102727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *params = (GLfloat *) 0; 102827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 10295b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi params = (GLfloat *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 103027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich int _needed; 103127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich switch (pname) { 103227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_FOG_COLOR) 103327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_FOG_COLOR: 103427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_FOG_COLOR) 103527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 4; 103627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 103727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich default: 10382ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _needed = 1; 103927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 104027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 104127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < _needed) { 10422545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 10432545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 10442545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "remaining() < needed"; 104527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 104627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 104717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (params == NULL) { 10485b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi char * _paramsBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 104917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer params = (GLfloat *) (_paramsBase + _bufferOffset); 105017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 105127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glFogfv( 105227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 105327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat *)params 105427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 105527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 105627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 105727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 10585b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)params, JNI_ABORT); 105927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 10602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 10612545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 10622545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 106327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 106427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 106527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glFogx ( GLenum pname, GLfixed param ) */ 106627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 106727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glFogx__II 106827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint pname, jint param) { 106927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glFogx( 107027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 107127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)param 107227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 107327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 107427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 107527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glFogxv ( GLenum pname, const GLfixed *params ) */ 107627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 107727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glFogxv__I_3II 107827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint pname, jintArray params_ref, jint offset) { 10792545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 10802ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 10812ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 108227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *params_base = (GLfixed *) 0; 108327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 108427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *params = (GLfixed *) 0; 108527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 108627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (!params_ref) { 10872545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 10882545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 10892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "params == null"; 109027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 109127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 109227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (offset < 0) { 10932545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 10942545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 10952545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 109627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 109727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 109827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _remaining = _env->GetArrayLength(params_ref) - offset; 109927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich int _needed; 110027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich switch (pname) { 110127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_FOG_COLOR) 110227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_FOG_COLOR: 110327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_FOG_COLOR) 110427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 4; 110527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 110627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich default: 11072ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _needed = 1; 110827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 110927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 111027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < _needed) { 11112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 11122545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 11132545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "length - offset < needed"; 111427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 111527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 111627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params_base = (GLfixed *) 11175b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->GetIntArrayElements(params_ref, (jboolean *)0); 111827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = params_base + offset; 111927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 112027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glFogxv( 112127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 112227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed *)params 112327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 112427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 112527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 112627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (params_base) { 11275b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 112827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich JNI_ABORT); 112927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 11302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 11312545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 11322545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 113327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 113427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 113527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glFogxv ( GLenum pname, const GLfixed *params ) */ 113627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 113727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glFogxv__ILjava_nio_IntBuffer_2 113827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) { 11392545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 11402ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 11412ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 11425b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi jintArray _array = (jintArray) 0; 114317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 114427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 114527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *params = (GLfixed *) 0; 114627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 11475b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi params = (GLfixed *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 114827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich int _needed; 114927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich switch (pname) { 115027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_FOG_COLOR) 115127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_FOG_COLOR: 115227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_FOG_COLOR) 115327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 4; 115427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 115527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich default: 11562ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _needed = 1; 115727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 115827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 115927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < _needed) { 11602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 11612545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 11622545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "remaining() < needed"; 116327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 116427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 116517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (params == NULL) { 11665b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 116717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer params = (GLfixed *) (_paramsBase + _bufferOffset); 116817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 116927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glFogxv( 117027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 117127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed *)params 117227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 117327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 117427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 117527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 11765b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)params, JNI_ABORT); 117727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 11782545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 11792545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 11802545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 118127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 118227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 118327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glFrontFace ( GLenum mode ) */ 118427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 118527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glFrontFace__I 118627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint mode) { 118727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glFrontFace( 118827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)mode 118927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 119027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 119127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 119227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glFrustumf ( GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar ) */ 119327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 119427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glFrustumf__FFFFFF 119527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jfloat left, jfloat right, jfloat bottom, jfloat top, jfloat zNear, jfloat zFar) { 119627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glFrustumf( 119727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)left, 119827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)right, 119927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)bottom, 120027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)top, 120127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)zNear, 120227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)zFar 120327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 120427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 120527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 120627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glFrustumx ( GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar ) */ 120727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 120827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glFrustumx__IIIIII 120927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint left, jint right, jint bottom, jint top, jint zNear, jint zFar) { 121027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glFrustumx( 121127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)left, 121227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)right, 121327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)bottom, 121427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)top, 121527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)zNear, 121627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)zFar 121727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 121827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 121927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 122027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGenTextures ( GLsizei n, GLuint *textures ) */ 122127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 122227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGenTextures__I_3II 122327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint n, jintArray textures_ref, jint offset) { 122427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _exception = 0; 12252ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 12262ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 122727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLuint *textures_base = (GLuint *) 0; 122827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 122927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLuint *textures = (GLuint *) 0; 123027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 123127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (!textures_ref) { 123227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 12332545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 12342545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "textures == null"; 123527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 123627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 123727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (offset < 0) { 123827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 12392545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 12402545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 124127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 124227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 124327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _remaining = _env->GetArrayLength(textures_ref) - offset; 124427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < n) { 124527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 12462545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 12472545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "length - offset < n < needed"; 124827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 124927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 125027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich textures_base = (GLuint *) 12515b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->GetIntArrayElements(textures_ref, (jboolean *)0); 125227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich textures = textures_base + offset; 125327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 125427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glGenTextures( 125527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)n, 125627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLuint *)textures 125727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 125827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 125927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 126027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (textures_base) { 12615b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->ReleaseIntArrayElements(textures_ref, (jint*)textures_base, 126227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception ? JNI_ABORT: 0); 126327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 12642545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 12652545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 12662545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 126727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 126827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 126927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGenTextures ( GLsizei n, GLuint *textures ) */ 127027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 127127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGenTextures__ILjava_nio_IntBuffer_2 127227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint n, jobject textures_buf) { 127327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _exception = 0; 12742ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 12752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 12765b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi jintArray _array = (jintArray) 0; 127717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 127827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 127927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLuint *textures = (GLuint *) 0; 128027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 12815b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi textures = (GLuint *)getPointer(_env, textures_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 128227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < n) { 128327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 12842545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 12852545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "remaining() < n < needed"; 128627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 128727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 128817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (textures == NULL) { 12895b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi char * _texturesBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 129017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer textures = (GLuint *) (_texturesBase + _bufferOffset); 129117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 129227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glGenTextures( 129327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)n, 129427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLuint *)textures 129527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 129627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 129727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 129827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 12995b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)textures, _exception ? JNI_ABORT : 0); 130027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 13012545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 13022545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 13032545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 130427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 130527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 130627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* GLenum glGetError ( void ) */ 130727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic jint 130827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetError__ 130927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this) { 131027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLenum _returnValue; 131127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _returnValue = glGetError(); 1312cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden return (jint)_returnValue; 131327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 131427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 131527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetIntegerv ( GLenum pname, GLint *params ) */ 131627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 131727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetIntegerv__I_3II 131827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint pname, jintArray params_ref, jint offset) { 13195b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi get<jintArray, IntArrayGetter, jint*, IntArrayReleaser, GLint, glGetIntegerv>( 13205b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env, _this, pname, params_ref, offset); 132127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 132227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 132327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetIntegerv ( GLenum pname, GLint *params ) */ 132427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 132527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetIntegerv__ILjava_nio_IntBuffer_2 132627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) { 13275b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi getarray<GLint, jintArray, IntArrayGetter, jint*, IntArrayReleaser, glGetIntegerv>( 13285b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env, _this, pname, params_buf); 132927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 133027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* const GLubyte * glGetString ( GLenum name ) */ 133124ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughesstatic jstring android_glGetString(JNIEnv* _env, jobject, jint name) { 133224ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes const char* chars = (const char*) glGetString((GLenum) name); 133324ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes return _env->NewStringUTF(chars); 133427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 133527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glHint ( GLenum target, GLenum mode ) */ 133627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 133727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glHint__II 133827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint mode) { 133927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glHint( 134027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)target, 134127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)mode 134227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 134327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 134427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 134527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glLightModelf ( GLenum pname, GLfloat param ) */ 134627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 134727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glLightModelf__IF 134827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint pname, jfloat param) { 134927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glLightModelf( 135027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 135127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)param 135227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 135327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 135427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 135527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glLightModelfv ( GLenum pname, const GLfloat *params ) */ 135627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 135727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glLightModelfv__I_3FI 135827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint pname, jfloatArray params_ref, jint offset) { 13592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 13602ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 13612ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 136227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *params_base = (GLfloat *) 0; 136327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 136427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *params = (GLfloat *) 0; 136527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 136627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (!params_ref) { 13672545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 13682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 13692545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "params == null"; 137027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 137127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 137227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (offset < 0) { 13732545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 13742545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 13752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 137627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 137727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 137827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _remaining = _env->GetArrayLength(params_ref) - offset; 137927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich int _needed; 138027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich switch (pname) { 138127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_LIGHT_MODEL_AMBIENT) 138227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_LIGHT_MODEL_AMBIENT: 138327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_LIGHT_MODEL_AMBIENT) 138427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 4; 138527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 138627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich default: 13872ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _needed = 1; 138827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 138927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 139027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < _needed) { 13912545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 13922545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 13932545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "length - offset < needed"; 139427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 139527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 139627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params_base = (GLfloat *) 13975b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->GetFloatArrayElements(params_ref, (jboolean *)0); 139827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = params_base + offset; 139927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 140027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glLightModelfv( 140127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 140227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat *)params 140327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 140427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 140527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 140627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (params_base) { 14075b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->ReleaseFloatArrayElements(params_ref, (jfloat*)params_base, 140827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich JNI_ABORT); 140927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 14102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 14112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 14122545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 141327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 141427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 141527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glLightModelfv ( GLenum pname, const GLfloat *params ) */ 141627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 141727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glLightModelfv__ILjava_nio_FloatBuffer_2 141827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) { 14192545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 14202ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 14212ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 14225b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 142317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 142427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 142527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *params = (GLfloat *) 0; 142627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 14275b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi params = (GLfloat *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 142827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich int _needed; 142927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich switch (pname) { 143027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_LIGHT_MODEL_AMBIENT) 143127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_LIGHT_MODEL_AMBIENT: 143227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_LIGHT_MODEL_AMBIENT) 143327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 4; 143427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 143527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich default: 14362ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _needed = 1; 143727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 143827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 143927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < _needed) { 14402545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 14412545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 14422545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "remaining() < needed"; 144327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 144427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 144517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (params == NULL) { 14465b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi char * _paramsBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 144717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer params = (GLfloat *) (_paramsBase + _bufferOffset); 144817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 144927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glLightModelfv( 145027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 145127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat *)params 145227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 145327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 145427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 145527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 14565b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)params, JNI_ABORT); 145727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 14582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 14592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 14602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 146127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 146227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 146327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glLightModelx ( GLenum pname, GLfixed param ) */ 146427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 146527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glLightModelx__II 146627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint pname, jint param) { 146727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glLightModelx( 146827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 146927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)param 147027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 147127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 147227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 147327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glLightModelxv ( GLenum pname, const GLfixed *params ) */ 147427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 147527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glLightModelxv__I_3II 147627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint pname, jintArray params_ref, jint offset) { 14772545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 14782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 14792ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 148027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *params_base = (GLfixed *) 0; 148127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 148227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *params = (GLfixed *) 0; 148327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 148427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (!params_ref) { 14852545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 14862545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 14872545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "params == null"; 148827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 148927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 149027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (offset < 0) { 14912545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 14922545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 14932545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 149427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 149527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 149627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _remaining = _env->GetArrayLength(params_ref) - offset; 149727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich int _needed; 149827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich switch (pname) { 149927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_LIGHT_MODEL_AMBIENT) 150027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_LIGHT_MODEL_AMBIENT: 150127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_LIGHT_MODEL_AMBIENT) 150227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 4; 150327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 150427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich default: 15052ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _needed = 1; 150627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 150727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 150827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < _needed) { 15092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 15102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 15112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "length - offset < needed"; 151227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 151327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 151427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params_base = (GLfixed *) 15155b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->GetIntArrayElements(params_ref, (jboolean *)0); 151627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = params_base + offset; 151727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 151827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glLightModelxv( 151927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 152027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed *)params 152127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 152227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 152327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 152427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (params_base) { 15255b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 152627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich JNI_ABORT); 152727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 15282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 15292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 15302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 153127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 153227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 153327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glLightModelxv ( GLenum pname, const GLfixed *params ) */ 153427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 153527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glLightModelxv__ILjava_nio_IntBuffer_2 153627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) { 15372545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 15382ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 15392ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 15405b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi jintArray _array = (jintArray) 0; 154117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 154227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 154327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *params = (GLfixed *) 0; 154427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 15455b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi params = (GLfixed *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 154627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich int _needed; 154727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich switch (pname) { 154827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_LIGHT_MODEL_AMBIENT) 154927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_LIGHT_MODEL_AMBIENT: 155027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_LIGHT_MODEL_AMBIENT) 155127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 4; 155227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 155327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich default: 15542ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _needed = 1; 155527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 155627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 155727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < _needed) { 15582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 15592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 15602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "remaining() < needed"; 156127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 156227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 156317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (params == NULL) { 15645b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 156517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer params = (GLfixed *) (_paramsBase + _bufferOffset); 156617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 156727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glLightModelxv( 156827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 156927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed *)params 157027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 157127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 157227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 157327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 15745b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)params, JNI_ABORT); 157527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 15762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 15772545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 15782545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 157927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 158027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 158127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glLightf ( GLenum light, GLenum pname, GLfloat param ) */ 158227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 158327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glLightf__IIF 158427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint light, jint pname, jfloat param) { 158527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glLightf( 158627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)light, 158727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 158827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)param 158927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 159027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 159127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 159227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glLightfv ( GLenum light, GLenum pname, const GLfloat *params ) */ 159327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 159427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glLightfv__II_3FI 159527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint light, jint pname, jfloatArray params_ref, jint offset) { 15962545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 15972ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 15982ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 159927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *params_base = (GLfloat *) 0; 160027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 160127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *params = (GLfloat *) 0; 160227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 160327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (!params_ref) { 16042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 16052545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 16062545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "params == null"; 160727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 160827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 160927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (offset < 0) { 16102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 16112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 16122545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 161327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 161427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 161527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _remaining = _env->GetArrayLength(params_ref) - offset; 161627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich int _needed; 161727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich switch (pname) { 161827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPOT_DIRECTION) 161927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_SPOT_DIRECTION: 162027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPOT_DIRECTION) 162127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 3; 162227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 162327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT) 162427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_AMBIENT: 162527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT) 162627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_DIFFUSE) 162727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_DIFFUSE: 162827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_DIFFUSE) 162927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPECULAR) 163027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_SPECULAR: 163127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPECULAR) 163227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_EMISSION) 163327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_EMISSION: 163427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_EMISSION) 163527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 4; 163627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 163727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich default: 16382ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _needed = 1; 163927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 164027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 164127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < _needed) { 16422545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 16432545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 16442545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "length - offset < needed"; 164527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 164627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 164727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params_base = (GLfloat *) 16485b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->GetFloatArrayElements(params_ref, (jboolean *)0); 164927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = params_base + offset; 165027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 165127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glLightfv( 165227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)light, 165327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 165427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat *)params 165527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 165627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 165727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 165827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (params_base) { 16595b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->ReleaseFloatArrayElements(params_ref, (jfloat*)params_base, 166027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich JNI_ABORT); 166127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 16622545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 16632545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 16642545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 166527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 166627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 166727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glLightfv ( GLenum light, GLenum pname, const GLfloat *params ) */ 166827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 166927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glLightfv__IILjava_nio_FloatBuffer_2 167027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint light, jint pname, jobject params_buf) { 16712545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 16722ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 16732ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 16745b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 167517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 167627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 167727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *params = (GLfloat *) 0; 167827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 16795b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi params = (GLfloat *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 168027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich int _needed; 168127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich switch (pname) { 168227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPOT_DIRECTION) 168327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_SPOT_DIRECTION: 168427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPOT_DIRECTION) 168527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 3; 168627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 168727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT) 168827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_AMBIENT: 168927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT) 169027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_DIFFUSE) 169127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_DIFFUSE: 169227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_DIFFUSE) 169327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPECULAR) 169427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_SPECULAR: 169527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPECULAR) 169627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_EMISSION) 169727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_EMISSION: 169827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_EMISSION) 169927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 4; 170027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 170127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich default: 17022ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _needed = 1; 170327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 170427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 170527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < _needed) { 17062545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 17072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 17082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "remaining() < needed"; 170927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 171027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 171117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (params == NULL) { 17125b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi char * _paramsBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 171317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer params = (GLfloat *) (_paramsBase + _bufferOffset); 171417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 171527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glLightfv( 171627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)light, 171727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 171827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat *)params 171927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 172027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 172127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 172227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 17235b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)params, JNI_ABORT); 172427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 17252545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 17262545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 17272545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 172827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 172927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 173027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glLightx ( GLenum light, GLenum pname, GLfixed param ) */ 173127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 173227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glLightx__III 173327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint light, jint pname, jint param) { 173427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glLightx( 173527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)light, 173627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 173727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)param 173827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 173927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 174027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 174127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glLightxv ( GLenum light, GLenum pname, const GLfixed *params ) */ 174227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 174327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glLightxv__II_3II 174427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint light, jint pname, jintArray params_ref, jint offset) { 17452545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 17462ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 17472ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 174827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *params_base = (GLfixed *) 0; 174927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 175027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *params = (GLfixed *) 0; 175127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 175227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (!params_ref) { 17532545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 17542545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 17552545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "params == null"; 175627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 175727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 175827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (offset < 0) { 17592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 17602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 17612545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 176227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 176327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 176427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _remaining = _env->GetArrayLength(params_ref) - offset; 176527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich int _needed; 176627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich switch (pname) { 176727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPOT_DIRECTION) 176827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_SPOT_DIRECTION: 176927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPOT_DIRECTION) 177027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 3; 177127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 177227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT) 177327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_AMBIENT: 177427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT) 177527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_DIFFUSE) 177627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_DIFFUSE: 177727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_DIFFUSE) 177827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPECULAR) 177927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_SPECULAR: 178027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPECULAR) 178127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_EMISSION) 178227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_EMISSION: 178327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_EMISSION) 178427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 4; 178527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 178627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich default: 17872ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _needed = 1; 178827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 178927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 179027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < _needed) { 17912545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 17922545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 17932545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "length - offset < needed"; 179427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 179527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 179627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params_base = (GLfixed *) 17975b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->GetIntArrayElements(params_ref, (jboolean *)0); 179827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = params_base + offset; 179927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 180027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glLightxv( 180127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)light, 180227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 180327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed *)params 180427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 180527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 180627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 180727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (params_base) { 18085b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 180927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich JNI_ABORT); 181027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 18112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 18122545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 18132545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 181427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 181527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 181627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glLightxv ( GLenum light, GLenum pname, const GLfixed *params ) */ 181727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 181827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glLightxv__IILjava_nio_IntBuffer_2 181927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint light, jint pname, jobject params_buf) { 18202545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 18212ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 18222ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 18235b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi jintArray _array = (jintArray) 0; 182417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 182527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 182627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *params = (GLfixed *) 0; 182727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 18285b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi params = (GLfixed *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 182927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich int _needed; 183027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich switch (pname) { 183127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPOT_DIRECTION) 183227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_SPOT_DIRECTION: 183327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPOT_DIRECTION) 183427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 3; 183527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 183627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT) 183727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_AMBIENT: 183827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT) 183927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_DIFFUSE) 184027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_DIFFUSE: 184127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_DIFFUSE) 184227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPECULAR) 184327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_SPECULAR: 184427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPECULAR) 184527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_EMISSION) 184627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_EMISSION: 184727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_EMISSION) 184827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 4; 184927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 185027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich default: 18512ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _needed = 1; 185227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 185327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 185427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < _needed) { 18552545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 18562545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 18572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "remaining() < needed"; 185827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 185927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 186017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (params == NULL) { 18615b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 186217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer params = (GLfixed *) (_paramsBase + _bufferOffset); 186317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 186427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glLightxv( 186527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)light, 186627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 186727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed *)params 186827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 186927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 187027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 187127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 18725b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)params, JNI_ABORT); 187327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 18742545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 18752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 18762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 187727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 187827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 187927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glLineWidth ( GLfloat width ) */ 188027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 188127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glLineWidth__F 188227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jfloat width) { 188327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glLineWidth( 188427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)width 188527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 188627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 188727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 188827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glLineWidthx ( GLfixed width ) */ 188927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 189027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glLineWidthx__I 189127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint width) { 189227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glLineWidthx( 189327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)width 189427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 189527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 189627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 189727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glLoadIdentity ( void ) */ 189827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 189927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glLoadIdentity__ 190027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this) { 190127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glLoadIdentity(); 190227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 190327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 190427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glLoadMatrixf ( const GLfloat *m ) */ 190527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 190627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glLoadMatrixf___3FI 190727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jfloatArray m_ref, jint offset) { 19082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 19092ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 19102ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 191127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *m_base = (GLfloat *) 0; 191227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 191327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *m = (GLfloat *) 0; 191427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 191527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (!m_ref) { 19162545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 19172545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 19182545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "m == null"; 191927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 192027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 192127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (offset < 0) { 19222545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 19232545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 19242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 192527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 192627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 192727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _remaining = _env->GetArrayLength(m_ref) - offset; 192827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich m_base = (GLfloat *) 19295b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->GetFloatArrayElements(m_ref, (jboolean *)0); 193027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich m = m_base + offset; 193127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 193227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glLoadMatrixf( 193327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat *)m 193427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 193527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 193627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 193727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (m_base) { 19385b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->ReleaseFloatArrayElements(m_ref, (jfloat*)m_base, 193927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich JNI_ABORT); 194027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 19412545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 19422545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 19432545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 194427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 194527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 194627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glLoadMatrixf ( const GLfloat *m ) */ 194727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 194827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glLoadMatrixf__Ljava_nio_FloatBuffer_2 194927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jobject m_buf) { 19505b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 195117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 195227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 195327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *m = (GLfloat *) 0; 195427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 19555b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi m = (GLfloat *)getPointer(_env, m_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 195617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (m == NULL) { 19575b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi char * _mBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 195817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer m = (GLfloat *) (_mBase + _bufferOffset); 195917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 196027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glLoadMatrixf( 196127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat *)m 196227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 196327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 19645b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)m, JNI_ABORT); 196527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 196627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 196727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 196827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glLoadMatrixx ( const GLfixed *m ) */ 196927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 197027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glLoadMatrixx___3II 197127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jintArray m_ref, jint offset) { 19722545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 19732ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 19742ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 197527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *m_base = (GLfixed *) 0; 197627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 197727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *m = (GLfixed *) 0; 197827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 197927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (!m_ref) { 19802545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 19812545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 19822545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "m == null"; 198327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 198427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 198527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (offset < 0) { 19862545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 19872545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 19882545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 198927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 199027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 199127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _remaining = _env->GetArrayLength(m_ref) - offset; 199227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich m_base = (GLfixed *) 19935b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->GetIntArrayElements(m_ref, (jboolean *)0); 199427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich m = m_base + offset; 199527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 199627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glLoadMatrixx( 199727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed *)m 199827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 199927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 200027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 200127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (m_base) { 20025b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->ReleaseIntArrayElements(m_ref, (jint*)m_base, 200327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich JNI_ABORT); 200427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 20052545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 20062545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 20072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 200827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 200927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 201027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glLoadMatrixx ( const GLfixed *m ) */ 201127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 201227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glLoadMatrixx__Ljava_nio_IntBuffer_2 201327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jobject m_buf) { 20145b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi jintArray _array = (jintArray) 0; 201517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 201627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 201727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *m = (GLfixed *) 0; 201827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 20195b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi m = (GLfixed *)getPointer(_env, m_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 202017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (m == NULL) { 20215b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi char * _mBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 202217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer m = (GLfixed *) (_mBase + _bufferOffset); 202317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 202427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glLoadMatrixx( 202527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed *)m 202627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 202727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 20285b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)m, JNI_ABORT); 202927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 203027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 203127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 203227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glLogicOp ( GLenum opcode ) */ 203327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 203427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glLogicOp__I 203527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint opcode) { 203627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glLogicOp( 203727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)opcode 203827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 203927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 204027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 204127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glMaterialf ( GLenum face, GLenum pname, GLfloat param ) */ 204227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 204327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glMaterialf__IIF 204427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint face, jint pname, jfloat param) { 204527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glMaterialf( 204627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)face, 204727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 204827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)param 204927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 205027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 205127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 205227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glMaterialfv ( GLenum face, GLenum pname, const GLfloat *params ) */ 205327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 205427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glMaterialfv__II_3FI 205527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint face, jint pname, jfloatArray params_ref, jint offset) { 20562545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 20572ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 20582ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 205927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *params_base = (GLfloat *) 0; 206027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 206127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *params = (GLfloat *) 0; 206227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 206327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (!params_ref) { 20642545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 20652545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 20662545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "params == null"; 206727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 206827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 206927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (offset < 0) { 20702545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 20712545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 20722545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 207327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 207427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 207527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _remaining = _env->GetArrayLength(params_ref) - offset; 207627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich int _needed; 207727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich switch (pname) { 207827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT) 207927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_AMBIENT: 208027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT) 208127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_DIFFUSE) 208227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_DIFFUSE: 208327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_DIFFUSE) 208427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPECULAR) 208527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_SPECULAR: 208627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPECULAR) 208727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_EMISSION) 208827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_EMISSION: 208927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_EMISSION) 209027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT_AND_DIFFUSE) 209127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_AMBIENT_AND_DIFFUSE: 209227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT_AND_DIFFUSE) 209327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 4; 209427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 209527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich default: 20962ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _needed = 1; 209727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 209827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 209927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < _needed) { 21002545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 21012545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 21022545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "length - offset < needed"; 210327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 210427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 210527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params_base = (GLfloat *) 21065b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->GetFloatArrayElements(params_ref, (jboolean *)0); 210727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = params_base + offset; 210827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 210927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glMaterialfv( 211027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)face, 211127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 211227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat *)params 211327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 211427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 211527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 211627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (params_base) { 21175b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->ReleaseFloatArrayElements(params_ref, (jfloat*)params_base, 211827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich JNI_ABORT); 211927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 21202545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 21212545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 21222545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 212327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 212427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 212527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glMaterialfv ( GLenum face, GLenum pname, const GLfloat *params ) */ 212627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 212727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glMaterialfv__IILjava_nio_FloatBuffer_2 212827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint face, jint pname, jobject params_buf) { 21292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 21302ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 21312ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 21325b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 213317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 213427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 213527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *params = (GLfloat *) 0; 213627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 21375b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi params = (GLfloat *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 213827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich int _needed; 213927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich switch (pname) { 214027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT) 214127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_AMBIENT: 214227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT) 214327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_DIFFUSE) 214427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_DIFFUSE: 214527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_DIFFUSE) 214627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPECULAR) 214727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_SPECULAR: 214827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPECULAR) 214927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_EMISSION) 215027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_EMISSION: 215127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_EMISSION) 215227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT_AND_DIFFUSE) 215327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_AMBIENT_AND_DIFFUSE: 215427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT_AND_DIFFUSE) 215527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 4; 215627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 215727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich default: 21582ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _needed = 1; 215927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 216027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 216127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < _needed) { 21622545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 21632545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 21642545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "remaining() < needed"; 216527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 216627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 216717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (params == NULL) { 21685b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi char * _paramsBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 216917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer params = (GLfloat *) (_paramsBase + _bufferOffset); 217017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 217127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glMaterialfv( 217227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)face, 217327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 217427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat *)params 217527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 217627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 217727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 217827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 21795b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)params, JNI_ABORT); 218027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 21812545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 21822545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 21832545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 218427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 218527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 218627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glMaterialx ( GLenum face, GLenum pname, GLfixed param ) */ 218727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 218827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glMaterialx__III 218927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint face, jint pname, jint param) { 219027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glMaterialx( 219127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)face, 219227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 219327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)param 219427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 219527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 219627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 219727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glMaterialxv ( GLenum face, GLenum pname, const GLfixed *params ) */ 219827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 219927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glMaterialxv__II_3II 220027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint face, jint pname, jintArray params_ref, jint offset) { 22012545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 22022ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 22032ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 220427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *params_base = (GLfixed *) 0; 220527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 220627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *params = (GLfixed *) 0; 220727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 220827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (!params_ref) { 22092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 22102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 22112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "params == null"; 221227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 221327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 221427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (offset < 0) { 22152545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 22162545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 22172545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 221827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 221927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 222027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _remaining = _env->GetArrayLength(params_ref) - offset; 222127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich int _needed; 222227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich switch (pname) { 222327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT) 222427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_AMBIENT: 222527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT) 222627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_DIFFUSE) 222727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_DIFFUSE: 222827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_DIFFUSE) 222927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPECULAR) 223027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_SPECULAR: 223127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPECULAR) 223227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_EMISSION) 223327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_EMISSION: 223427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_EMISSION) 223527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT_AND_DIFFUSE) 223627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_AMBIENT_AND_DIFFUSE: 223727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT_AND_DIFFUSE) 223827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 4; 223927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 224027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich default: 22412ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _needed = 1; 224227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 224327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 224427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < _needed) { 22452545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 22462545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 22472545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "length - offset < needed"; 224827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 224927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 225027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params_base = (GLfixed *) 22515b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->GetIntArrayElements(params_ref, (jboolean *)0); 225227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = params_base + offset; 225327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 225427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glMaterialxv( 225527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)face, 225627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 225727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed *)params 225827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 225927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 226027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 226127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (params_base) { 22625b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 226327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich JNI_ABORT); 226427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 22652545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 22662545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 22672545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 226827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 226927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 227027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glMaterialxv ( GLenum face, GLenum pname, const GLfixed *params ) */ 227127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 227227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glMaterialxv__IILjava_nio_IntBuffer_2 227327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint face, jint pname, jobject params_buf) { 22742545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 22752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 22762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 22775b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi jintArray _array = (jintArray) 0; 227817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 227927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 228027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *params = (GLfixed *) 0; 228127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 22825b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi params = (GLfixed *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 228327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich int _needed; 228427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich switch (pname) { 228527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT) 228627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_AMBIENT: 228727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT) 228827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_DIFFUSE) 228927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_DIFFUSE: 229027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_DIFFUSE) 229127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPECULAR) 229227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_SPECULAR: 229327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPECULAR) 229427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_EMISSION) 229527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_EMISSION: 229627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_EMISSION) 229727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT_AND_DIFFUSE) 229827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_AMBIENT_AND_DIFFUSE: 229927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT_AND_DIFFUSE) 230027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 4; 230127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 230227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich default: 23032ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _needed = 1; 230427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 230527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 230627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < _needed) { 23072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 23082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 23092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "remaining() < needed"; 231027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 231127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 231217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (params == NULL) { 23135b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 231417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer params = (GLfixed *) (_paramsBase + _bufferOffset); 231517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 231627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glMaterialxv( 231727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)face, 231827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 231927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed *)params 232027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 232127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 232227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 232327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 23245b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)params, JNI_ABORT); 232527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 23262545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 23272545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 23282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 232927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 233027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 233127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glMatrixMode ( GLenum mode ) */ 233227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 233327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glMatrixMode__I 233427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint mode) { 233527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glMatrixMode( 233627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)mode 233727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 233827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 233927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 234027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glMultMatrixf ( const GLfloat *m ) */ 234127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 234227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glMultMatrixf___3FI 234327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jfloatArray m_ref, jint offset) { 23442545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 23452ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 23462ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 234727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *m_base = (GLfloat *) 0; 234827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 234927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *m = (GLfloat *) 0; 235027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 235127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (!m_ref) { 23522545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 23532545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 23542545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "m == null"; 235527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 235627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 235727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (offset < 0) { 23582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 23592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 23602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 236127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 236227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 236327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _remaining = _env->GetArrayLength(m_ref) - offset; 236427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich m_base = (GLfloat *) 23655b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->GetFloatArrayElements(m_ref, (jboolean *)0); 236627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich m = m_base + offset; 236727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 236827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glMultMatrixf( 236927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat *)m 237027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 237127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 237227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 237327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (m_base) { 23745b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->ReleaseFloatArrayElements(m_ref, (jfloat*)m_base, 237527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich JNI_ABORT); 237627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 23772545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 23782545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 23792545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 238027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 238127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 238227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glMultMatrixf ( const GLfloat *m ) */ 238327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 238427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glMultMatrixf__Ljava_nio_FloatBuffer_2 238527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jobject m_buf) { 23865b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 238717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 238827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 238927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *m = (GLfloat *) 0; 239027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 23915b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi m = (GLfloat *)getPointer(_env, m_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 239217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (m == NULL) { 23935b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi char * _mBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 239417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer m = (GLfloat *) (_mBase + _bufferOffset); 239517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 239627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glMultMatrixf( 239727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat *)m 239827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 239927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 24005b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)m, JNI_ABORT); 240127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 240227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 240327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 240427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glMultMatrixx ( const GLfixed *m ) */ 240527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 240627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glMultMatrixx___3II 240727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jintArray m_ref, jint offset) { 24082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 24092ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 24102ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 241127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *m_base = (GLfixed *) 0; 241227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 241327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *m = (GLfixed *) 0; 241427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 241527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (!m_ref) { 24162545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 24172545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 24182545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "m == null"; 241927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 242027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 242127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (offset < 0) { 24222545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 24232545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 24242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 242527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 242627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 242727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _remaining = _env->GetArrayLength(m_ref) - offset; 242827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich m_base = (GLfixed *) 24295b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->GetIntArrayElements(m_ref, (jboolean *)0); 243027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich m = m_base + offset; 243127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 243227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glMultMatrixx( 243327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed *)m 243427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 243527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 243627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 243727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (m_base) { 24385b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->ReleaseIntArrayElements(m_ref, (jint*)m_base, 243927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich JNI_ABORT); 244027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 24412545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 24422545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 24432545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 244427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 244527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 244627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glMultMatrixx ( const GLfixed *m ) */ 244727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 244827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glMultMatrixx__Ljava_nio_IntBuffer_2 244927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jobject m_buf) { 24505b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi jintArray _array = (jintArray) 0; 245117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 245227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 245327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *m = (GLfixed *) 0; 245427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 24555b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi m = (GLfixed *)getPointer(_env, m_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 245617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (m == NULL) { 24575b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi char * _mBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 245817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer m = (GLfixed *) (_mBase + _bufferOffset); 245917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 246027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glMultMatrixx( 246127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed *)m 246227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 246327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 24645b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)m, JNI_ABORT); 246527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 246627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 246727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 246827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glMultiTexCoord4f ( GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q ) */ 246927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 247027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glMultiTexCoord4f__IFFFF 247127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint target, jfloat s, jfloat t, jfloat r, jfloat q) { 247227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glMultiTexCoord4f( 247327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)target, 247427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)s, 247527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)t, 247627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)r, 247727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)q 247827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 247927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 248027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 248127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glMultiTexCoord4x ( GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q ) */ 248227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 248327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glMultiTexCoord4x__IIIII 248427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint s, jint t, jint r, jint q) { 248527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glMultiTexCoord4x( 248627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)target, 248727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)s, 248827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)t, 248927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)r, 249027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)q 249127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 249227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 249327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 249427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glNormal3f ( GLfloat nx, GLfloat ny, GLfloat nz ) */ 249527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 249627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glNormal3f__FFF 249727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jfloat nx, jfloat ny, jfloat nz) { 249827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glNormal3f( 249927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)nx, 250027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)ny, 250127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)nz 250227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 250327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 250427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 250527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glNormal3x ( GLfixed nx, GLfixed ny, GLfixed nz ) */ 250627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 250727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glNormal3x__III 250827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint nx, jint ny, jint nz) { 250927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glNormal3x( 251027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)nx, 251127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)ny, 251227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)nz 251327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 251427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 251527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 251627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glNormalPointer ( GLenum type, GLsizei stride, const GLvoid *pointer ) */ 251727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 251827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glNormalPointerBounds__IILjava_nio_Buffer_2I 251927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint type, jint stride, jobject pointer_buf, jint remaining) { 252027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jarray _array = (jarray) 0; 252117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 252227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 252327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLvoid *pointer = (GLvoid *) 0; 252427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 2525e20ea783a12f1031482c3aa01938efe39dcbf0a2Jack Palevich if (pointer_buf) { 252616e7972f0d986eebf846ea8feb50f4435a9c6970Jack Palevich pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf); 2527e20ea783a12f1031482c3aa01938efe39dcbf0a2Jack Palevich if ( ! pointer ) { 2528e20ea783a12f1031482c3aa01938efe39dcbf0a2Jack Palevich return; 2529e20ea783a12f1031482c3aa01938efe39dcbf0a2Jack Palevich } 2530e20ea783a12f1031482c3aa01938efe39dcbf0a2Jack Palevich } 253127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glNormalPointerBounds( 253227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)type, 253327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)stride, 253427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLvoid *)pointer, 253527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)remaining 253627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 253727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 253827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 253927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glOrthof ( GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar ) */ 254027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 254127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glOrthof__FFFFFF 254227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jfloat left, jfloat right, jfloat bottom, jfloat top, jfloat zNear, jfloat zFar) { 254327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glOrthof( 254427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)left, 254527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)right, 254627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)bottom, 254727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)top, 254827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)zNear, 254927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)zFar 255027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 255127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 255227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 255327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glOrthox ( GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar ) */ 255427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 255527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glOrthox__IIIIII 255627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint left, jint right, jint bottom, jint top, jint zNear, jint zFar) { 255727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glOrthox( 255827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)left, 255927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)right, 256027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)bottom, 256127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)top, 256227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)zNear, 256327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)zFar 256427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 256527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 256627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 256727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glPixelStorei ( GLenum pname, GLint param ) */ 256827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 256927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glPixelStorei__II 257027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint pname, jint param) { 257127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glPixelStorei( 257227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 257327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint)param 257427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 257527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 257627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 257727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glPointSize ( GLfloat size ) */ 257827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 257927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glPointSize__F 258027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jfloat size) { 258127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glPointSize( 258227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)size 258327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 258427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 258527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 258627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glPointSizex ( GLfixed size ) */ 258727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 258827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glPointSizex__I 258927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint size) { 259027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glPointSizex( 259127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)size 259227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 259327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 259427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 259527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glPolygonOffset ( GLfloat factor, GLfloat units ) */ 259627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 259727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glPolygonOffset__FF 259827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jfloat factor, jfloat units) { 259927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glPolygonOffset( 260027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)factor, 260127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)units 260227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 260327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 260427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 260527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glPolygonOffsetx ( GLfixed factor, GLfixed units ) */ 260627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 260727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glPolygonOffsetx__II 260827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint factor, jint units) { 260927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glPolygonOffsetx( 261027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)factor, 261127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)units 261227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 261327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 261427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 261527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glPopMatrix ( void ) */ 261627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 261727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glPopMatrix__ 261827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this) { 261927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glPopMatrix(); 262027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 262127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 262227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glPushMatrix ( void ) */ 262327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 262427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glPushMatrix__ 262527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this) { 262627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glPushMatrix(); 262727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 262827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 262927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glReadPixels ( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels ) */ 263027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 263127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glReadPixels__IIIIIILjava_nio_Buffer_2 263227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint x, jint y, jint width, jint height, jint format, jint type, jobject pixels_buf) { 263327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jarray _array = (jarray) 0; 263417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 263527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 263627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLvoid *pixels = (GLvoid *) 0; 263727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 26385b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi pixels = (GLvoid *)getPointer(_env, pixels_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 263917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (pixels == NULL) { 264017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 264117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer pixels = (GLvoid *) (_pixelsBase + _bufferOffset); 264217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 264327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glReadPixels( 264427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint)x, 264527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint)y, 264627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)width, 264727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)height, 264827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)format, 264927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)type, 265027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLvoid *)pixels 265127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 265227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 26532545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer releasePointer(_env, _array, pixels, JNI_TRUE); 265427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 265527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 265627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 265727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glRotatef ( GLfloat angle, GLfloat x, GLfloat y, GLfloat z ) */ 265827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 265927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glRotatef__FFFF 266027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jfloat angle, jfloat x, jfloat y, jfloat z) { 266127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glRotatef( 266227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)angle, 266327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)x, 266427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)y, 266527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)z 266627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 266727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 266827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 266927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glRotatex ( GLfixed angle, GLfixed x, GLfixed y, GLfixed z ) */ 267027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 267127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glRotatex__IIII 267227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint angle, jint x, jint y, jint z) { 267327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glRotatex( 267427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)angle, 267527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)x, 267627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)y, 267727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)z 267827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 267927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 268027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 268127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glSampleCoverage ( GLclampf value, GLboolean invert ) */ 268227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 268327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glSampleCoverage__FZ 268427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jfloat value, jboolean invert) { 268527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glSampleCoverage( 268627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLclampf)value, 268727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLboolean)invert 268827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 268927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 269027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 269127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glSampleCoveragex ( GLclampx value, GLboolean invert ) */ 269227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 269327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glSampleCoveragex__IZ 269427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint value, jboolean invert) { 269527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glSampleCoveragex( 269627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLclampx)value, 269727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLboolean)invert 269827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 269927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 270027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 270127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glScalef ( GLfloat x, GLfloat y, GLfloat z ) */ 270227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 270327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glScalef__FFF 270427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jfloat x, jfloat y, jfloat z) { 270527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glScalef( 270627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)x, 270727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)y, 270827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)z 270927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 271027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 271127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 271227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glScalex ( GLfixed x, GLfixed y, GLfixed z ) */ 271327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 271427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glScalex__III 271527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint x, jint y, jint z) { 271627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glScalex( 271727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)x, 271827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)y, 271927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)z 272027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 272127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 272227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 272327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glScissor ( GLint x, GLint y, GLsizei width, GLsizei height ) */ 272427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 272527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glScissor__IIII 272627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint x, jint y, jint width, jint height) { 272727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glScissor( 272827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint)x, 272927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint)y, 273027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)width, 273127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)height 273227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 273327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 273427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 273527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glShadeModel ( GLenum mode ) */ 273627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 273727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glShadeModel__I 273827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint mode) { 273927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glShadeModel( 274027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)mode 274127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 274227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 274327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 274427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glStencilFunc ( GLenum func, GLint ref, GLuint mask ) */ 274527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 274627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glStencilFunc__III 274727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint func, jint ref, jint mask) { 274827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glStencilFunc( 274927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)func, 275027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint)ref, 275127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLuint)mask 275227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 275327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 275427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 275527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glStencilMask ( GLuint mask ) */ 275627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 275727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glStencilMask__I 275827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint mask) { 275927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glStencilMask( 276027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLuint)mask 276127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 276227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 276327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 276427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glStencilOp ( GLenum fail, GLenum zfail, GLenum zpass ) */ 276527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 276627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glStencilOp__III 276727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint fail, jint zfail, jint zpass) { 276827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glStencilOp( 276927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)fail, 277027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)zfail, 277127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)zpass 277227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 277327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 277427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 277527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexCoordPointer ( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer ) */ 277627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 277727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexCoordPointerBounds__IIILjava_nio_Buffer_2I 277827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jobject pointer_buf, jint remaining) { 277927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jarray _array = (jarray) 0; 278017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 278127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 278227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLvoid *pointer = (GLvoid *) 0; 278327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 2784e20ea783a12f1031482c3aa01938efe39dcbf0a2Jack Palevich if (pointer_buf) { 278516e7972f0d986eebf846ea8feb50f4435a9c6970Jack Palevich pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf); 2786e20ea783a12f1031482c3aa01938efe39dcbf0a2Jack Palevich if ( ! pointer ) { 2787e20ea783a12f1031482c3aa01938efe39dcbf0a2Jack Palevich return; 2788e20ea783a12f1031482c3aa01938efe39dcbf0a2Jack Palevich } 2789e20ea783a12f1031482c3aa01938efe39dcbf0a2Jack Palevich } 279027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glTexCoordPointerBounds( 279127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint)size, 279227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)type, 279327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)stride, 279427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLvoid *)pointer, 279527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)remaining 279627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 279727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 279827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 279927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexEnvf ( GLenum target, GLenum pname, GLfloat param ) */ 280027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 280127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexEnvf__IIF 280227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint pname, jfloat param) { 280327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glTexEnvf( 280427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)target, 280527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 280627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)param 280727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 280827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 280927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 281027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexEnvfv ( GLenum target, GLenum pname, const GLfloat *params ) */ 281127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 281227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexEnvfv__II_3FI 281327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint pname, jfloatArray params_ref, jint offset) { 28142545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 28152ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 28162ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 281727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *params_base = (GLfloat *) 0; 281827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 281927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *params = (GLfloat *) 0; 282027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 282127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (!params_ref) { 28222545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 28232545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 28242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "params == null"; 282527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 282627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 282727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (offset < 0) { 28282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 28292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 28302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 283127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 283227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 283327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _remaining = _env->GetArrayLength(params_ref) - offset; 283427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich int _needed; 283527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich switch (pname) { 283627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_COLOR) 283727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_TEXTURE_ENV_COLOR: 283827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_COLOR) 283927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 4; 284027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 284127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich default: 28422ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _needed = 1; 284327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 284427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 284527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < _needed) { 28462545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 28472545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 28482545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "length - offset < needed"; 284927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 285027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 285127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params_base = (GLfloat *) 28525b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->GetFloatArrayElements(params_ref, (jboolean *)0); 285327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = params_base + offset; 285427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 285527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glTexEnvfv( 285627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)target, 285727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 285827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat *)params 285927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 286027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 286127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 286227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (params_base) { 28635b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->ReleaseFloatArrayElements(params_ref, (jfloat*)params_base, 286427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich JNI_ABORT); 286527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 28662545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 28672545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 28682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 286927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 287027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 287127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexEnvfv ( GLenum target, GLenum pname, const GLfloat *params ) */ 287227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 287327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexEnvfv__IILjava_nio_FloatBuffer_2 287427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) { 28752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 28762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 28772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 28785b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 287917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 288027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 288127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *params = (GLfloat *) 0; 288227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 28835b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi params = (GLfloat *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 288427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich int _needed; 288527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich switch (pname) { 288627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_COLOR) 288727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_TEXTURE_ENV_COLOR: 288827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_COLOR) 288927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 4; 289027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 289127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich default: 28922ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _needed = 1; 289327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 289427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 289527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < _needed) { 28962545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 28972545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 28982545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "remaining() < needed"; 289927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 290027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 290117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (params == NULL) { 29025b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi char * _paramsBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 290317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer params = (GLfloat *) (_paramsBase + _bufferOffset); 290417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 290527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glTexEnvfv( 290627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)target, 290727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 290827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat *)params 290927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 291027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 291127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 291227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 29135b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)params, JNI_ABORT); 291427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 29152545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 29162545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 29172545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 291827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 291927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 292027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexEnvx ( GLenum target, GLenum pname, GLfixed param ) */ 292127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 292227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexEnvx__III 292327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint pname, jint param) { 292427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glTexEnvx( 292527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)target, 292627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 292727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)param 292827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 292927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 293027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 293127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexEnvxv ( GLenum target, GLenum pname, const GLfixed *params ) */ 293227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 293327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexEnvxv__II_3II 293427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) { 29352545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 29362ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 29372ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 293827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *params_base = (GLfixed *) 0; 293927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 294027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *params = (GLfixed *) 0; 294127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 294227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (!params_ref) { 29432545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 29442545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 29452545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "params == null"; 294627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 294727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 294827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (offset < 0) { 29492545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 29502545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 29512545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 295227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 295327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 295427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _remaining = _env->GetArrayLength(params_ref) - offset; 295527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich int _needed; 295627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich switch (pname) { 295727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_COLOR) 295827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_TEXTURE_ENV_COLOR: 295927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_COLOR) 296027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 4; 296127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 296227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich default: 29632ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _needed = 1; 296427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 296527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 296627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < _needed) { 29672545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 29682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 29692545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "length - offset < needed"; 297027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 297127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 297227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params_base = (GLfixed *) 29735b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->GetIntArrayElements(params_ref, (jboolean *)0); 297427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = params_base + offset; 297527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 297627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glTexEnvxv( 297727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)target, 297827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 297927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed *)params 298027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 298127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 298227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 298327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (params_base) { 29845b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 298527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich JNI_ABORT); 298627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 29872545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 29882545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 29892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 299027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 299127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 299227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexEnvxv ( GLenum target, GLenum pname, const GLfixed *params ) */ 299327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 299427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexEnvxv__IILjava_nio_IntBuffer_2 299527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) { 29962545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 29972ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 29982ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 29995b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi jintArray _array = (jintArray) 0; 300017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 300127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 300227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *params = (GLfixed *) 0; 300327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 30045b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi params = (GLfixed *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 300527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich int _needed; 300627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich switch (pname) { 300727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_COLOR) 300827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_TEXTURE_ENV_COLOR: 300927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_COLOR) 301027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 4; 301127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 301227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich default: 30132ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _needed = 1; 301427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 301527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 301627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < _needed) { 30172545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 30182545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 30192545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "remaining() < needed"; 302027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 302127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 302217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (params == NULL) { 30235b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 302417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer params = (GLfixed *) (_paramsBase + _bufferOffset); 302517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 302627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glTexEnvxv( 302727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)target, 302827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 302927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed *)params 303027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 303127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 303227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 303327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 30345b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)params, JNI_ABORT); 303527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 30362545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 30372545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 30382545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 303927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 304027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 304127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexImage2D ( GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels ) */ 304227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 304327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexImage2D__IIIIIIIILjava_nio_Buffer_2 304427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint border, jint format, jint type, jobject pixels_buf) { 304527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jarray _array = (jarray) 0; 304617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 304727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 304827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLvoid *pixels = (GLvoid *) 0; 304927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 305027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (pixels_buf) { 30515b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi pixels = (GLvoid *)getPointer(_env, pixels_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 305217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 305337c9b49ab5eb5a676370fd7081db0967c38e97a6Thomas Tafertshofer if (pixels_buf && pixels == NULL) { 305417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 305517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer pixels = (GLvoid *) (_pixelsBase + _bufferOffset); 305627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 305727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glTexImage2D( 305827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)target, 305927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint)level, 306027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint)internalformat, 306127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)width, 306227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)height, 306327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint)border, 306427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)format, 306527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)type, 306627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLvoid *)pixels 306727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 306827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 306927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich releasePointer(_env, _array, pixels, JNI_FALSE); 307027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 307127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 307227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 307327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexParameterf ( GLenum target, GLenum pname, GLfloat param ) */ 307427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 307527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexParameterf__IIF 307627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint pname, jfloat param) { 307727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glTexParameterf( 307827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)target, 307927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 308027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)param 308127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 308227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 308327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 308427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexParameterx ( GLenum target, GLenum pname, GLfixed param ) */ 308527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 308627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexParameterx__III 308727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint pname, jint param) { 308827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glTexParameterx( 308927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)target, 309027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 309127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)param 309227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 309327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 309427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 309527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels ) */ 309627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 309727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexSubImage2D__IIIIIIIILjava_nio_Buffer_2 309827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint width, jint height, jint format, jint type, jobject pixels_buf) { 309927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jarray _array = (jarray) 0; 310017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 310127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 310227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLvoid *pixels = (GLvoid *) 0; 310327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 310427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (pixels_buf) { 31055b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi pixels = (GLvoid *)getPointer(_env, pixels_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 310617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 310737c9b49ab5eb5a676370fd7081db0967c38e97a6Thomas Tafertshofer if (pixels_buf && pixels == NULL) { 310817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 310917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer pixels = (GLvoid *) (_pixelsBase + _bufferOffset); 311027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 311127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glTexSubImage2D( 311227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)target, 311327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint)level, 311427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint)xoffset, 311527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint)yoffset, 311627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)width, 311727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)height, 311827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)format, 311927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)type, 312027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLvoid *)pixels 312127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 312227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 312327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich releasePointer(_env, _array, pixels, JNI_FALSE); 312427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 312527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 312627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 312727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTranslatef ( GLfloat x, GLfloat y, GLfloat z ) */ 312827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 312927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTranslatef__FFF 313027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jfloat x, jfloat y, jfloat z) { 313127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glTranslatef( 313227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)x, 313327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)y, 313427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)z 313527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 313627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 313727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 313827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTranslatex ( GLfixed x, GLfixed y, GLfixed z ) */ 313927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 314027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTranslatex__III 314127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint x, jint y, jint z) { 314227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glTranslatex( 314327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)x, 314427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)y, 314527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)z 314627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 314727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 314827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 314927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glVertexPointer ( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer ) */ 315027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 315127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glVertexPointerBounds__IIILjava_nio_Buffer_2I 315227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jobject pointer_buf, jint remaining) { 315327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jarray _array = (jarray) 0; 315417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 315527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 315627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLvoid *pointer = (GLvoid *) 0; 315727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 3158e20ea783a12f1031482c3aa01938efe39dcbf0a2Jack Palevich if (pointer_buf) { 315916e7972f0d986eebf846ea8feb50f4435a9c6970Jack Palevich pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf); 3160e20ea783a12f1031482c3aa01938efe39dcbf0a2Jack Palevich if ( ! pointer ) { 3161e20ea783a12f1031482c3aa01938efe39dcbf0a2Jack Palevich return; 3162e20ea783a12f1031482c3aa01938efe39dcbf0a2Jack Palevich } 3163e20ea783a12f1031482c3aa01938efe39dcbf0a2Jack Palevich } 316427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glVertexPointerBounds( 316527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint)size, 316627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)type, 316727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)stride, 316827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLvoid *)pointer, 316927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)remaining 317027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 317127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 317227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 317327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glViewport ( GLint x, GLint y, GLsizei width, GLsizei height ) */ 317427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 317527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glViewport__IIII 317627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint x, jint y, jint width, jint height) { 317727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glViewport( 317827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint)x, 317927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint)y, 318027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)width, 318127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)height 318227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 318327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 318427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 318527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic const char *classPathName = "android/opengl/GLES10"; 318627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 318727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic JNINativeMethod methods[] = { 318827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"_nativeClassInit", "()V", (void*)nativeClassInit }, 318927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glActiveTexture", "(I)V", (void *) android_glActiveTexture__I }, 319027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glAlphaFunc", "(IF)V", (void *) android_glAlphaFunc__IF }, 319127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glAlphaFuncx", "(II)V", (void *) android_glAlphaFuncx__II }, 319227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glBindTexture", "(II)V", (void *) android_glBindTexture__II }, 319327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glBlendFunc", "(II)V", (void *) android_glBlendFunc__II }, 319427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glClear", "(I)V", (void *) android_glClear__I }, 319527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glClearColor", "(FFFF)V", (void *) android_glClearColor__FFFF }, 319627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glClearColorx", "(IIII)V", (void *) android_glClearColorx__IIII }, 319727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glClearDepthf", "(F)V", (void *) android_glClearDepthf__F }, 319827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glClearDepthx", "(I)V", (void *) android_glClearDepthx__I }, 319927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glClearStencil", "(I)V", (void *) android_glClearStencil__I }, 320027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glClientActiveTexture", "(I)V", (void *) android_glClientActiveTexture__I }, 320127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glColor4f", "(FFFF)V", (void *) android_glColor4f__FFFF }, 320227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glColor4x", "(IIII)V", (void *) android_glColor4x__IIII }, 320327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glColorMask", "(ZZZZ)V", (void *) android_glColorMask__ZZZZ }, 320427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glColorPointerBounds", "(IIILjava/nio/Buffer;I)V", (void *) android_glColorPointerBounds__IIILjava_nio_Buffer_2I }, 320527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glCompressedTexImage2D", "(IIIIIIILjava/nio/Buffer;)V", (void *) android_glCompressedTexImage2D__IIIIIIILjava_nio_Buffer_2 }, 320627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glCompressedTexSubImage2D", "(IIIIIIIILjava/nio/Buffer;)V", (void *) android_glCompressedTexSubImage2D__IIIIIIIILjava_nio_Buffer_2 }, 320727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glCopyTexImage2D", "(IIIIIIII)V", (void *) android_glCopyTexImage2D__IIIIIIII }, 320827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glCopyTexSubImage2D", "(IIIIIIII)V", (void *) android_glCopyTexSubImage2D__IIIIIIII }, 320927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glCullFace", "(I)V", (void *) android_glCullFace__I }, 321027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glDeleteTextures", "(I[II)V", (void *) android_glDeleteTextures__I_3II }, 321127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glDeleteTextures", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteTextures__ILjava_nio_IntBuffer_2 }, 321227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glDepthFunc", "(I)V", (void *) android_glDepthFunc__I }, 321327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glDepthMask", "(Z)V", (void *) android_glDepthMask__Z }, 321427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glDepthRangef", "(FF)V", (void *) android_glDepthRangef__FF }, 321527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glDepthRangex", "(II)V", (void *) android_glDepthRangex__II }, 321627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glDisable", "(I)V", (void *) android_glDisable__I }, 321727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glDisableClientState", "(I)V", (void *) android_glDisableClientState__I }, 321827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glDrawArrays", "(III)V", (void *) android_glDrawArrays__III }, 321927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glDrawElements", "(IIILjava/nio/Buffer;)V", (void *) android_glDrawElements__IIILjava_nio_Buffer_2 }, 322027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glEnable", "(I)V", (void *) android_glEnable__I }, 322127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glEnableClientState", "(I)V", (void *) android_glEnableClientState__I }, 322227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glFinish", "()V", (void *) android_glFinish__ }, 322327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glFlush", "()V", (void *) android_glFlush__ }, 322427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glFogf", "(IF)V", (void *) android_glFogf__IF }, 322527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glFogfv", "(I[FI)V", (void *) android_glFogfv__I_3FI }, 322627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glFogfv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glFogfv__ILjava_nio_FloatBuffer_2 }, 322727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glFogx", "(II)V", (void *) android_glFogx__II }, 322827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glFogxv", "(I[II)V", (void *) android_glFogxv__I_3II }, 322927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glFogxv", "(ILjava/nio/IntBuffer;)V", (void *) android_glFogxv__ILjava_nio_IntBuffer_2 }, 323027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glFrontFace", "(I)V", (void *) android_glFrontFace__I }, 323127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glFrustumf", "(FFFFFF)V", (void *) android_glFrustumf__FFFFFF }, 323227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glFrustumx", "(IIIIII)V", (void *) android_glFrustumx__IIIIII }, 323327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGenTextures", "(I[II)V", (void *) android_glGenTextures__I_3II }, 323427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGenTextures", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenTextures__ILjava_nio_IntBuffer_2 }, 323527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetError", "()I", (void *) android_glGetError__ }, 323627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetIntegerv", "(I[II)V", (void *) android_glGetIntegerv__I_3II }, 323727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetIntegerv", "(ILjava/nio/IntBuffer;)V", (void *) android_glGetIntegerv__ILjava_nio_IntBuffer_2 }, 3238a379585e6e3ff41db6d71a5cd0a0403931bc525dJack Palevich{"glGetString", "(I)Ljava/lang/String;", (void *) android_glGetString }, 323927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glHint", "(II)V", (void *) android_glHint__II }, 324027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glLightModelf", "(IF)V", (void *) android_glLightModelf__IF }, 324127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glLightModelfv", "(I[FI)V", (void *) android_glLightModelfv__I_3FI }, 324227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glLightModelfv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glLightModelfv__ILjava_nio_FloatBuffer_2 }, 324327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glLightModelx", "(II)V", (void *) android_glLightModelx__II }, 324427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glLightModelxv", "(I[II)V", (void *) android_glLightModelxv__I_3II }, 324527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glLightModelxv", "(ILjava/nio/IntBuffer;)V", (void *) android_glLightModelxv__ILjava_nio_IntBuffer_2 }, 324627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glLightf", "(IIF)V", (void *) android_glLightf__IIF }, 324727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glLightfv", "(II[FI)V", (void *) android_glLightfv__II_3FI }, 324827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glLightfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glLightfv__IILjava_nio_FloatBuffer_2 }, 324927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glLightx", "(III)V", (void *) android_glLightx__III }, 325027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glLightxv", "(II[II)V", (void *) android_glLightxv__II_3II }, 325127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glLightxv", "(IILjava/nio/IntBuffer;)V", (void *) android_glLightxv__IILjava_nio_IntBuffer_2 }, 325227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glLineWidth", "(F)V", (void *) android_glLineWidth__F }, 325327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glLineWidthx", "(I)V", (void *) android_glLineWidthx__I }, 325427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glLoadIdentity", "()V", (void *) android_glLoadIdentity__ }, 325527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glLoadMatrixf", "([FI)V", (void *) android_glLoadMatrixf___3FI }, 325627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glLoadMatrixf", "(Ljava/nio/FloatBuffer;)V", (void *) android_glLoadMatrixf__Ljava_nio_FloatBuffer_2 }, 325727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glLoadMatrixx", "([II)V", (void *) android_glLoadMatrixx___3II }, 325827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glLoadMatrixx", "(Ljava/nio/IntBuffer;)V", (void *) android_glLoadMatrixx__Ljava_nio_IntBuffer_2 }, 325927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glLogicOp", "(I)V", (void *) android_glLogicOp__I }, 326027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glMaterialf", "(IIF)V", (void *) android_glMaterialf__IIF }, 326127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glMaterialfv", "(II[FI)V", (void *) android_glMaterialfv__II_3FI }, 326227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glMaterialfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glMaterialfv__IILjava_nio_FloatBuffer_2 }, 326327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glMaterialx", "(III)V", (void *) android_glMaterialx__III }, 326427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glMaterialxv", "(II[II)V", (void *) android_glMaterialxv__II_3II }, 326527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glMaterialxv", "(IILjava/nio/IntBuffer;)V", (void *) android_glMaterialxv__IILjava_nio_IntBuffer_2 }, 326627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glMatrixMode", "(I)V", (void *) android_glMatrixMode__I }, 326727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glMultMatrixf", "([FI)V", (void *) android_glMultMatrixf___3FI }, 326827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glMultMatrixf", "(Ljava/nio/FloatBuffer;)V", (void *) android_glMultMatrixf__Ljava_nio_FloatBuffer_2 }, 326927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glMultMatrixx", "([II)V", (void *) android_glMultMatrixx___3II }, 327027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glMultMatrixx", "(Ljava/nio/IntBuffer;)V", (void *) android_glMultMatrixx__Ljava_nio_IntBuffer_2 }, 327127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glMultiTexCoord4f", "(IFFFF)V", (void *) android_glMultiTexCoord4f__IFFFF }, 327227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glMultiTexCoord4x", "(IIIII)V", (void *) android_glMultiTexCoord4x__IIIII }, 327327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glNormal3f", "(FFF)V", (void *) android_glNormal3f__FFF }, 327427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glNormal3x", "(III)V", (void *) android_glNormal3x__III }, 327527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glNormalPointerBounds", "(IILjava/nio/Buffer;I)V", (void *) android_glNormalPointerBounds__IILjava_nio_Buffer_2I }, 327627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glOrthof", "(FFFFFF)V", (void *) android_glOrthof__FFFFFF }, 327727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glOrthox", "(IIIIII)V", (void *) android_glOrthox__IIIIII }, 327827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glPixelStorei", "(II)V", (void *) android_glPixelStorei__II }, 327927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glPointSize", "(F)V", (void *) android_glPointSize__F }, 328027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glPointSizex", "(I)V", (void *) android_glPointSizex__I }, 328127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glPolygonOffset", "(FF)V", (void *) android_glPolygonOffset__FF }, 328227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glPolygonOffsetx", "(II)V", (void *) android_glPolygonOffsetx__II }, 328327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glPopMatrix", "()V", (void *) android_glPopMatrix__ }, 328427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glPushMatrix", "()V", (void *) android_glPushMatrix__ }, 328527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glReadPixels", "(IIIIIILjava/nio/Buffer;)V", (void *) android_glReadPixels__IIIIIILjava_nio_Buffer_2 }, 328627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glRotatef", "(FFFF)V", (void *) android_glRotatef__FFFF }, 328727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glRotatex", "(IIII)V", (void *) android_glRotatex__IIII }, 328827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glSampleCoverage", "(FZ)V", (void *) android_glSampleCoverage__FZ }, 328927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glSampleCoveragex", "(IZ)V", (void *) android_glSampleCoveragex__IZ }, 329027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glScalef", "(FFF)V", (void *) android_glScalef__FFF }, 329127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glScalex", "(III)V", (void *) android_glScalex__III }, 329227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glScissor", "(IIII)V", (void *) android_glScissor__IIII }, 329327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glShadeModel", "(I)V", (void *) android_glShadeModel__I }, 329427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glStencilFunc", "(III)V", (void *) android_glStencilFunc__III }, 329527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glStencilMask", "(I)V", (void *) android_glStencilMask__I }, 329627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glStencilOp", "(III)V", (void *) android_glStencilOp__III }, 329727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexCoordPointerBounds", "(IIILjava/nio/Buffer;I)V", (void *) android_glTexCoordPointerBounds__IIILjava_nio_Buffer_2I }, 329827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexEnvf", "(IIF)V", (void *) android_glTexEnvf__IIF }, 329927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexEnvfv", "(II[FI)V", (void *) android_glTexEnvfv__II_3FI }, 330027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexEnvfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glTexEnvfv__IILjava_nio_FloatBuffer_2 }, 330127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexEnvx", "(III)V", (void *) android_glTexEnvx__III }, 330227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexEnvxv", "(II[II)V", (void *) android_glTexEnvxv__II_3II }, 330327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexEnvxv", "(IILjava/nio/IntBuffer;)V", (void *) android_glTexEnvxv__IILjava_nio_IntBuffer_2 }, 330427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexImage2D", "(IIIIIIIILjava/nio/Buffer;)V", (void *) android_glTexImage2D__IIIIIIIILjava_nio_Buffer_2 }, 330527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexParameterf", "(IIF)V", (void *) android_glTexParameterf__IIF }, 330627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexParameterx", "(III)V", (void *) android_glTexParameterx__III }, 330727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexSubImage2D", "(IIIIIIIILjava/nio/Buffer;)V", (void *) android_glTexSubImage2D__IIIIIIIILjava_nio_Buffer_2 }, 330827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTranslatef", "(FFF)V", (void *) android_glTranslatef__FFF }, 330927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTranslatex", "(III)V", (void *) android_glTranslatex__III }, 331027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glVertexPointerBounds", "(IIILjava/nio/Buffer;I)V", (void *) android_glVertexPointerBounds__IIILjava_nio_Buffer_2I }, 331127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glViewport", "(IIII)V", (void *) android_glViewport__IIII }, 331227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}; 331327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 331427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichint register_android_opengl_jni_GLES10(JNIEnv *_env) 331527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{ 331627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich int err; 331727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich err = android::AndroidRuntime::registerNativeMethods(_env, classPathName, methods, NELEM(methods)); 331827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich return err; 331927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 3320