531 |
GLERR |
GLERR |
532 |
} |
} |
533 |
|
|
534 |
|
|
535 |
|
JNIEXPORT jbyteArray JNICALL Java_gzz_gfx_gl_GL_impl_1Texture_1getCompressedTexImage |
536 |
|
(JNIEnv *env, jclass, jint id, jint lod) { |
537 |
|
int size; |
538 |
|
glBindTexture(GL_TEXTURE_2D, id); |
539 |
|
glGetTexLevelParameteriv(GL_TEXTURE_2D, lod, GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB, &size); |
540 |
|
GLERR; |
541 |
|
jbyteArray arr = env->NewByteArray(size); |
542 |
|
jbyte *b = env->GetByteArrayElements(arr, 0); |
543 |
|
glGetCompressedTexImageARB(GL_TEXTURE_2D, lod, b); |
544 |
|
env->ReleaseByteArrayElements(arr, b, 0); |
545 |
|
glBindTexture(GL_TEXTURE_2D, 0); |
546 |
|
GLERR; |
547 |
|
return arr; |
548 |
|
} |
549 |
|
|
550 |
|
JNIEXPORT void JNICALL Java_gzz_gfx_gl_GL_impl_1Texture_1compressedTexImage |
551 |
|
(JNIEnv *env, jclass, jint id, jint level, jstring jinternalFormat, jint width, jint height, |
552 |
|
jint border, jbyteArray jdata) { |
553 |
|
int size = env->GetArrayLength(jdata); |
554 |
|
jbyte *data = env->GetByteArrayElements(jdata, 0); |
555 |
|
glBindTexture(GL_TEXTURE_2D, id); |
556 |
|
GLenum internalFormat = tokenFromJstring(env, jinternalFormat); |
557 |
|
|
558 |
|
glCompressedTexImage2DARB(GL_TEXTURE_2D, level, internalFormat, |
559 |
|
width, height, border, size, data); |
560 |
|
glBindTexture(GL_TEXTURE_2D, 0); |
561 |
|
env->ReleaseByteArrayElements(jdata, data, 0); |
562 |
|
GLERR; |
563 |
|
|
564 |
|
} |
565 |
|
|
566 |
JNIEXPORT void JNICALL Java_gzz_gfx_gl_GL_impl_1Texture_1downsampleInto |
JNIEXPORT void JNICALL Java_gzz_gfx_gl_GL_impl_1Texture_1downsampleInto |
567 |
(JNIEnv *env, jclass, jint id, jint intoid, jstring targetstr, jint level, jstring internalFormat, jstring transferType) |
(JNIEnv *env, jclass, jint id, jint intoid, jstring targetstr, jint level, jstring internalFormat, jstring transferType) |
568 |
{ |
{ |