JNIEXPORT jfloatArray JNICALL JNIFUNCTION(arwQueryMarkerTransformation(JNIEnv *env, jobject obj, jint markerUID)) 
{
	float trans[16];
    
	if (arwQueryMarkerTransformation(markerUID, trans)) return glArrayToJava(env, trans, 16);
	return NULL;
}
JNIEXPORT void JNICALL JNIFUNCTION_DEMO(demoDrawFrame(JNIEnv* env, jobject obj)) {
	
	glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 

    // Set the projection matrix to that provided by ARToolKit.
	float proj[16];
	arwGetProjectionMatrix(proj);
	glMatrixMode(GL_PROJECTION);
	glLoadMatrixf(proj);
	glMatrixMode(GL_MODELVIEW);
	
	glStateCacheEnableDepthTest();
	glStateCacheEnableLighting();	
	glEnable(GL_LIGHT0);
	
	for (int i = 0; i < NUM_MODELS; i++) {		
		models[i].visible = arwQueryMarkerTransformation(models[i].patternID, models[i].transformationMatrix);		
			
		if (models[i].visible) {					
			glLoadMatrixf(models[i].transformationMatrix);		
			
			glLightfv(GL_LIGHT0, GL_AMBIENT, lightAmbient);
			glLightfv(GL_LIGHT0, GL_DIFFUSE, lightDiffuse);
			glLightfv(GL_LIGHT0, GL_POSITION, lightPosition);
			
			glmDrawArrays(models[i].obj, 0);
		}

	}
	
}