diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2013-11-05 13:57:18 +0200 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2013-11-07 09:43:46 +0200 |
commit | a61c6ee6533dca6723320c3955773cc5ccbfe2fa (patch) | |
tree | e459aa85f88da5f2a0e23c34266baecd2db5d1b8 /src/datavisualization/utils | |
parent | 9266f124979fa8a4fe7d8b2fb2db496b26aeeda9 (diff) |
Gradient support Part 1
TODO:
- Finish scatter
- QML (maybe left until data set is sorted, though)
Change-Id: I87a8117cb29f147080e0662c55b1098cb2e71689
Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'src/datavisualization/utils')
-rw-r--r-- | src/datavisualization/utils/shaderhelper.cpp | 17 | ||||
-rw-r--r-- | src/datavisualization/utils/shaderhelper_p.h | 4 | ||||
-rw-r--r-- | src/datavisualization/utils/texturehelper.cpp | 13 | ||||
-rw-r--r-- | src/datavisualization/utils/texturehelper_p.h | 2 |
4 files changed, 35 insertions, 1 deletions
diff --git a/src/datavisualization/utils/shaderhelper.cpp b/src/datavisualization/utils/shaderhelper.cpp index e27103af..7eb48945 100644 --- a/src/datavisualization/utils/shaderhelper.cpp +++ b/src/datavisualization/utils/shaderhelper.cpp @@ -90,7 +90,8 @@ void ShaderHelper::initialize() m_colorUniform = m_program->uniformLocation("color_mdl"); m_textureUniform = m_program->uniformLocation("textureSampler"); m_shadowUniform = m_program->uniformLocation("shadowMap"); - + m_gradientMinUniform = m_program->uniformLocation("gradMin"); + m_gradientHeightUniform = m_program->uniformLocation("gradHeight"); m_initialized = true; } @@ -230,6 +231,20 @@ GLuint ShaderHelper::shadow() return m_shadowUniform; } +GLuint ShaderHelper::gradientMin() +{ + if (!m_initialized) + qFatal("Shader not initialized"); + return m_gradientMinUniform; +} + +GLuint ShaderHelper::gradientHeight() +{ + if (!m_initialized) + qFatal("Shader not initialized"); + return m_gradientHeightUniform; +} + GLuint ShaderHelper::posAtt() { if (!m_initialized) diff --git a/src/datavisualization/utils/shaderhelper_p.h b/src/datavisualization/utils/shaderhelper_p.h index 73e5b9ee..191b7bf6 100644 --- a/src/datavisualization/utils/shaderhelper_p.h +++ b/src/datavisualization/utils/shaderhelper_p.h @@ -71,6 +71,8 @@ class ShaderHelper GLuint color(); GLuint texture(); GLuint shadow(); + GLuint gradientMin(); + GLuint gradientHeight(); GLuint posAtt(); GLuint uvAtt(); @@ -102,6 +104,8 @@ class ShaderHelper GLuint m_shadowQualityUniform; GLuint m_textureUniform; GLuint m_shadowUniform; + GLuint m_gradientMinUniform; + GLuint m_gradientHeightUniform; GLboolean m_initialized; }; diff --git a/src/datavisualization/utils/texturehelper.cpp b/src/datavisualization/utils/texturehelper.cpp index 9e2b9811..8e556b44 100644 --- a/src/datavisualization/utils/texturehelper.cpp +++ b/src/datavisualization/utils/texturehelper.cpp @@ -20,6 +20,7 @@ #include "utils_p.h" #include <QImage> +#include <QPainter> #include <QDebug> @@ -152,6 +153,18 @@ GLuint TextureHelper::createSelectionTexture(const QSize &size, GLuint &frameBuf return textureid; } +GLuint TextureHelper::createGradientTexture(const QLinearGradient &gradient) +{ + QImage image(QSize(int(gradientTextureWidth), int(gradientTextureHeight)), + QImage::Format_RGB32); + QPainter pmp(&image); + pmp.setBrush(QBrush(gradient)); + pmp.setPen(Qt::NoPen); + pmp.drawRect(0, 0, int(gradientTextureWidth), int(gradientTextureHeight)); + + return create2DTexture(image, false, true); +} + #if !defined(QT_OPENGL_ES_2) GLuint TextureHelper::createDepthTexture(const QSize &size, GLuint &frameBuffer, GLuint textureSize) { diff --git a/src/datavisualization/utils/texturehelper_p.h b/src/datavisualization/utils/texturehelper_p.h index 8371825e..b2657083 100644 --- a/src/datavisualization/utils/texturehelper_p.h +++ b/src/datavisualization/utils/texturehelper_p.h @@ -32,6 +32,7 @@ #include "datavisualizationglobal_p.h" #include <QOpenGLFunctions> #include <QRgb> +#include <QLinearGradient> QT_DATAVISUALIZATION_BEGIN_NAMESPACE @@ -47,6 +48,7 @@ class TextureHelper : protected QOpenGLFunctions GLuint createCubeMapTexture(const QImage &image, bool useTrilinearFiltering = false); // Returns selection texture and inserts generated framebuffers to framebuffer parameters GLuint createSelectionTexture(const QSize &size, GLuint &frameBuffer, GLuint &depthBuffer); + GLuint createGradientTexture(const QLinearGradient &gradient); #if !defined(QT_OPENGL_ES_2) // Returns depth texture and inserts generated framebuffer to parameter GLuint createDepthTexture(const QSize &size, GLuint &frameBuffer, GLuint textureSize = 1); |