diff options
author | Mika Salmela <mika.salmela@qt.io> | 2017-10-19 14:16:39 +0300 |
---|---|---|
committer | Mika Salmela <mika.salmela@qt.io> | 2017-10-20 13:05:54 +0000 |
commit | ab6f94d6fb186d0003679fb4541c939555fd01c9 (patch) | |
tree | f0b06d85c8621a0682a4692cc52910208322a5dd | |
parent | fb4bd5cfec5ca9257b3d756fce0f379085afa0f2 (diff) |
Add shaders suitable for CoreProfile on declarative
Adds shaders that work on CoreProfile.
Task-number: QTBUG-63807
Change-Id: Ib446521f5f013ca5a6427295b301c9743dabf1ac
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
-rw-r--r-- | src/chartsqml2/declarativeopenglrendernode.cpp | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/src/chartsqml2/declarativeopenglrendernode.cpp b/src/chartsqml2/declarativeopenglrendernode.cpp index a0b4ec7f..742a9301 100644 --- a/src/chartsqml2/declarativeopenglrendernode.cpp +++ b/src/chartsqml2/declarativeopenglrendernode.cpp @@ -88,6 +88,26 @@ DeclarativeOpenGLRenderNode::~DeclarativeOpenGLRenderNode() qDeleteAll(m_mouseEvents); } +static const char *vertexSourceCore = + "#version 150\n" + "in vec2 points;\n" + "uniform vec2 min;\n" + "uniform vec2 delta;\n" + "uniform float pointSize;\n" + "uniform mat4 matrix;\n" + "void main() {\n" + " vec2 normalPoint = vec2(-1, -1) + ((points - min) / delta);\n" + " gl_Position = matrix * vec4(normalPoint, 0, 1);\n" + " gl_PointSize = pointSize;\n" + "}"; +static const char *fragmentSourceCore = + "#version 150\n" + "uniform vec3 color;\n" + "out vec4 fragColor;\n" + "void main() {\n" + " fragColor = vec4(color,1);\n" + "}\n"; + static const char *vertexSource = "attribute highp vec2 points;\n" "uniform highp vec2 min;\n" @@ -111,8 +131,13 @@ void DeclarativeOpenGLRenderNode::initGL() recreateFBO(); m_program = new QOpenGLShaderProgram; - m_program->addShaderFromSourceCode(QOpenGLShader::Vertex, vertexSource); - m_program->addShaderFromSourceCode(QOpenGLShader::Fragment, fragmentSource); + if (QOpenGLContext::currentContext()->format().profile() == QSurfaceFormat::CoreProfile) { + m_program->addShaderFromSourceCode(QOpenGLShader::Vertex, vertexSourceCore); + m_program->addShaderFromSourceCode(QOpenGLShader::Fragment, fragmentSourceCore); + } else { + m_program->addShaderFromSourceCode(QOpenGLShader::Vertex, vertexSource); + m_program->addShaderFromSourceCode(QOpenGLShader::Fragment, fragmentSource); + } m_program->bindAttributeLocation("points", 0); m_program->link(); |