summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTomi Korpipää <tomi.korpipaa@digia.com>2013-03-28 09:50:54 +0200
committerMika Salmela <mika.salmela@digia.com>2013-03-28 11:07:43 +0200
commit1184fea963cf43cb6140758e4f13bb1a299cd30f (patch)
treee367660930f82b3e94a178b625b842b31c4307a4 /src
parentcb98573fbe610af0b03d225d1992651160277bda (diff)
Changed parameters to constant reference parameters
Change-Id: If1bf2d302f393294e138dbe26f34fe890d9e8dd9 Change-Id: If1bf2d302f393294e138dbe26f34fe890d9e8dd9 Reviewed-by: Mika Salmela <mika.salmela@digia.com>
Diffstat (limited to 'src')
-rw-r--r--src/datavis3d/engine/q3dbars.cpp9
-rw-r--r--src/datavis3d/engine/q3dwindow.cpp2
-rw-r--r--src/datavis3d/utils/camerahelper.cpp20
-rw-r--r--src/datavis3d/utils/camerahelper_p.h16
-rw-r--r--src/datavis3d/utils/meshloader.cpp2
-rw-r--r--src/datavis3d/utils/meshloader_p.h2
-rw-r--r--src/datavis3d/utils/vertexindexer.cpp24
-rw-r--r--src/datavis3d/utils/vertexindexer_p.h24
8 files changed, 57 insertions, 42 deletions
diff --git a/src/datavis3d/engine/q3dbars.cpp b/src/datavis3d/engine/q3dbars.cpp
index 22335761..5c8d19ee 100644
--- a/src/datavis3d/engine/q3dbars.cpp
+++ b/src/datavis3d/engine/q3dbars.cpp
@@ -61,6 +61,7 @@ QTCOMMERCIALDATAVIS3D_BEGIN_NAMESPACE
#define USE_HAX0R_SELECTION // keep this defined until the "real" method works
const float zComp = 3.0f; // Compensation for z position; move all objects to positive z, as shader can't handle negative values correctly
+const QVector3D defaultLightPos = QVector3D(0.0f, 3.0f, zComp * 2.5f);
Q3DBars::Q3DBars()
: d_ptr(new Q3DBarsPrivate(this))
@@ -222,13 +223,15 @@ void Q3DBars::drawScene()
QMatrix4x4 projectionMatrix;
projectionMatrix.perspective(45.0f, (float)width() / (float)height(), 0.1f, 100.0f);
- QMatrix4x4 viewMatrix = CameraHelper::calculateViewMatrix(d_ptr->m_mousePos, d_ptr->m_zoomLevel
+ QMatrix4x4 viewMatrix = CameraHelper::calculateViewMatrix(d_ptr->m_mousePos
+ , d_ptr->m_zoomLevel
, width(), height());
// Calculate drawing order
//qDebug() << "viewMatrix z" << viewMatrix.row(0).z(); // jos negatiivinen, käännä bar -piirtojärjestys
//qDebug() << "viewMatrix x" << viewMatrix.row(0).x(); // jos negatiivinen, käännä row -piirtojärjestys
// TODO: Needs more tuning unless we get depth test working correctly
+ // TODO: If depth test gets fixed, the draw order should be reversed for best performance (ie. draw front objects first)
if (viewMatrix.row(0).x() < 0) {
startRow = 0;
stopRow = d_ptr->m_sampleCount.y();
@@ -264,8 +267,8 @@ void Q3DBars::drawScene()
backgroundRotation = 0.0f;
}
- // TODO: Rotate light with camera (position light a bit above camera)
- QVector3D lightPos = QVector3D(0.5f, 3.0f, zComp * 2.5f);
+ // Get light position (rotate light with camera, a bit above it (as set in defaultLightPos))
+ QVector3D lightPos = CameraHelper::calculateLightPosition(defaultLightPos);
// Bind selection shader
d_ptr->m_selectionShader->bind();
diff --git a/src/datavis3d/engine/q3dwindow.cpp b/src/datavis3d/engine/q3dwindow.cpp
index 52138251..cf9f67ea 100644
--- a/src/datavis3d/engine/q3dwindow.cpp
+++ b/src/datavis3d/engine/q3dwindow.cpp
@@ -41,7 +41,7 @@
#include "q3dwindow.h"
#include "q3dwindow_p.h"
-#include <QCoreApplication>
+#include <QGuiApplication>
#include <QOpenGLContext>
#include <QOpenGLPaintDevice>
diff --git a/src/datavis3d/utils/camerahelper.cpp b/src/datavis3d/utils/camerahelper.cpp
index 89993881..f29b295d 100644
--- a/src/datavis3d/utils/camerahelper.cpp
+++ b/src/datavis3d/utils/camerahelper.cpp
@@ -28,7 +28,7 @@ void CameraHelper::setRotationSpeed(int speed)
m_rotationSpeed = speed;
}
-void CameraHelper::setCameraRotation(QPointF rotation)
+void CameraHelper::setCameraRotation(const QPointF &rotation)
{
m_xRotation = rotation.x();
m_defaultXRotation = m_xRotation;
@@ -36,16 +36,16 @@ void CameraHelper::setCameraRotation(QPointF rotation)
m_defaultYRotation = m_yRotation;
}
-void CameraHelper::setDefaultCameraOrientation(QVector3D defaultPosition
- , QVector3D defaultTarget
- , QVector3D defaultUp)
+void CameraHelper::setDefaultCameraOrientation(const QVector3D &defaultPosition
+ , const QVector3D &defaultTarget
+ , const QVector3D &defaultUp)
{
m_position = defaultPosition;
m_target = defaultTarget;
m_up = defaultUp;
}
-QMatrix4x4 CameraHelper::calculateViewMatrix(QPoint mousePos, int zoom
+QMatrix4x4 CameraHelper::calculateViewMatrix(const QPoint &mousePos, int zoom
, int screenWidth, int screenHeight)
{
QMatrix4x4 viewMatrix;
@@ -96,7 +96,15 @@ QMatrix4x4 CameraHelper::calculateViewMatrix(QPoint mousePos, int zoom
return viewMatrix;
}
-void CameraHelper::updateMousePos(QPoint mousePos)
+QVector3D CameraHelper::calculateLightPosition(const QVector3D &lightPosition)
+{
+ QVector3D newLightPosition = lightPosition;
+ // TODO: Implement rotation based on m_xRotation and m_yRotation
+
+ return newLightPosition;
+}
+
+void CameraHelper::updateMousePos(const QPoint &mousePos)
{
m_previousMousePos = mousePos;
// if mouse position is set to (0, 0), reset rotations
diff --git a/src/datavis3d/utils/camerahelper_p.h b/src/datavis3d/utils/camerahelper_p.h
index 340eb982..bea26a34 100644
--- a/src/datavis3d/utils/camerahelper_p.h
+++ b/src/datavis3d/utils/camerahelper_p.h
@@ -16,14 +16,18 @@ public:
// How fast camera rotates when mouse is dragged. Default is 100.
static void setRotationSpeed(int speed);
// Set camera rotation in degrees
- static void setCameraRotation(QPointF rotation);
+ static void setCameraRotation(const QPointF &rotation);
// Set default camera orientation. Position's x and y should be 0.
- static void setDefaultCameraOrientation(QVector3D defaultPosition
- , QVector3D defaultTarget
- , QVector3D defaultUp);
- static QMatrix4x4 calculateViewMatrix(QPoint mousePos, int zoom
+ static void setDefaultCameraOrientation(const QVector3D &defaultPosition
+ , const QVector3D &defaultTarget
+ , const QVector3D &defaultUp);
+ // Calculate view matrix based on rotation and zoom
+ static QMatrix4x4 calculateViewMatrix(const QPoint &mousePos, int zoom
, int screenWidth, int screenHeight);
- static void updateMousePos(QPoint mousePos);
+ // Calcluate light position based on rotation. Call after calling calculateViewMatrix to get
+ // up-to-date position
+ static QVector3D calculateLightPosition(const QVector3D &lightPosition);
+ static void updateMousePos(const QPoint &mousePos);
};
QTCOMMERCIALDATAVIS3D_END_NAMESPACE
diff --git a/src/datavis3d/utils/meshloader.cpp b/src/datavis3d/utils/meshloader.cpp
index b94c5a46..b1d8c5a2 100644
--- a/src/datavis3d/utils/meshloader.cpp
+++ b/src/datavis3d/utils/meshloader.cpp
@@ -12,7 +12,7 @@ QTCOMMERCIALDATAVIS3D_BEGIN_NAMESPACE
QString slashTag = QStringLiteral("/");
-bool MeshLoader::loadOBJ(QString path,
+bool MeshLoader::loadOBJ(const QString &path,
QVector<QVector3D> &out_vertices,
QVector<QVector2D> &out_uvs,
QVector<QVector3D> &out_normals)
diff --git a/src/datavis3d/utils/meshloader_p.h b/src/datavis3d/utils/meshloader_p.h
index 4507ceb7..511225b1 100644
--- a/src/datavis3d/utils/meshloader_p.h
+++ b/src/datavis3d/utils/meshloader_p.h
@@ -11,7 +11,7 @@ QTCOMMERCIALDATAVIS3D_BEGIN_NAMESPACE
class MeshLoader
{
public:
- static bool loadOBJ(QString path,
+ static bool loadOBJ(const QString &path,
QVector<QVector3D> &out_vertices,
QVector<QVector2D> &out_uvs,
QVector<QVector3D> &out_normals);
diff --git a/src/datavis3d/utils/vertexindexer.cpp b/src/datavis3d/utils/vertexindexer.cpp
index 343e5a41..ebbe45f4 100644
--- a/src/datavis3d/utils/vertexindexer.cpp
+++ b/src/datavis3d/utils/vertexindexer.cpp
@@ -18,9 +18,9 @@ bool VertexIndexer::is_near(float v1, float v2)
// Searches through all already-exported vertices
// for a similar one.
// Similar = same position + same UVs + same normal
-bool VertexIndexer::getSimilarVertexIndex(QVector3D &in_vertex
- , QVector2D &in_uv
- , QVector3D &in_normal
+bool VertexIndexer::getSimilarVertexIndex(const QVector3D &in_vertex
+ , const QVector2D &in_uv
+ , const QVector3D &in_normal
, QVector<QVector3D> &out_vertices
, QVector<QVector2D> &out_uvs
, QVector<QVector3D> &out_normals
@@ -45,7 +45,7 @@ bool VertexIndexer::getSimilarVertexIndex(QVector3D &in_vertex
return false;
}
-bool VertexIndexer::getSimilarVertexIndex_fast(PackedVertex &packed
+bool VertexIndexer::getSimilarVertexIndex_fast(const PackedVertex &packed
, QMap<PackedVertex, unsigned short> &VertexToOutIndex
, unsigned short &result)
{
@@ -59,9 +59,9 @@ bool VertexIndexer::getSimilarVertexIndex_fast(PackedVertex &packed
}
}
-void VertexIndexer::indexVBO(QVector<QVector3D> &in_vertices
- , QVector<QVector2D> &in_uvs
- , QVector<QVector3D> &in_normals
+void VertexIndexer::indexVBO(const QVector<QVector3D> &in_vertices
+ , const QVector<QVector2D> &in_uvs
+ , const QVector<QVector3D> &in_normals
, QVector<unsigned short> &out_indices
, QVector<QVector3D> &out_vertices
, QVector<QVector2D> &out_uvs
@@ -94,11 +94,11 @@ void VertexIndexer::indexVBO(QVector<QVector3D> &in_vertices
qDebug() << "unique vertices" << unique_vertices;
}
-void VertexIndexer::indexVBO_TBN(QVector<QVector3D> &in_vertices
- , QVector<QVector2D> &in_uvs
- , QVector<QVector3D> &in_normals
- , QVector<QVector3D> &in_tangents
- , QVector<QVector3D> &in_bitangents
+void VertexIndexer::indexVBO_TBN(const QVector<QVector3D> &in_vertices
+ , const QVector<QVector2D> &in_uvs
+ , const QVector<QVector3D> &in_normals
+ , const QVector<QVector3D> &in_tangents
+ , const QVector<QVector3D> &in_bitangents
, QVector<unsigned short> &out_indices
, QVector<QVector3D> &out_vertices
, QVector<QVector2D> &out_uvs
diff --git a/src/datavis3d/utils/vertexindexer_p.h b/src/datavis3d/utils/vertexindexer_p.h
index f784756e..a8350224 100644
--- a/src/datavis3d/utils/vertexindexer_p.h
+++ b/src/datavis3d/utils/vertexindexer_p.h
@@ -21,19 +21,19 @@ class VertexIndexer
}
};
- static void indexVBO(QVector<QVector3D> &in_vertices
- , QVector<QVector2D> &in_uvs
- , QVector<QVector3D> &in_normals
+ static void indexVBO(const QVector<QVector3D> &in_vertices
+ , const QVector<QVector2D> &in_uvs
+ , const QVector<QVector3D> &in_normals
, QVector<unsigned short> &out_indices
, QVector<QVector3D> &out_vertices
, QVector<QVector2D> &out_uvs
, QVector<QVector3D> &out_normals);
- static void indexVBO_TBN(QVector<QVector3D> &in_vertices
- , QVector<QVector2D> &in_uvs
- , QVector<QVector3D> &in_normals
- , QVector<QVector3D> &in_tangents
- , QVector<QVector3D> &in_bitangents
+ static void indexVBO_TBN(const QVector<QVector3D> &in_vertices
+ , const QVector<QVector2D> &in_uvs
+ , const QVector<QVector3D> &in_normals
+ , const QVector<QVector3D> &in_tangents
+ , const QVector<QVector3D> &in_bitangents
, QVector<unsigned short> &out_indices
, QVector<QVector3D> &out_vertices
, QVector<QVector2D> &out_uvs
@@ -43,14 +43,14 @@ class VertexIndexer
private:
static bool is_near(float v1, float v2);
- static bool getSimilarVertexIndex(QVector3D &in_vertex
- , QVector2D &in_uv
- , QVector3D &in_normal
+ static bool getSimilarVertexIndex(const QVector3D &in_vertex
+ , const QVector2D &in_uv
+ , const QVector3D &in_normal
, QVector<QVector3D> &out_vertices
, QVector<QVector2D> &out_uvs
, QVector<QVector3D> &out_normals
, unsigned short &result);
- static bool getSimilarVertexIndex_fast(PackedVertex &packed
+ static bool getSimilarVertexIndex_fast(const PackedVertex &packed
, QMap<PackedVertex, unsigned short> &VertexToOutIndex
, unsigned short &result);
};