diff options
author | Laszlo Agocs <laszlo.agocs@digia.com> | 2014-02-03 17:36:55 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-03-18 21:00:00 +0100 |
commit | a2e92f6dee12320a58a4bcc95c14649b27804427 (patch) | |
tree | 3198365f9f7ca75cc3c4bd23340bb5fe15ee63a5 /src/particles/qquickimageparticle.cpp | |
parent | 337524714cad51934879d817564c5d58e6dbd0c0 (diff) |
Dynamic GL in Quick
The counterpart to I716fdebb. Implements the dynamic path
in scenegraph.
Task-number: QTBUG-36483
Change-Id: I2dc613ba84560b7b8e36d3cd1da61c050ab08db0
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
Diffstat (limited to 'src/particles/qquickimageparticle.cpp')
-rw-r--r-- | src/particles/qquickimageparticle.cpp | 68 |
1 files changed, 35 insertions, 33 deletions
diff --git a/src/particles/qquickimageparticle.cpp b/src/particles/qquickimageparticle.cpp index e5845f4c62..f7f0b6660b 100644 --- a/src/particles/qquickimageparticle.cpp +++ b/src/particles/qquickimageparticle.cpp @@ -100,15 +100,15 @@ public: TabledMaterial() { QSGShaderSourceBuilder builder; + const bool isES = QOpenGLContext::currentContext()->isES(); builder.appendSourceFile(QStringLiteral(":/particles/shaders/imageparticle.vert")); builder.addDefinition(QByteArray(SHADER_PLATFORM_DEFINES)); builder.addDefinition(QByteArrayLiteral("TABLE")); builder.addDefinition(QByteArrayLiteral("DEFORM")); builder.addDefinition(QByteArrayLiteral("COLOR")); -#if defined(QT_OPENGL_ES_2) - builder.removeVersion(); -#endif + if (isES) + builder.removeVersion(); m_vertex_code = builder.source(); builder.clear(); @@ -118,9 +118,9 @@ public: builder.addDefinition(QByteArrayLiteral("TABLE")); builder.addDefinition(QByteArrayLiteral("DEFORM")); builder.addDefinition(QByteArrayLiteral("COLOR")); -#if defined(QT_OPENGL_ES_2) - builder.removeVersion(); -#endif + if (isES) + builder.removeVersion(); + m_fragment_code = builder.source(); Q_ASSERT(!m_vertex_code.isNull()); @@ -178,14 +178,15 @@ public: DeformableMaterial() { QSGShaderSourceBuilder builder; + const bool isES = QOpenGLContext::currentContext()->isES(); builder.appendSourceFile(QStringLiteral(":/particles/shaders/imageparticle.vert")); builder.addDefinition(QByteArray(SHADER_PLATFORM_DEFINES)); builder.addDefinition(QByteArrayLiteral("DEFORM")); builder.addDefinition(QByteArrayLiteral("COLOR")); -#if defined(QT_OPENGL_ES_2) - builder.removeVersion(); -#endif + if (isES) + builder.removeVersion(); + m_vertex_code = builder.source(); builder.clear(); @@ -193,9 +194,9 @@ public: builder.addDefinition(QByteArray(SHADER_PLATFORM_DEFINES)); builder.addDefinition(QByteArrayLiteral("DEFORM")); builder.addDefinition(QByteArrayLiteral("COLOR")); -#if defined(QT_OPENGL_ES_2) - builder.removeVersion(); -#endif + if (isES) + builder.removeVersion(); + m_fragment_code = builder.source(); Q_ASSERT(!m_vertex_code.isNull()); @@ -242,6 +243,7 @@ public: SpriteMaterial() { QSGShaderSourceBuilder builder; + const bool isES = QOpenGLContext::currentContext()->isES(); builder.appendSourceFile(QStringLiteral(":/particles/shaders/imageparticle.vert")); builder.addDefinition(QByteArray(SHADER_PLATFORM_DEFINES)); @@ -249,9 +251,9 @@ public: builder.addDefinition(QByteArrayLiteral("TABLE")); builder.addDefinition(QByteArrayLiteral("DEFORM")); builder.addDefinition(QByteArrayLiteral("COLOR")); -#if defined(QT_OPENGL_ES_2) - builder.removeVersion(); -#endif + if (isES) + builder.removeVersion(); + m_vertex_code = builder.source(); builder.clear(); @@ -261,9 +263,9 @@ public: builder.addDefinition(QByteArrayLiteral("TABLE")); builder.addDefinition(QByteArrayLiteral("DEFORM")); builder.addDefinition(QByteArrayLiteral("COLOR")); -#if defined(QT_OPENGL_ES_2) - builder.removeVersion(); -#endif + if (isES) + builder.removeVersion(); + m_fragment_code = builder.source(); Q_ASSERT(!m_vertex_code.isNull()); @@ -323,22 +325,23 @@ public: ColoredMaterial() { QSGShaderSourceBuilder builder; + const bool isES = QOpenGLContext::currentContext()->isES(); builder.appendSourceFile(QStringLiteral(":/particles/shaders/imageparticle.vert")); builder.addDefinition(QByteArray(SHADER_PLATFORM_DEFINES)); builder.addDefinition(QByteArrayLiteral("COLOR")); -#if defined(QT_OPENGL_ES_2) - builder.removeVersion(); -#endif + if (isES) + builder.removeVersion(); + m_vertex_code = builder.source(); builder.clear(); builder.appendSourceFile(QStringLiteral(":/particles/shaders/imageparticle.frag")); builder.addDefinition(QByteArray(SHADER_PLATFORM_DEFINES)); builder.addDefinition(QByteArrayLiteral("COLOR")); -#if defined(QT_OPENGL_ES_2) - builder.removeVersion(); -#endif + if (isES) + builder.removeVersion(); + m_fragment_code = builder.source(); Q_ASSERT(!m_vertex_code.isNull()); @@ -400,20 +403,21 @@ public: SimpleMaterial() { QSGShaderSourceBuilder builder; + const bool isES = QOpenGLContext::currentContext()->isES(); builder.appendSourceFile(QStringLiteral(":/particles/shaders/imageparticle.vert")); builder.addDefinition(QByteArray(SHADER_PLATFORM_DEFINES)); -#if defined(QT_OPENGL_ES_2) - builder.removeVersion(); -#endif + if (isES) + builder.removeVersion(); + m_vertex_code = builder.source(); builder.clear(); builder.appendSourceFile(QStringLiteral(":/particles/shaders/imageparticle.frag")); builder.addDefinition(QByteArray(SHADER_PLATFORM_DEFINES)); -#if defined(QT_OPENGL_ES_2) - builder.removeVersion(); -#endif + if (isES) + builder.removeVersion(); + m_fragment_code = builder.source(); Q_ASSERT(!m_vertex_code.isNull()); @@ -1227,12 +1231,10 @@ void QQuickImageParticle::buildParticleNodes(QSGNode** passThrough) void QQuickImageParticle::finishBuildParticleNodes(QSGNode** node) { -#ifdef QT_OPENGL_ES_2 - if (m_count * 4 > 0xffff) { + if (QOpenGLContext::currentContext()->isES() && m_count * 4 > 0xffff) { printf("ImageParticle: Too many particles - maximum 16,000 per ImageParticle.\n");//ES 2 vertex count limit is ushort return; } -#endif if (count() <= 0) return; |