diff options
Diffstat (limited to 'src/native/ogl/CompressedGeometryRetained.c')
-rw-r--r-- | src/native/ogl/CompressedGeometryRetained.c | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/src/native/ogl/CompressedGeometryRetained.c b/src/native/ogl/CompressedGeometryRetained.c new file mode 100644 index 0000000..36ca164 --- /dev/null +++ b/src/native/ogl/CompressedGeometryRetained.c @@ -0,0 +1,70 @@ +/* + * $RCSfile$ + * + * Copyright (c) 2004 Sun Microsystems, Inc. All rights reserved. + * + * Use is subject to license terms. + * + * $Revision$ + * $Date$ + * $State$ + */ + +#include <stdio.h> +#include <jni.h> +#include "gldefs.h" + +#ifdef SOLARIS +#pragma weak glDrawCompressedGeomSUNX + +#else +static void glDrawCompressedGeomSUNX(GLint size, GLubyte *data) { + fprintf(stderr, "Warning: glDrawCompressedGeomSUNX() not supported\n") ; +} +#endif /* SOLARIS */ + + +JNIEXPORT +void JNICALL Java_javax_media_j3d_CompressedGeometryRetained_execute + (JNIEnv *env, jobject obj, jlong ctxInfo, jint version, jint bufferType, + jint bufferContents, jint renderFlags, jint offset, jint size, + jbyteArray geometry) +{ + GraphicsContextPropertiesInfo *ctxProperties = (GraphicsContextPropertiesInfo *)ctxInfo; + jlong ctx = ctxProperties->context; + + jbyte *cg = (*env)->GetPrimitiveArrayCritical(env, geometry, 0) ; + + /* ignore offset and pass header at 0 along with cg data */ + if(ctxProperties->geometry_compression_sunx) + glDrawCompressedGeomSUNX((GLint)(size + 48), (GLubyte *)cg) ; + + (*env)->ReleasePrimitiveArrayCritical(env, geometry, cg, 0) ; +} + + +JNIEXPORT +jboolean JNICALL Java_javax_media_j3d_CompressedGeometryRetained_decompressByRef + (JNIEnv *env, jobject obj, jlong ctxInfo) +{ + return JNI_FALSE ; +} + +JNIEXPORT +jboolean JNICALL Java_javax_media_j3d_CompressedGeometryRetained_decompressHW + (JNIEnv *env, jobject obj, jlong ctxInfo, jint majorVersion, jint minorVersion) +{ + /* + * Return true if hardware decompression is supported for the given + * version number of the compressed geometry. + */ + + GraphicsContextPropertiesInfo *ctxProperties = (GraphicsContextPropertiesInfo *)ctxInfo; + jlong ctx = ctxProperties->context; + + return + (ctxProperties->geometry_compression_accelerated == 1) && + ((majorVersion < ctxProperties->geometry_compression_accelerated_major_version) || + ((majorVersion == ctxProperties->geometry_compression_accelerated_major_version) && + (minorVersion <= ctxProperties->geometry_compression_accelerated_minor_version))) ; +} |