186 |
glPopClientAttrib(); |
glPopClientAttrib(); |
187 |
|
|
188 |
env->ReleaseByteArrayElements(jdata, b, 0); |
env->ReleaseByteArrayElements(jdata, b, 0); |
189 |
GLERR; |
if(GLERR_JNI(env)) return; |
190 |
} |
} |
191 |
|
|
192 |
|
|
223 |
|
|
224 |
} |
} |
225 |
|
|
|
|
|
|
jf(void, impl_1Texture_1downsampleInto) |
|
|
(JNIEnv *env, jclass, jint id, jint intoid, jstring targetstr, jint level, jstring internalFormat, jstring transferType) |
|
|
{ |
|
|
GLenum target = tokenFromJstring(env, targetstr); |
|
|
GLenum intern = tokenFromJstring(env, internalFormat); |
|
|
GLenum trans = tokenFromJstring(env, transferType); |
|
|
glBindTexture(target, id); |
|
|
GLint w=0,h=0; |
|
|
// XXX Only does 2D |
|
|
glGetTexLevelParameteriv(target, level, GL_TEXTURE_WIDTH, &w); |
|
|
glGetTexLevelParameteriv(target, level, GL_TEXTURE_HEIGHT, &h); |
|
|
|
|
|
GLubyte *data = new GLubyte[w*h*4]; // assuming 4 components |
|
|
|
|
|
glPixelStorei(GL_PACK_ROW_LENGTH, 0); |
|
|
glPixelStorei(GL_PACK_ALIGNMENT, 1); |
|
|
glGetTexImage(target, level, trans, GL_UNSIGNED_BYTE, data); |
|
|
|
|
|
|
|
|
glBindTexture(target, intoid); |
|
|
glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); |
|
|
glPixelStorei(GL_UNPACK_ALIGNMENT, 1); |
|
|
glTexParameteri(target, GL_GENERATE_MIPMAP_SGIS, GL_TRUE); |
|
|
glTexImage2D(target, 0, intern, w, h, 0, trans, GL_UNSIGNED_BYTE, |
|
|
data); |
|
|
|
|
|
delete[] data; |
|
|
glBindTexture(target, 0); |
|
|
|
|
|
|
|
|
} |
|
|
|
|
226 |
jf(void, impl_1Texture_1copyTexImage2D) |
jf(void, impl_1Texture_1copyTexImage2D) |
227 |
(JNIEnv *env, jclass, jint id, jint wid, jstring bufferstr, |
(JNIEnv *env, jclass, jint id, jint wid, jstring bufferstr, |
228 |
jstring targetstr, jint level, |
jstring targetstr, jint level, |