1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-08-06 17:41:04 +00:00

Add crossview support (#7361)

This commit is contained in:
otdav33 2018-05-29 12:38:58 -04:00 committed by SmallJoker
parent 7f7678e4e3
commit 3f0720e721
5 changed files with 10 additions and 6 deletions

View file

@ -41,5 +41,7 @@ RenderingCore *createRenderingCore(const std::string &stereo_mode, IrrlichtDevic
return new RenderingCoreSideBySide(device, client, hud);
if (stereo_mode == "topbottom")
return new RenderingCoreSideBySide(device, client, hud, true);
if (stereo_mode == "crossview")
return new RenderingCoreSideBySide(device, client, hud, false, true);
throw std::invalid_argument("Invalid rendering mode: " + stereo_mode);
}

View file

@ -23,8 +23,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "client/hud.h"
RenderingCoreSideBySide::RenderingCoreSideBySide(
IrrlichtDevice *_device, Client *_client, Hud *_hud, bool _horizontal)
: RenderingCoreStereo(_device, _client, _hud), horizontal(_horizontal)
IrrlichtDevice *_device, Client *_client, Hud *_hud, bool _horizontal, bool _flipped)
: RenderingCoreStereo(_device, _client, _hud), horizontal(_horizontal), flipped(_flipped)
{
}
@ -62,7 +62,7 @@ void RenderingCoreSideBySide::drawAll()
void RenderingCoreSideBySide::useEye(bool _right)
{
driver->setRenderTarget(_right ? right : left, true, true, skycolor);
RenderingCoreStereo::useEye(_right);
RenderingCoreStereo::useEye(_right ^ flipped);
}
void RenderingCoreSideBySide::resetEye()

View file

@ -27,6 +27,7 @@ protected:
video::ITexture *left = nullptr;
video::ITexture *right = nullptr;
bool horizontal = false;
bool flipped = false;
core::dimension2du image_size;
v2s32 rpos;
@ -37,6 +38,6 @@ protected:
public:
RenderingCoreSideBySide(IrrlichtDevice *_device, Client *_client, Hud *_hud,
bool _horizontal = false);
bool _horizontal = false, bool _flipped = false);
void drawAll() override;
};