diff options
author | Tomi Korpipää <tomi.korpipaa@digia.com> | 2013-03-28 09:50:54 +0200 |
---|---|---|
committer | Mika Salmela <mika.salmela@digia.com> | 2013-03-28 11:07:43 +0200 |
commit | 1184fea963cf43cb6140758e4f13bb1a299cd30f (patch) | |
tree | e367660930f82b3e94a178b625b842b31c4307a4 /src | |
parent | cb98573fbe610af0b03d225d1992651160277bda (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.cpp | 9 | ||||
-rw-r--r-- | src/datavis3d/engine/q3dwindow.cpp | 2 | ||||
-rw-r--r-- | src/datavis3d/utils/camerahelper.cpp | 20 | ||||
-rw-r--r-- | src/datavis3d/utils/camerahelper_p.h | 16 | ||||
-rw-r--r-- | src/datavis3d/utils/meshloader.cpp | 2 | ||||
-rw-r--r-- | src/datavis3d/utils/meshloader_p.h | 2 | ||||
-rw-r--r-- | src/datavis3d/utils/vertexindexer.cpp | 24 | ||||
-rw-r--r-- | src/datavis3d/utils/vertexindexer_p.h | 24 |
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); }; |