diff options
author | Tomi Korpipää <tomi.korpipaa@digia.com> | 2014-04-15 10:32:03 +0300 |
---|---|---|
committer | Tomi Korpipää <tomi.korpipaa@digia.com> | 2014-04-15 10:40:38 +0300 |
commit | a30c0c304e55ffe30545ab0838e4dbe11a99b8da (patch) | |
tree | ce6ccc0e4de8e350aebec466ff0a70c0fd7710bc /src/datavisualization/engine/abstract3dcontroller.cpp | |
parent | 79646ac9664745701667104c19bbae8cba8fd2e3 (diff) |
Add custom item support, part 1
Task-number: QTRD-2866
+ Added API for adding and removing custom items
+ Added custom data and custom render items
+ Added shaders for textured objects
+ Added custom item rendering draft to scatter
+ Fixed some shaders
- to be continued in part 2
Change-Id: I9735fd02fc9e86ae486cca4c06f6d7f2a4b0b7da
Reviewed-by: Mika Salmela <mika.salmela@digia.com>
Diffstat (limited to 'src/datavisualization/engine/abstract3dcontroller.cpp')
-rw-r--r-- | src/datavisualization/engine/abstract3dcontroller.cpp | 39 |
1 files changed, 36 insertions, 3 deletions
diff --git a/src/datavisualization/engine/abstract3dcontroller.cpp b/src/datavisualization/engine/abstract3dcontroller.cpp index 885904d4..e10069ff 100644 --- a/src/datavisualization/engine/abstract3dcontroller.cpp +++ b/src/datavisualization/engine/abstract3dcontroller.cpp @@ -50,6 +50,7 @@ Abstract3DController::Abstract3DController(QRect initialViewport, Q3DScene *scen m_axisZ(0), m_renderer(0), m_isDataDirty(true), + m_isCustomDataDirty(true), m_isSeriesVisualsDirty(true), m_renderPending(false), m_measureFps(false), @@ -87,6 +88,9 @@ Abstract3DController::~Abstract3DController() destroyRenderer(); delete m_scene; delete m_themeManager; + foreach (CustomDataItem *item, m_customItems) + delete item; + m_customItems.clear(); } void Abstract3DController::destroyRenderer() @@ -369,6 +373,11 @@ void Abstract3DController::synchDataToRenderer() m_renderer->updateData(); m_isDataDirty = false; } + + if (m_isCustomDataDirty) { + m_renderer->updateCustomData(m_customItems); + m_isCustomDataDirty = false; + } } void Abstract3DController::render(const GLuint defaultFboHandle) @@ -814,6 +823,30 @@ void Abstract3DController::requestRender(QOpenGLFramebufferObject *fbo) m_renderer->render(fbo->handle()); } +int Abstract3DController::addCustomItem(const QString &meshFile, const QVector3D &position, + const QVector3D &scaling, const QQuaternion &rotation, + const QImage &textureImage) +{ + CustomDataItem *newItem = new CustomDataItem(); + newItem->setMeshFile(meshFile); + newItem->setPosition(position); + newItem->setScaling(scaling); + newItem->setRotation(rotation); + newItem->setTextureImage(textureImage); + m_customItems.append(newItem); + m_isCustomDataDirty = true; + emitNeedRender(); + return m_customItems.count() - 1; +} + +void Abstract3DController::deleteCustomItem(int index) +{ + delete m_customItems[index]; + m_customItems.removeAt(index); + m_isCustomDataDirty = true; + emitNeedRender(); +} + void Abstract3DController::handleAxisTitleChanged(const QString &title) { Q_UNUSED(title) @@ -974,9 +1007,9 @@ void Abstract3DController::setMeasureFps(bool enable) m_currentFps = 0.0; if (enable) { - m_frameTimer.start(); - m_numFrames = -1; - emitNeedRender(); + m_frameTimer.start(); + m_numFrames = -1; + emitNeedRender(); } emit measureFpsChanged(enable); } |