/* ================= GL_CreateContext ================= */ qboolean GL_CreateContext( void ) { int colorBits[3]; #ifdef XASH_NANOGL nanoGL_Init(); #endif if( ( glw_state.context = SDL_GL_CreateContext( host.hWnd ) ) == NULL) { MsgDev(D_ERROR, "GL_CreateContext: %s\n", SDL_GetError()); return GL_DeleteContext(); } SDL_GL_GetAttribute( SDL_GL_RED_SIZE, &colorBits[0] ); SDL_GL_GetAttribute( SDL_GL_GREEN_SIZE, &colorBits[1] ); SDL_GL_GetAttribute( SDL_GL_BLUE_SIZE, &colorBits[2] ); glConfig.color_bits = colorBits[0] + colorBits[1] + colorBits[2]; SDL_GL_GetAttribute( SDL_GL_ALPHA_SIZE, &glConfig.alpha_bits ); SDL_GL_GetAttribute( SDL_GL_DEPTH_SIZE, &glConfig.depth_bits ); SDL_GL_GetAttribute( SDL_GL_STENCIL_SIZE, &glConfig.stencil_bits ); glState.stencilEnabled = glConfig.stencil_bits ? true : false; SDL_GL_GetAttribute( SDL_GL_MULTISAMPLESAMPLES, &glConfig.msaasamples ); #ifdef XASH_WES void wes_init(); wes_init(); #endif return true; }
/* ===================================================== JNI callbacks On application start, setenv and onNativeResize called from ui thread to set up engine configuration nativeInit called directly from engine thread and will not return until exit. These functions may be called from other threads at any time: nativeKey nativeTouch onNativeResize nativeString nativeSetPause ===================================================== */ JAVA_EXPORT int Java_in_celest_xash3d_XashActivity_nativeInit(JNIEnv* env, jclass cls, jobject array) { int i; int argc; int status; /* Prepare the arguments. */ int len = (*env)->GetArrayLength(env, array); char* argv[1 + len + 1]; argc = 0; argv[argc++] = strdup("app_process"); for (i = 0; i < len; ++i) { const char* utf; char* arg = NULL; jstring string = (*env)->GetObjectArrayElement(env, array, i); if (string) { utf = (*env)->GetStringUTFChars(env, string, 0); if (utf) { arg = strdup(utf); (*env)->ReleaseStringUTFChars(env, string, utf); } (*env)->DeleteLocalRef(env, string); } if (!arg) { arg = strdup(""); } argv[argc++] = arg; } argv[argc] = NULL; /* Init callbacks. */ jni.env = env; jni.actcls = (*env)->FindClass(env, "in/celest/xash3d/XashActivity"); jni.swapBuffers = (*env)->GetStaticMethodID(env, jni.actcls, "swapBuffers", "()V"); jni.toggleEGL = (*env)->GetStaticMethodID(env, jni.actcls, "toggleEGL", "(I)V"); jni.enableTextInput = (*env)->GetStaticMethodID(env, jni.actcls, "showKeyboard", "(I)V"); jni.vibrate = (*env)->GetStaticMethodID(env, jni.actcls, "vibrate", "(I)V" ); jni.messageBox = (*env)->GetStaticMethodID(env, jni.actcls, "messageBox", "(Ljava/lang/String;Ljava/lang/String;)V"); jni.createGLContext = (*env)->GetStaticMethodID(env, jni.actcls, "createGLContext", "()Z"); nanoGL_Init(); /* Run the application. */ status = Host_Main( argc, (const char**)argv, getenv("XASH3D_GAMEDIR"), false, NULL ); /* Release the arguments. */ for (i = 0; i < argc; ++i) free(argv[i]); return status; }
/* ================= GL_CreateContext ================= */ qboolean GL_CreateContext( void ) { nanoGL_Init(); /*if( !Sys_CheckParm( "-gldebug" ) || host.developer < 1 ) // debug bit the kills perfomance return true;*/ #ifdef XASH_SDL if( ( glw_state.context = SDL_GL_CreateContext( host.hWnd ) ) == NULL) { MsgDev(D_ERROR, "GL_CreateContext: %s\n", SDL_GetError()); return GL_DeleteContext(); } #endif return true; }
/*JNIEXPORT jint JNICALL JNIOnLoad(JavaVM * vm, void*) { gVM = vm; return JNI_VERSION_1_6; }*/ int Java_in_celest_xash3d_XashActivity_nativeInit(JNIEnv* env, jclass cls, jobject array) { int i; int argc; int status; /* Prepare the arguments. */ int len = (*env)->GetArrayLength(env, array); char* argv[1 + len + 1]; argc = 0; argv[argc++] = strdup("app_process"); for (i = 0; i < len; ++i) { const char* utf; char* arg = NULL; jstring string = (*env)->GetObjectArrayElement(env, array, i); if (string) { utf = (*env)->GetStringUTFChars(env, string, 0); if (utf) { arg = strdup(utf); (*env)->ReleaseStringUTFChars(env, string, utf); } (*env)->DeleteLocalRef(env, string); } if (!arg) { arg = strdup(""); } argv[argc++] = arg; } argv[argc] = NULL; /* Init callbacks. */ gEnv = env; gClass = (*env)->FindClass(env, "in/celest/xash3d/XashActivity"); gSwapBuffers = (*env)->GetStaticMethodID(env, gClass, "swapBuffers", "()V"); nanoGL_Init(); /* Run the application. */ status = Host_Main(argc, argv, GAME_PATH, false, NULL); /* Release the arguments. */ for (i = 0; i < argc; ++i) { free(argv[i]); } return status; }