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/abstract3drenderer.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/abstract3drenderer.cpp')
-rw-r--r-- | src/datavisualization/engine/abstract3drenderer.cpp | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/datavisualization/engine/abstract3drenderer.cpp b/src/datavisualization/engine/abstract3drenderer.cpp index f70d128b..1cb4bdba 100644 --- a/src/datavisualization/engine/abstract3drenderer.cpp +++ b/src/datavisualization/engine/abstract3drenderer.cpp @@ -27,6 +27,7 @@ #include "q3dtheme_p.h" #include "objecthelper_p.h" #include "qvalue3daxisformatter_p.h" +#include "shaderhelper_p.h" QT_BEGIN_NAMESPACE_DATAVISUALIZATION @@ -48,7 +49,8 @@ Abstract3DRenderer::Abstract3DRenderer(Abstract3DController *controller) m_clickedSeries(0), m_clickedType(QAbstract3DGraph::ElementNone), m_selectionLabelItem(0), - m_visibleSeriesCount(0) + m_visibleSeriesCount(0), + m_customItemShader(0) { QObject::connect(m_drawer, &Drawer::drawerChanged, this, &Abstract3DRenderer::updateTextures); @@ -65,6 +67,7 @@ Abstract3DRenderer::~Abstract3DRenderer() delete m_cachedScene; delete m_cachedTheme; delete m_selectionLabelItem; + delete m_customItemShader; foreach (SeriesRenderCache *cache, m_renderCacheList) { cache->cleanup(m_textureHelper); @@ -140,6 +143,15 @@ void Abstract3DRenderer::initGradientShaders(const QString &vertexShader, Q_UNUSED(fragmentShader) } +void Abstract3DRenderer::initCustomItemShaders(const QString &vertexShader, + const QString &fragmentShader) +{ + if (m_customItemShader) + delete m_customItemShader; + m_customItemShader = new ShaderHelper(this, vertexShader, fragmentShader); + m_customItemShader->initialize(); +} + void Abstract3DRenderer::updateTheme(Q3DTheme *theme) { // Synchronize the controller theme with renderer @@ -206,6 +218,8 @@ void Abstract3DRenderer::reInitShaders() QStringLiteral(":/shaders/fragmentShadowNoTex")); initBackgroundShaders(QStringLiteral(":/shaders/vertexShadow"), QStringLiteral(":/shaders/fragmentShadowNoTex")); + initCustomItemShaders(QStringLiteral(":/shaders/vertexShadow"), + QStringLiteral(":/shaders/fragmentShadow")); } else { initGradientShaders(QStringLiteral(":/shaders/vertex"), QStringLiteral(":/shaders/fragmentColorOnY")); @@ -213,6 +227,8 @@ void Abstract3DRenderer::reInitShaders() QStringLiteral(":/shaders/fragment")); initBackgroundShaders(QStringLiteral(":/shaders/vertex"), QStringLiteral(":/shaders/fragment")); + initCustomItemShaders(QStringLiteral(":/shaders/vertexShadow"), + QStringLiteral(":/shaders/fragmentTexture")); } #else initGradientShaders(QStringLiteral(":/shaders/vertex"), @@ -221,6 +237,8 @@ void Abstract3DRenderer::reInitShaders() QStringLiteral(":/shaders/fragmentES2")); initBackgroundShaders(QStringLiteral(":/shaders/vertex"), QStringLiteral(":/shaders/fragmentES2")); + initCustomItemShaders(QStringLiteral(":/shaders/vertex"), // TODO: Need new shader? At least this one doesn't work + QStringLiteral(":/shaders/fragmentTextureES2")); #endif } |