mirror of
https://github.com/lubosz/overte.git
synced 2025-04-25 01:23:57 +02:00
Merge pull request #5284 from hyperlogic/ajt/mirror-view-fix
fix for mirror rendering on windows
This commit is contained in:
commit
fb07956689
3 changed files with 11 additions and 12 deletions
|
@ -3387,14 +3387,6 @@ void Application::displaySide(RenderArgs* renderArgs, Camera& theCamera, bool se
|
|||
// load the view frustum
|
||||
loadViewFrustum(theCamera, _displayViewFrustum);
|
||||
|
||||
// flip x if in mirror mode (also requires reversing winding order for backface culling)
|
||||
if (theCamera.getMode() == CAMERA_MODE_MIRROR) {
|
||||
//glScalef(-1.0f, 1.0f, 1.0f);
|
||||
//glFrontFace(GL_CW);
|
||||
} else {
|
||||
glFrontFace(GL_CCW);
|
||||
}
|
||||
|
||||
// transform view according to theCamera
|
||||
// could be myCamera (if in normal mode)
|
||||
// or could be viewFrustumOffsetCamera if in offset mode
|
||||
|
@ -3412,9 +3404,6 @@ void Application::displaySide(RenderArgs* renderArgs, Camera& theCamera, bool se
|
|||
Transform viewTransform;
|
||||
viewTransform.setTranslation(theCamera.getPosition());
|
||||
viewTransform.setRotation(rotation);
|
||||
if (theCamera.getMode() == CAMERA_MODE_MIRROR) {
|
||||
// viewTransform.setScale(Transform::Vec3(-1.0f, 1.0f, 1.0f));
|
||||
}
|
||||
if (renderArgs->_renderSide != RenderArgs::MONO) {
|
||||
glm::mat4 invView = glm::inverse(_untranslatedViewMatrix);
|
||||
|
||||
|
|
|
@ -118,7 +118,7 @@ void DrawOpaqueDeferred::run(const SceneContextPointer& sceneContext, const Rend
|
|||
args->_viewFrustum->evalProjectionMatrix(projMat);
|
||||
args->_viewFrustum->evalViewTransform(viewMat);
|
||||
if (args->_renderMode == RenderArgs::MIRROR_RENDER_MODE) {
|
||||
viewMat.postScale(glm::vec3(-1.0f, 1.0f, 1.0f));
|
||||
viewMat.preScale(glm::vec3(-1.0f, 1.0f, 1.0f));
|
||||
}
|
||||
batch.setProjectionTransform(projMat);
|
||||
batch.setViewTransform(viewMat);
|
||||
|
|
|
@ -97,6 +97,8 @@ public:
|
|||
const Vec3& getScale() const;
|
||||
void setScale(float scale);
|
||||
void setScale(const Vec3& scale); // [new this] = [this.translation] * [this.rotation] * [scale]
|
||||
void preScale(float scale);
|
||||
void preScale(const Vec3& scale);
|
||||
void postScale(float scale); // [new this] = [this] * [scale] equivalent to glScale
|
||||
void postScale(const Vec3& scale); // [new this] = [this] * [scale] equivalent to glScale
|
||||
|
||||
|
@ -322,6 +324,14 @@ inline void Transform::setScale(const Vec3& scale) {
|
|||
}
|
||||
}
|
||||
|
||||
inline void Transform::preScale(float scale) {
|
||||
setScale(getScale() * scale);
|
||||
}
|
||||
|
||||
inline void Transform::preScale(const Vec3& scale) {
|
||||
setScale(getScale() * scale);
|
||||
}
|
||||
|
||||
inline void Transform::postScale(float scale) {
|
||||
if (!isValidScale(scale) || scale == 1.0f) {
|
||||
return;
|
||||
|
|
Loading…
Reference in a new issue