Add -gl_stereoview option for selecting stereo viewport modes.
This commit is contained in:
parent
f5d2dfa7ce
commit
509da82ee8
|
@ -102,6 +102,7 @@ struct CArg : prohibit_void_ptr<CArg>
|
|||
bool DbgGlRGBA2Ok;
|
||||
unsigned OglSyncWait;
|
||||
bool OglStereo;
|
||||
int OglStereoView;
|
||||
#else
|
||||
bool DbgSdlHWSurface;
|
||||
bool DbgSdlASyncBlit;
|
||||
|
|
|
@ -205,6 +205,7 @@ extern game_window *Game_wind;
|
|||
|
||||
void game();
|
||||
void init_game();
|
||||
void init_stereo();
|
||||
void init_cockpit();
|
||||
extern void PALETTE_FLASH_ADD(int dr, int dg, int db);
|
||||
|
||||
|
|
|
@ -193,10 +193,15 @@ namespace dsx {
|
|||
void init_stereo()
|
||||
{
|
||||
// init stereo options
|
||||
if (CGameArg.OglStereo) {
|
||||
VR_stereo = true;
|
||||
// VR_half_width = true;
|
||||
VR_half_height = true;
|
||||
if (CGameArg.OglStereo || CGameArg.OglStereoView) {
|
||||
if (!VR_stereo && !VR_eye_offset)
|
||||
VR_stereo = (CGameArg.OglStereoView) ? CGameArg.OglStereoView % 4 : true;
|
||||
switch (VR_stereo) {
|
||||
case 0: VR_half_width = VR_half_height = false; break;
|
||||
case 1: VR_half_width = false; VR_half_height = true; break;
|
||||
case 2: VR_half_width = true; VR_half_height = false; break;
|
||||
case 3: VR_half_width = VR_half_height = true; break;
|
||||
}
|
||||
VR_eye_width = (F1_0 * 7) / 10; // Descent 1.5 defaults
|
||||
VR_eye_offset = (VR_half_width) ? -6 : -12;
|
||||
PlayerCfg.CockpitMode[1] = CM_FULL_SCREEN;
|
||||
|
|
|
@ -931,13 +931,9 @@ static window_event_result HandleSystemKey(int key)
|
|||
break;
|
||||
case KEY_SHIFTED + KEY_F8:
|
||||
case KEY_SHIFTED + KEY_ALTED + KEY_F8:
|
||||
if (CGameArg.OglStereo)
|
||||
if (CGameArg.OglStereo || CGameArg.OglStereoView) {
|
||||
++VR_stereo %= 4;
|
||||
switch (VR_stereo) {
|
||||
case 0: VR_half_width = VR_half_height = false; break;
|
||||
case 1: VR_half_width = false; VR_half_height = true; break;
|
||||
case 2: VR_half_width = true; VR_half_height = false; break;
|
||||
case 3: VR_half_width = VR_half_height = true; break;
|
||||
init_stereo();
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
|
@ -206,6 +206,10 @@ static void print_commandline_help()
|
|||
VERB(" -gl_syncwait <n> Wait interval (ms) for sync mode 2 (default: " DXX_STRINGIZE(OGL_SYNC_WAIT_DEFAULT) ")\n") \
|
||||
VERB(" -gl_darkedges Re-enable dark edges around filtered textures (as present in earlier versions of the engine)\n") \
|
||||
VERB(" -gl_stereo Enable OpenGL stereo quad buffering, if available\n") \
|
||||
VERB(" -gl_stereoview <n> Select OpenGL stereo viewport mode\n") \
|
||||
VERB(" 1: above/below half-height format\n") \
|
||||
VERB(" 2: side/by/side half-width format\n") \
|
||||
VERB(" 3: side/by/side half-size format, normal aspect ratio\n") \
|
||||
) \
|
||||
DXX_if_defined_01(DXX_USE_UDP, ( \
|
||||
VERB("\n Multiplayer:\n\n") \
|
||||
|
|
|
@ -295,6 +295,8 @@ static void ReadCmdArgs(Inilist &ini, Arglist &Args)
|
|||
CGameArg.OglDarkEdges = true;
|
||||
else if (!d_stricmp(p, "-gl_stereo"))
|
||||
CGameArg.OglStereo = true;
|
||||
else if (!d_stricmp(p, "-gl_stereoview"))
|
||||
CGameArg.OglStereoView = arg_integer(pp, end);
|
||||
#endif
|
||||
|
||||
// Multiplayer Options
|
||||
|
|
Loading…
Reference in a new issue