mirror of
https://github.com/ZDoom/gzdoom-gles.git
synced 2024-12-19 00:41:35 +00:00
52 lines
1.4 KiB
C++
52 lines
1.4 KiB
C++
#include "gl/stereo3d/gl_stereo3d.h"
|
|
#include "gl/stereo3d/gl_stereo_leftright.h"
|
|
#include "gl/stereo3d/gl_anaglyph.h"
|
|
#include "gl/system/gl_cvars.h"
|
|
|
|
// Set up 3D-specific console variables:
|
|
CVAR(Int, vr_mode, 0, CVAR_GLOBALCONFIG)
|
|
// intraocular distance in meters
|
|
CVAR(Float, vr_ipd, 0.062f, CVAR_ARCHIVE|CVAR_GLOBALCONFIG) // METERS
|
|
CVAR(Float, vr_screendist, 0.80f, CVAR_ARCHIVE | CVAR_GLOBALCONFIG) // METERS
|
|
CVAR(Float, vr_hunits_per_meter, 41.0f, CVAR_ARCHIVE | CVAR_GLOBALCONFIG) // METERS
|
|
|
|
// Manage changing of 3D modes:
|
|
namespace s3d {
|
|
|
|
// Initialize static member
|
|
Stereo3DMode const * Stereo3DMode::currentStereo3DMode = nullptr;
|
|
|
|
/* static */
|
|
void Stereo3DMode::setCurrentMode(const Stereo3DMode& mode) {
|
|
Stereo3DMode::currentStereo3DMode = &mode;
|
|
}
|
|
|
|
/* static */
|
|
const Stereo3DMode& Stereo3DMode::getCurrentMode()
|
|
{
|
|
// NOTE: Ensure that these vr_mode values correspond to the ones in wadsrc/static/menudef.z
|
|
switch (vr_mode)
|
|
{
|
|
case 1:
|
|
setCurrentMode(GreenMagenta::getInstance(vr_ipd));
|
|
break;
|
|
case 2:
|
|
setCurrentMode(RedCyan::getInstance(vr_ipd));
|
|
break;
|
|
// TODO: missing indices 3, 4 for not-yet-implemented side-by-side modes, to match values from GZ3Doom
|
|
case 5:
|
|
setCurrentMode(LeftEyeView::getInstance(vr_ipd));
|
|
break;
|
|
case 6:
|
|
setCurrentMode(RightEyeView::getInstance(vr_ipd));
|
|
break;
|
|
case 0:
|
|
default:
|
|
setCurrentMode(MonoView::getInstance());
|
|
break;
|
|
}
|
|
return *currentStereo3DMode;
|
|
}
|
|
|
|
} /* namespace s3d */
|
|
|