summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/engine/selectionpointer.cpp
diff options
context:
space:
mode:
authorTomi Korpipää <tomi.korpipaa@digia.com>2014-05-14 11:19:28 +0300
committerTomi Korpipää <tomi.korpipaa@digia.com>2014-05-14 11:27:55 +0300
commit824cf363f6ab999d2fc38ebdab1f7faae5559ad0 (patch)
tree7e86d13dae8619bffb2a22bd56a07de538d2f0ca /src/datavisualization/engine/selectionpointer.cpp
parent5f9be2bd06a3f0f8286325ad1eb323aa692126eb (diff)
Added option to use orthographic projection
Task-number: QTRD-3078 Change-Id: I07ebc2b7edd542cd28e405dfc80282f18b7a7314 Reviewed-by: Mika Salmela <mika.salmela@digia.com> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'src/datavisualization/engine/selectionpointer.cpp')
-rw-r--r--src/datavisualization/engine/selectionpointer.cpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/datavisualization/engine/selectionpointer.cpp b/src/datavisualization/engine/selectionpointer.cpp
index e3708095..646212f0 100644
--- a/src/datavisualization/engine/selectionpointer.cpp
+++ b/src/datavisualization/engine/selectionpointer.cpp
@@ -74,7 +74,7 @@ void SelectionPointer::updateScene(Q3DScene *scene)
m_cachedScene = scene;
}
-void SelectionPointer::render(GLuint defaultFboHandle)
+void SelectionPointer::render(GLuint defaultFboHandle, bool useOrtho)
{
Q_UNUSED(defaultFboHandle)
@@ -89,17 +89,22 @@ void SelectionPointer::render(GLuint defaultFboHandle)
// Get view matrix
QMatrix4x4 viewMatrix;
QMatrix4x4 projectionMatrix;
+ GLfloat viewPortRatio = (GLfloat)m_mainViewPort.width() / (GLfloat)m_mainViewPort.height();
if (m_cachedIsSlicingActivated) {
- GLfloat aspect = (GLfloat)m_mainViewPort.width() / (GLfloat)m_mainViewPort.height();
GLfloat sliceUnitsScaled = sliceUnits / m_autoScaleAdjustment;
viewMatrix.lookAt(QVector3D(0.0f, 0.0f, 1.0f), zeroVector, upVector);
- projectionMatrix.ortho(-sliceUnitsScaled * aspect, sliceUnitsScaled * aspect,
+ projectionMatrix.ortho(-sliceUnitsScaled * viewPortRatio, sliceUnitsScaled * viewPortRatio,
-sliceUnitsScaled, sliceUnitsScaled,
-1.0f, 4.0f);
+ } else if (useOrtho) {
+ viewMatrix = camera->d_ptr->viewMatrix();
+ GLfloat orthoRatio = 2.0f;
+ projectionMatrix.ortho(-viewPortRatio * orthoRatio, viewPortRatio * orthoRatio,
+ -orthoRatio, orthoRatio,
+ 0.0f, 100.0f);
} else {
viewMatrix = camera->d_ptr->viewMatrix();
- projectionMatrix.perspective(45.0f, (GLfloat)m_mainViewPort.width()
- / (GLfloat)m_mainViewPort.height(), 0.1f, 100.0f);
+ projectionMatrix.perspective(45.0f, viewPortRatio, 0.1f, 100.0f);
}
// Calculate scale factor to get uniform font size