More progress... sound is playing (no visuals yet)

This commit is contained in:
Simon 2022-09-22 23:23:00 +01:00
parent f894efd296
commit 8c62569139
14 changed files with 157 additions and 109 deletions

View file

@ -1354,7 +1354,7 @@ void JKVR_finishEyeBuffer(int eye )
ovrFramebuffer_SetNone(); ovrFramebuffer_SetNone();
} }
bool JKVR_processMessageQueue() { void JKVR_processMessageQueue() {
for ( ; ; ) for ( ; ; )
{ {
ovrMessage message; ovrMessage message;
@ -1422,7 +1422,7 @@ bool JKVR_processMessageQueue() {
} }
void showLoadingIcon(); void showLoadingIcon();
void jni_shutdown(); extern "C" void jni_shutdown();
void JKVR_incrementFrameIndex(); void JKVR_incrementFrameIndex();
void shutdownVR(); void shutdownVR();
int VR_main( int argc, char* argv[] ); int VR_main( int argc, char* argv[] );
@ -1804,6 +1804,7 @@ Activity lifecycle
================================================================================ ================================================================================
*/ */
extern "C" {
jmethodID android_shutdown; jmethodID android_shutdown;
static JavaVM *jVM; static JavaVM *jVM;
@ -1834,7 +1835,7 @@ int JNI_OnLoad(JavaVM* vm, void* reserved)
return JNI_VERSION_1_4; return JNI_VERSION_1_4;
} }
JNIEXPORT jlong JNICALL Java_com_drbeef_jk2quest_GLES3JNILib_onCreate( JNIEnv * env, jclass activityClass, jobject activity, JNIEXPORT jlong JNICALL Java_com_drbeef_jkquest_GLES3JNILib_onCreate( JNIEnv * env, jclass activityClass, jobject activity,
jstring commandLineParams) jstring commandLineParams)
{ {
ALOGV( " GLES3JNILib::onCreate()" ); ALOGV( " GLES3JNILib::onCreate()" );
@ -1909,7 +1910,7 @@ JNIEXPORT jlong JNICALL Java_com_drbeef_jk2quest_GLES3JNILib_onCreate( JNIEnv *
} }
JNIEXPORT void JNICALL Java_com_drbeef_jk2quest_GLES3JNILib_onStart( JNIEnv * env, jobject obj, jlong handle, jobject obj1) JNIEXPORT void JNICALL Java_com_drbeef_jkquest_GLES3JNILib_onStart( JNIEnv * env, jobject obj, jlong handle, jobject obj1)
{ {
ALOGV( " GLES3JNILib::onStart()" ); ALOGV( " GLES3JNILib::onStart()" );
@ -1925,7 +1926,7 @@ JNIEXPORT void JNICALL Java_com_drbeef_jk2quest_GLES3JNILib_onStart( JNIEnv * en
ovrMessageQueue_PostMessage( &appThread->MessageQueue, &message ); ovrMessageQueue_PostMessage( &appThread->MessageQueue, &message );
} }
JNIEXPORT void JNICALL Java_com_drbeef_jk2quest_GLES3JNILib_onResume( JNIEnv * env, jobject obj, jlong handle ) JNIEXPORT void JNICALL Java_com_drbeef_jkquest_GLES3JNILib_onResume( JNIEnv * env, jobject obj, jlong handle )
{ {
ALOGV( " GLES3JNILib::onResume()" ); ALOGV( " GLES3JNILib::onResume()" );
ovrAppThread * appThread = (ovrAppThread *)((size_t)handle); ovrAppThread * appThread = (ovrAppThread *)((size_t)handle);
@ -1934,7 +1935,7 @@ JNIEXPORT void JNICALL Java_com_drbeef_jk2quest_GLES3JNILib_onResume( JNIEnv * e
ovrMessageQueue_PostMessage( &appThread->MessageQueue, &message ); ovrMessageQueue_PostMessage( &appThread->MessageQueue, &message );
} }
JNIEXPORT void JNICALL Java_com_drbeef_jk2quest_GLES3JNILib_onPause( JNIEnv * env, jobject obj, jlong handle ) JNIEXPORT void JNICALL Java_com_drbeef_jkquest_GLES3JNILib_onPause( JNIEnv * env, jobject obj, jlong handle )
{ {
ALOGV( " GLES3JNILib::onPause()" ); ALOGV( " GLES3JNILib::onPause()" );
ovrAppThread * appThread = (ovrAppThread *)((size_t)handle); ovrAppThread * appThread = (ovrAppThread *)((size_t)handle);
@ -1943,7 +1944,7 @@ JNIEXPORT void JNICALL Java_com_drbeef_jk2quest_GLES3JNILib_onPause( JNIEnv * en
ovrMessageQueue_PostMessage( &appThread->MessageQueue, &message ); ovrMessageQueue_PostMessage( &appThread->MessageQueue, &message );
} }
JNIEXPORT void JNICALL Java_com_drbeef_jk2quest_GLES3JNILib_onStop( JNIEnv * env, jobject obj, jlong handle ) JNIEXPORT void JNICALL Java_com_drbeef_jkquest_GLES3JNILib_onStop( JNIEnv * env, jobject obj, jlong handle )
{ {
ALOGV( " GLES3JNILib::onStop()" ); ALOGV( " GLES3JNILib::onStop()" );
ovrAppThread * appThread = (ovrAppThread *)((size_t)handle); ovrAppThread * appThread = (ovrAppThread *)((size_t)handle);
@ -1952,7 +1953,7 @@ JNIEXPORT void JNICALL Java_com_drbeef_jk2quest_GLES3JNILib_onStop( JNIEnv * env
ovrMessageQueue_PostMessage( &appThread->MessageQueue, &message ); ovrMessageQueue_PostMessage( &appThread->MessageQueue, &message );
} }
JNIEXPORT void JNICALL Java_com_drbeef_jk2quest_GLES3JNILib_onDestroy( JNIEnv * env, jobject obj, jlong handle ) JNIEXPORT void JNICALL Java_com_drbeef_jkquest_GLES3JNILib_onDestroy( JNIEnv * env, jobject obj, jlong handle )
{ {
ALOGV( " GLES3JNILib::onDestroy()" ); ALOGV( " GLES3JNILib::onDestroy()" );
ovrAppThread * appThread = (ovrAppThread *)((size_t)handle); ovrAppThread * appThread = (ovrAppThread *)((size_t)handle);
@ -1973,7 +1974,7 @@ Surface lifecycle
================================================================================ ================================================================================
*/ */
JNIEXPORT void JNICALL Java_com_drbeef_jk2quest_GLES3JNILib_onSurfaceCreated( JNIEnv * env, jobject obj, jlong handle, jobject surface ) JNIEXPORT void JNICALL Java_com_drbeef_jkquest_GLES3JNILib_onSurfaceCreated( JNIEnv * env, jobject obj, jlong handle, jobject surface )
{ {
ALOGV( " GLES3JNILib::onSurfaceCreated()" ); ALOGV( " GLES3JNILib::onSurfaceCreated()" );
ovrAppThread * appThread = (ovrAppThread *)((size_t)handle); ovrAppThread * appThread = (ovrAppThread *)((size_t)handle);
@ -1996,7 +1997,7 @@ JNIEXPORT void JNICALL Java_com_drbeef_jk2quest_GLES3JNILib_onSurfaceCreated( JN
ovrMessageQueue_PostMessage( &appThread->MessageQueue, &message ); ovrMessageQueue_PostMessage( &appThread->MessageQueue, &message );
} }
JNIEXPORT void JNICALL Java_com_drbeef_jk2quest_GLES3JNILib_onSurfaceChanged( JNIEnv * env, jobject obj, jlong handle, jobject surface ) JNIEXPORT void JNICALL Java_com_drbeef_jkquest_GLES3JNILib_onSurfaceChanged( JNIEnv * env, jobject obj, jlong handle, jobject surface )
{ {
ALOGV( " GLES3JNILib::onSurfaceChanged()" ); ALOGV( " GLES3JNILib::onSurfaceChanged()" );
ovrAppThread * appThread = (ovrAppThread *)((size_t)handle); ovrAppThread * appThread = (ovrAppThread *)((size_t)handle);
@ -2038,7 +2039,7 @@ JNIEXPORT void JNICALL Java_com_drbeef_jk2quest_GLES3JNILib_onSurfaceChanged( JN
} }
} }
JNIEXPORT void JNICALL Java_com_drbeef_jk2quest_GLES3JNILib_onSurfaceDestroyed( JNIEnv * env, jobject obj, jlong handle ) JNIEXPORT void JNICALL Java_com_drbeef_jkquest_GLES3JNILib_onSurfaceDestroyed( JNIEnv * env, jobject obj, jlong handle )
{ {
ALOGV( " GLES3JNILib::onSurfaceDestroyed()" ); ALOGV( " GLES3JNILib::onSurfaceDestroyed()" );
ovrAppThread * appThread = (ovrAppThread *)((size_t)handle); ovrAppThread * appThread = (ovrAppThread *)((size_t)handle);
@ -2050,3 +2051,5 @@ JNIEXPORT void JNICALL Java_com_drbeef_jk2quest_GLES3JNILib_onSurfaceDestroyed(
appThread->NativeWindow = NULL; appThread->NativeWindow = NULL;
} }
}

View file

@ -65,7 +65,7 @@ void JKVR_HapticEndFrame();
void JKVR_HapticStopEvent(const char* event); void JKVR_HapticStopEvent(const char* event);
void JKVR_HapticEnable(); void JKVR_HapticEnable();
void JKVR_HapticDisable(); void JKVR_HapticDisable();
bool JKVR_processMessageQueue(); void JKVR_processMessageQueue();
void JKVR_FrameSetup(); void JKVR_FrameSetup();
void JKVR_setUseScreenLayer(bool use); void JKVR_setUseScreenLayer(bool use);
void JKVR_processHaptics(); void JKVR_processHaptics();

View file

@ -1,7 +1,7 @@
LOCAL_PATH := $(call my-dir) LOCAL_PATH := $(call my-dir)
JK3_BASE_CFLAGS = -O1 -DHAVE_GLES -DFINAL_BUILD -fexceptions -Wall -Wno-write-strings -Wno-comment -fno-caller-saves -fno-tree-vectorize -Wno-unused-but-set-variable JK3_BASE_CFLAGS = -DHAVE_GLES -DFINAL_BUILD -fexceptions -Wall -Wno-write-strings -Wno-comment -fno-caller-saves -fno-tree-vectorize -Wno-unused-but-set-variable
JK3_BASE_CPPFLAGS = -fvisibility-inlines-hidden -Wno-invalid-offsetof JK3_BASE_CPPFLAGS = -fvisibility-inlines-hidden -Wno-invalid-offsetof
JK3_BASE_LDLIBS = JK3_BASE_LDLIBS =

View file

@ -23,7 +23,7 @@ LOCAL_STATIC_LIBRARIES := sigc libzip libpng libminizip
LOCAL_SHARED_LIBRARIES := vrapi gl4es LOCAL_SHARED_LIBRARIES := vrapi gl4es
LOCAL_C_INCLUDES := $(JK3_BASE_C_INCLUDES) $(TOP_DIR) $(GL4ES_PATH) $(GL4ES_PATH)/include $(SUPPORT_LIBS)/minizip/include $(SPDir)/rd-vanilla $(SPDir)/rd-common LOCAL_C_INCLUDES := $(JK3_BASE_C_INCLUDES) $(TOP_DIR) $(TOP_DIR)/JKVR $(GL4ES_PATH) $(GL4ES_PATH)/include $(SUPPORT_LIBS)/minizip/include $(SPDir)/rd-vanilla $(SPDir)/rd-common
############################################################################# #############################################################################

View file

@ -297,10 +297,20 @@ void Sys_In_Restart_f( void )
#endif #endif
} }
void Sys_Init (void) { void Sys_Init( void ) {
Cmd_AddCommand ("in_restart", Sys_In_Restart_f); Cmd_AddCommand ("in_restart", Sys_In_Restart_f);
Cvar_Set( "arch", "arm" ); Cvar_Get( "arch", OS_STRING " " ARCH_STRING, CVAR_ROM );
Cvar_Set( "username", Sys_GetCurrentUser( ) ); Cvar_Get( "username", Sys_GetCurrentUser(), CVAR_ROM );
com_unfocused = Cvar_Get( "com_unfocused", "0", CVAR_ROM );
com_minimized = Cvar_Get( "com_minimized", "0", CVAR_ROM );
#ifdef _JK2EXE
com_maxfps = Cvar_Get ("com_maxfps", "125", CVAR_ARCHIVE );
#else
com_maxfps = Cvar_Get( "com_maxfps", "125", CVAR_ARCHIVE, "Maximum frames per second" );
#endif
com_maxfpsUnfocused = Cvar_Get( "com_maxfpsUnfocused", "0", CVAR_ARCHIVE_ND );
com_maxfpsMinimized = Cvar_Get( "com_maxfpsMinimized", "50", CVAR_ARCHIVE_ND );
} }
void Sys_Exit( int ex ) __attribute__((noreturn)); void Sys_Exit( int ex ) __attribute__((noreturn));
@ -699,9 +709,13 @@ void *Sys_LoadDll( const char *name, qboolean useSystemLib )
if ( !*binarypath ) if ( !*binarypath )
binarypath = "."; binarypath = ".";
char lib_path[512];
char *libdir = (char*)getenv("JK_LIBDIR");
const char *searchPaths[] = { const char *searchPaths[] = {
libdir,
binarypath, binarypath,
basepath, basepath
}; };
const size_t numPaths = ARRAY_LEN( searchPaths ); const size_t numPaths = ARRAY_LEN( searchPaths );
@ -712,7 +726,7 @@ void *Sys_LoadDll( const char *name, qboolean useSystemLib )
continue; continue;
Com_Printf( "Trying to load \"%s\" from \"%s\"...\n", name, libDir ); Com_Printf( "Trying to load \"%s\" from \"%s\"...\n", name, libDir );
char *fn = va( "%s%c%s", libDir, PATH_SEP, name ); char *fn = va( "%s%clib%s", libDir, PATH_SEP, name );
dllhandle = Sys_LoadLibrary( fn ); dllhandle = Sys_LoadLibrary( fn );
if ( dllhandle ) if ( dllhandle )
return dllhandle; return dllhandle;
@ -749,7 +763,7 @@ void *Sys_LoadGameDll( const char *name, void *(QDECL **moduleAPI)(int, ...) )
char lib_path[512]; char lib_path[512];
char *libdir = (char*)getenv("JK_GAMELIBDIR"); char *libdir = (char*)getenv("JK_LIBDIR");
sprintf(lib_path,"%s/lib%s", libdir,filename); sprintf(lib_path,"%s/lib%s", libdir,filename);
libHandle = dlopen (lib_path, RTLD_LAZY ); libHandle = dlopen (lib_path, RTLD_LAZY );

View file

@ -33,6 +33,7 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.
#include "qcommon/stringed_ingame.h" #include "qcommon/stringed_ingame.h"
#include "sys/sys_loadlib.h" #include "sys/sys_loadlib.h"
#include "qcommon/ojk_saved_game.h" #include "qcommon/ojk_saved_game.h"
#include <JKVR/VrCommon.h>
#define RETRANSMIT_TIMEOUT 3000 // time between connection packet retransmits #define RETRANSMIT_TIMEOUT 3000 // time between connection packet retransmits
@ -1072,12 +1073,7 @@ static CMiniHeap *GetG2VertSpaceServer( void ) {
return G2VertSpaceServer; return G2VertSpaceServer;
} }
// NOTENOTE: If you change the output name of rd-vanilla, change this define too! #define DEFAULT_RENDER_LIBRARY "rd-gles"
#ifdef JK2_MODE
#define DEFAULT_RENDER_LIBRARY "rdjosp-vanilla"
#else
#define DEFAULT_RENDER_LIBRARY "rdsp-vanilla"
#endif
void CL_InitRef( void ) { void CL_InitRef( void ) {
refexport_t *ret; refexport_t *ret;
@ -1187,6 +1183,8 @@ void CL_InitRef( void ) {
rit.saved_game = &ojk::SavedGame::get_instance(); rit.saved_game = &ojk::SavedGame::get_instance();
rit.JKVR_prepareEyeBuffer = JKVR_prepareEyeBuffer;
ret = GetRefAPI( REF_API_VERSION, &rit ); ret = GetRefAPI( REF_API_VERSION, &rit );
if ( !ret ) { if ( !ret ) {

View file

@ -28,6 +28,7 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.
#include "client.h" #include "client.h"
#include "client_ui.h" #include "client_ui.h"
#include <JKVR/VrCommon.h>
extern console_t con; extern console_t con;
@ -498,19 +499,45 @@ void SCR_UpdateScreen( void ) {
// that case. // that case.
if ( cls.uiStarted ) if ( cls.uiStarted )
{ {
// if running in stereo, we need to draw the frame twice JKVR_FrameSetup();
if ( cls.glconfig.stereoEnabled ) {
SCR_DrawScreenField( STEREO_LEFT ); JKVR_processMessageQueue();
SCR_DrawScreenField( STEREO_RIGHT );
} else { //Get controller state here
SCR_DrawScreenField( STEREO_CENTER ); JKVR_getHMDOrientation();
JKVR_getTrackedRemotesOrientation();
JKVR_processHaptics();
//Draw twice for Quest
SCR_DrawScreenField( STEREO_LEFT );
//This won't perform the submit eye buffers
{
if (com_speeds->integer) {
re.EndFrame(&time_frontend, &time_backend);
} else {
re.EndFrame(NULL, NULL);
}
} }
JKVR_finishEyeBuffer(0);
SCR_DrawScreenField( STEREO_RIGHT );
//This will perform the submit eye buffers
if ( com_speeds->integer ) { if ( com_speeds->integer ) {
re.EndFrame( &time_frontend, &time_backend ); re.EndFrame( &time_frontend, &time_backend );
} else { } else {
re.EndFrame( NULL, NULL ); re.EndFrame( NULL, NULL );
} }
JKVR_finishEyeBuffer(1);
//And we're done
re.SubmitStereoFrame();
recursive = 0;
} }
recursive = 0; recursive = 0;

View file

@ -127,6 +127,9 @@ typedef struct {
qboolean *(*gbAlreadyDoingLoad) ( void ); qboolean *(*gbAlreadyDoingLoad) ( void );
int (*com_frameTime) ( void ); int (*com_frameTime) ( void );
//JKVR Functions
void (*JKVR_prepareEyeBuffer) (int eye );
} refimport_t; } refimport_t;
extern refimport_t ri; extern refimport_t ri;
@ -202,6 +205,8 @@ typedef struct {
// if the pointers are not NULL, timing info will be returned // if the pointers are not NULL, timing info will be returned
void (*EndFrame)( int *frontEndMsec, int *backEndMsec ); void (*EndFrame)( int *frontEndMsec, int *backEndMsec );
void ( *SubmitStereoFrame )( );
qboolean (*ProcessDissolve)(void); qboolean (*ProcessDissolve)(void);
qboolean (*InitDissolve)(qboolean bForceCircularExtroWipe); qboolean (*InitDissolve)(qboolean bForceCircularExtroWipe);

View file

@ -1403,6 +1403,7 @@ const void *RB_DrawSurfs( const void *data ) {
return (const void *)(cmd + 1); return (const void *)(cmd + 1);
} }
void JKVR_prepareEyeBuffer(int eye );
/* /*
============= =============
@ -1414,66 +1415,20 @@ const void *RB_DrawBuffer( const void *data ) {
const drawBufferCommand_t *cmd; const drawBufferCommand_t *cmd;
cmd = (const drawBufferCommand_t *)data; cmd = (const drawBufferCommand_t *)data;
/*
#ifndef HAVE_GLES #ifndef HAVE_GLES
qglDrawBuffer( cmd->buffer ); qglDrawBuffer( cmd->buffer );
#endif #endif
*/
ri.JKVR_prepareEyeBuffer(cmd->buffer);
// clear screen for debugging // clear screen for debugging
if (!( backEnd.refdef.rdflags & RDF_NOWORLDMODEL ) && tr.world && tr.refdef.rdflags & RDF_doLAGoggles) if ( r_clear->integer ) {
{ qglClearColor( 0, 0, 0, 1 );
const jk_fog_t *fog = &tr.world->fogs[tr.world->numfogs];
qglClearColor(fog->parms.color[0], fog->parms.color[1], fog->parms.color[2], 1.0f );
qglClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
}
else if (!( backEnd.refdef.rdflags & RDF_NOWORLDMODEL ) && tr.world && tr.world->globalFog != -1 && tr.sceneCount)//don't clear during menus, wait for real scene
{
const jk_fog_t *fog = &tr.world->fogs[tr.world->globalFog];
qglClearColor(fog->parms.color[0], fog->parms.color[1], fog->parms.color[2], 1.0f );
qglClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
}
else if ( r_clear->integer )
{ // clear screen for debugging
int i = r_clear->integer;
if (i == 42) {
i = Q_irand(0,8);
}
switch (i)
{
default:
qglClearColor( 1, 0, 0.5, 1 );
break;
case 1:
qglClearColor( 1.0, 0.0, 0.0, 1.0); //red
break;
case 2:
qglClearColor( 0.0, 1.0, 0.0, 1.0); //green
break;
case 3:
qglClearColor( 1.0, 1.0, 0.0, 1.0); //yellow
break;
case 4:
qglClearColor( 0.0, 0.0, 1.0, 1.0); //blue
break;
case 5:
qglClearColor( 0.0, 1.0, 1.0, 1.0); //cyan
break;
case 6:
qglClearColor( 1.0, 0.0, 1.0, 1.0); //magenta
break;
case 7:
qglClearColor( 1.0, 1.0, 1.0, 1.0); //white
break;
case 8:
qglClearColor( 0.0, 0.0, 0.0, 1.0); //black
break;
}
qglClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); qglClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
} }
return (const void *)(cmd + 1); return (const void *)( cmd + 1 );
} }
/* /*
@ -1571,6 +1526,32 @@ void RB_ShowImages( void ) {
} }
/*
=============
RB_Flush
=============
*/
const void *RB_Flush( const void *data ) {
const swapBuffersCommand_t *cmd;
// finish any 2D drawing if needed
if ( tess.numIndexes ) {
RB_EndSurface();
}
// texture swapping test
if ( r_showImages->integer ) {
RB_ShowImages();
}
cmd = (const swapBuffersCommand_t *)data;
backEnd.projection2D = qfalse;
return (const void *)( cmd + 1 );
}
/* /*
============= =============
RB_SwapBuffers RB_SwapBuffers
@ -1688,6 +1669,9 @@ void RB_ExecuteRenderCommands( const void *data ) {
case RC_WORLD_EFFECTS: case RC_WORLD_EFFECTS:
data = RB_WorldEffects( data ); data = RB_WorldEffects( data );
break; break;
case RC_FLUSH:
data = RB_Flush( data );
break;
case RC_END_OF_LIST: case RC_END_OF_LIST:
default: default:
// stop rendering // stop rendering

View file

@ -383,6 +383,7 @@ void RE_BeginFrame( stereoFrame_t stereoFrame ) {
// //
// do overdraw measurement // do overdraw measurement
// //
#ifndef HAVE_GLES
if ( r_measureOverdraw->integer ) if ( r_measureOverdraw->integer )
{ {
if ( glConfig.stencilBits < 4 ) if ( glConfig.stencilBits < 4 )
@ -417,6 +418,7 @@ void RE_BeginFrame( stereoFrame_t stereoFrame ) {
r_measureOverdraw->modified = qfalse; r_measureOverdraw->modified = qfalse;
} }
} }
#endif
// //
// texturemode stuff // texturemode stuff
@ -457,23 +459,13 @@ void RE_BeginFrame( stereoFrame_t stereoFrame ) {
} }
cmd->commandId = RC_DRAW_BUFFER; cmd->commandId = RC_DRAW_BUFFER;
if ( glConfig.stereoEnabled ) { {
if ( stereoFrame == STEREO_LEFT ) { if ( stereoFrame == STEREO_LEFT ) {
cmd->buffer = (int)0; cmd->buffer = (int)0;
} else if ( stereoFrame == STEREO_RIGHT ) { } else if ( stereoFrame == STEREO_RIGHT ) {
cmd->buffer = (int)1; cmd->buffer = (int)1;
} else { } else {
Com_Error( ERR_FATAL, "RE_BeginFrame: Stereo is enabled, but stereoFrame was %i", stereoFrame ); ri.Error( ERR_FATAL, "RE_BeginFrame: Stereo is enabled, but stereoFrame was %i", stereoFrame );
}
} else {
if ( stereoFrame != STEREO_CENTER ) {
Com_Error( ERR_FATAL, "RE_BeginFrame: Stereo is disabled, but stereoFrame was %i", stereoFrame );
}
// if ( !Q_stricmp( r_drawBuffer->string, "GL_FRONT" ) ) {
// cmd->buffer = (int)GL_FRONT;
// } else
{
cmd->buffer = (int)GL_BACK;
} }
} }
} }
@ -487,26 +479,26 @@ Returns the number of msec spent in the back end
============= =============
*/ */
void RE_EndFrame( int *frontEndMsec, int *backEndMsec ) { void RE_EndFrame( int *frontEndMsec, int *backEndMsec ) {
swapBuffersCommand_t *cmd; swapBuffersCommand_t *cmd;
if ( !tr.registered ) { if ( !tr.registered ) {
return; return;
} }
cmd = (swapBuffersCommand_t *) R_GetCommandBufferReserved( sizeof( *cmd ), 0 );
if ( !cmd ) { cmd = (swapBuffersCommand_t*)R_GetCommandBuffer(sizeof(*cmd));
if (!cmd) {
return; return;
} }
cmd->commandId = RC_SWAP_BUFFERS;
R_IssueRenderCommands( qtrue ); cmd->commandId = RC_FLUSH;
R_InitNextFrame(); R_IssueRenderCommands( qfalse );
if ( frontEndMsec ) { if (frontEndMsec) {
*frontEndMsec = tr.frontEndMsec; *frontEndMsec = tr.frontEndMsec;
} }
tr.frontEndMsec = 0; tr.frontEndMsec = 0;
if ( backEndMsec ) { if (backEndMsec) {
*backEndMsec = backEnd.pc.msec; *backEndMsec = backEnd.pc.msec;
} }
backEnd.pc.msec = 0; backEnd.pc.msec = 0;
@ -516,3 +508,20 @@ void RE_EndFrame( int *frontEndMsec, int *backEndMsec ) {
styleUpdated[i] = false; styleUpdated[i] = false;
} }
} }
void RE_SubmitStereoFrame( ) {
swapBuffersCommand_t *cmd;
if ( !tr.registered ) {
return;
}
cmd = (swapBuffersCommand_t*)R_GetCommandBuffer(sizeof(*cmd));
if (!cmd) {
return;
}
cmd->commandId = RC_SWAP_BUFFERS;
R_IssueRenderCommands( qtrue );
}

View file

@ -324,6 +324,10 @@ void R_Splash()
static void GLW_InitTextureCompression( void ) static void GLW_InitTextureCompression( void )
{ {
glConfig.textureCompression = TC_NONE;
return;
bool newer_tc, old_tc; bool newer_tc, old_tc;
// Check for available tc methods. // Check for available tc methods.
newer_tc = ri.GL_ExtensionSupported("GL_ARB_texture_compression") && ri.GL_ExtensionSupported("GL_EXT_texture_compression_s3tc"); newer_tc = ri.GL_ExtensionSupported("GL_ARB_texture_compression") && ri.GL_ExtensionSupported("GL_EXT_texture_compression_s3tc");
@ -1564,7 +1568,7 @@ void R_Register( void )
// //
r_allowExtensions = ri.Cvar_Get( "r_allowExtensions", "1", CVAR_ARCHIVE_ND | CVAR_LATCH ); r_allowExtensions = ri.Cvar_Get( "r_allowExtensions", "1", CVAR_ARCHIVE_ND | CVAR_LATCH );
r_ext_compressed_textures = ri.Cvar_Get( "r_ext_compress_textures", "1", CVAR_ARCHIVE_ND | CVAR_LATCH ); r_ext_compressed_textures = ri.Cvar_Get( "r_ext_compress_textures", "0", CVAR_ARCHIVE_ND | CVAR_LATCH );
r_ext_compressed_lightmaps = ri.Cvar_Get( "r_ext_compress_lightmaps", "0", CVAR_ARCHIVE_ND | CVAR_LATCH ); r_ext_compressed_lightmaps = ri.Cvar_Get( "r_ext_compress_lightmaps", "0", CVAR_ARCHIVE_ND | CVAR_LATCH );
r_ext_preferred_tc_method = ri.Cvar_Get( "r_ext_preferred_tc_method", "0", CVAR_ARCHIVE_ND | CVAR_LATCH ); r_ext_preferred_tc_method = ri.Cvar_Get( "r_ext_preferred_tc_method", "0", CVAR_ARCHIVE_ND | CVAR_LATCH );
r_ext_gamma_control = ri.Cvar_Get( "r_ext_gamma_control", "1", CVAR_ARCHIVE_ND | CVAR_LATCH ); r_ext_gamma_control = ri.Cvar_Get( "r_ext_gamma_control", "1", CVAR_ARCHIVE_ND | CVAR_LATCH );
@ -2087,6 +2091,7 @@ extern "C" Q_EXPORT refexport_t* QDECL GetRefAPI ( int apiVersion, refimport_t *
REX(BeginFrame); REX(BeginFrame);
REX(EndFrame); REX(EndFrame);
REX(SubmitStereoFrame);
REX(ProcessDissolve); REX(ProcessDissolve);
REX(InitDissolve); REX(InitDissolve);

View file

@ -1784,6 +1784,7 @@ typedef enum {
RC_DRAW_BUFFER, RC_DRAW_BUFFER,
RC_SWAP_BUFFERS, RC_SWAP_BUFFERS,
RC_WORLD_EFFECTS, RC_WORLD_EFFECTS,
RC_FLUSH
} renderCommand_t; } renderCommand_t;
@ -1824,6 +1825,7 @@ void RE_LAGoggles( void );
void RE_Scissor ( float x, float y, float w, float h); void RE_Scissor ( float x, float y, float w, float h);
void RE_BeginFrame( stereoFrame_t stereoFrame ); void RE_BeginFrame( stereoFrame_t stereoFrame );
void RE_EndFrame( int *frontEndMsec, int *backEndMsec ); void RE_EndFrame( int *frontEndMsec, int *backEndMsec );
void RE_SubmitStereoFrame( );
qboolean RE_ProcessDissolve(void); qboolean RE_ProcessDissolve(void);
qboolean RE_InitDissolve(qboolean bForceCircularExtroWipe); qboolean RE_InitDissolve(qboolean bForceCircularExtroWipe);

View file

@ -0,0 +1 @@
ja

View file

@ -40,7 +40,7 @@ import static android.system.Os.setenv;
// Load the gles3jni library right away to make sure JNI_OnLoad() gets called as the very first thing. // Load the gles3jni library right away to make sure JNI_OnLoad() gets called as the very first thing.
static static
{ {
System.loadLibrary( "jk2_client" ); System.loadLibrary( "openjk_sp" );
} }
private static final String TAG = "JKQuest"; private static final String TAG = "JKQuest";
@ -186,7 +186,7 @@ import static android.system.Os.setenv;
// copy_asset("/sdcard/JKQuest/Main", "sp_vpak8.pk3", false); // copy_asset("/sdcard/JKQuest/Main", "sp_vpak8.pk3", false);
//Read these from a file and pass through //Read these from a file and pass through
commandLineParams = new String("jk3"); commandLineParams = new String("ja");
//See if user is trying to use command line params //See if user is trying to use command line params
if (new File("/sdcard/JKQuest/commandline.txt").exists()) // should exist! if (new File("/sdcard/JKQuest/commandline.txt").exists()) // should exist!
@ -211,7 +211,7 @@ import static android.system.Os.setenv;
} }
try { try {
setenv("JK_GAMELIBDIR", getApplicationInfo().nativeLibraryDir, true); setenv("JK_LIBDIR", getApplicationInfo().nativeLibraryDir, true);
} }
catch (Exception e) catch (Exception e)
{ {