diff options
author | Laszlo Agocs <laszlo.agocs@theqtcompany.com> | 2016-04-11 10:29:21 +0200 |
---|---|---|
committer | Laszlo Agocs <laszlo.agocs@theqtcompany.com> | 2016-04-13 09:22:13 +0000 |
commit | 05605d89f9db80bb748c16ea19c566ab0995027e (patch) | |
tree | a05722b7c36c6769fedd7b893f547f86b90bdc9c /src | |
parent | 6e6079031cf44149be4ca1f05547b4c03e505290 (diff) |
Make QQuickShaderEffectMesh generic
There is nothing GL-specific here (apart from the attribute name list but
that will likely remain that way with non-GL backends as well). By moving a
few constants it can now be built unconditionally.
Change-Id: I866b7b5c0262588a39818b177455f6276f8d584b
Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/quick/items/items.pri | 4 | ||||
-rw-r--r-- | src/quick/items/qquickitemsmodule.cpp | 6 | ||||
-rw-r--r-- | src/quick/items/qquickshadereffect.cpp | 27 | ||||
-rw-r--r-- | src/quick/items/qquickshadereffect_p.h | 3 | ||||
-rw-r--r-- | src/quick/items/qquickshadereffectmesh.cpp | 14 | ||||
-rw-r--r-- | src/quick/items/qquickshadereffectmesh_p.h | 7 |
6 files changed, 31 insertions, 30 deletions
diff --git a/src/quick/items/items.pri b/src/quick/items/items.pri index cad63a39c4..ee58fef1c4 100644 --- a/src/quick/items/items.pri +++ b/src/quick/items/items.pri @@ -73,6 +73,7 @@ HEADERS += \ $$PWD/qquickwindowattached_p.h \ $$PWD/qquickwindowmodule_p.h \ $$PWD/qquickshadereffectsource_p.h \ + $$PWD/qquickshadereffectmesh_p.h \ $$PWD/qquickrendercontrol.h \ $$PWD/qquickrendercontrol_p.h @@ -124,6 +125,7 @@ SOURCES += \ $$PWD/qquickscreen.cpp \ $$PWD/qquickwindowattached.cpp \ $$PWD/qquickshadereffectsource.cpp \ + $$PWD/qquickshadereffectmesh.cpp \ $$PWD/qquickrendercontrol.cpp # Items that depend on OpenGL Renderer @@ -131,7 +133,6 @@ contains(QT_CONFIG, opengl(es1|es2)?) { SOURCES += \ $$PWD/qquickopenglinfo.cpp \ $$PWD/qquickshadereffect.cpp \ - $$PWD/qquickshadereffectmesh.cpp \ $$PWD/qquickshadereffectnode.cpp \ $$PWD/qquickframebufferobject.cpp \ $$PWD/qquickspriteengine.cpp \ @@ -147,7 +148,6 @@ contains(QT_CONFIG, opengl(es1|es2)?) { $$PWD/qquickspritesequence_p.h \ $$PWD/qquickanimatedsprite_p.h \ $$PWD/qquickshadereffect_p.h \ - $$PWD/qquickshadereffectmesh_p.h \ $$PWD/qquickshadereffectnode_p.h \ $$PWD/qquickframebufferobject.h \ $$PWD/qquickitemgrabresult.h diff --git a/src/quick/items/qquickitemsmodule.cpp b/src/quick/items/qquickitemsmodule.cpp index 00837363ab..763133c39b 100644 --- a/src/quick/items/qquickitemsmodule.cpp +++ b/src/quick/items/qquickitemsmodule.cpp @@ -81,6 +81,7 @@ # include "qquickanimatedsprite_p.h" # include "qquickopenglinfo_p.h" #endif +#include "qquickshadereffectmesh_p.h" #include "qquickdrag_p.h" #include "qquickdroparea_p.h" #include "qquickmultipointtoucharea_p.h" @@ -211,11 +212,12 @@ static void qt_quickitems_defineModule(const char *uri, int major, int minor) qmlRegisterType<QQuickPinchEvent>(); qmlRegisterType<QQuickShaderEffectSource>("QtQuick", 2, 0, "ShaderEffectSource"); -#ifndef QT_NO_OPENGL - qmlRegisterType<QQuickShaderEffect>("QtQuick", 2, 0, "ShaderEffect"); qmlRegisterUncreatableType<QQuickShaderEffectMesh>("QtQuick", 2, 0, "ShaderEffectMesh", QQuickShaderEffectMesh::tr("Cannot create instance of abstract class ShaderEffectMesh.")); qmlRegisterType<QQuickGridMesh>("QtQuick", 2, 0, "GridMesh"); +#ifndef QT_NO_OPENGL + qmlRegisterType<QQuickShaderEffect>("QtQuick", 2, 0, "ShaderEffect"); #endif + qmlRegisterUncreatableType<QQuickPaintedItem>("QtQuick", 2, 0, "PaintedItem", QQuickPaintedItem::tr("Cannot create instance of abstract class PaintedItem")); qmlRegisterType<QQuickCanvasItem>("QtQuick", 2, 0, "Canvas"); diff --git a/src/quick/items/qquickshadereffect.cpp b/src/quick/items/qquickshadereffect.cpp index 41b7ea3896..a2c2ebb380 100644 --- a/src/quick/items/qquickshadereffect.cpp +++ b/src/quick/items/qquickshadereffect.cpp @@ -50,25 +50,12 @@ #include "qquickimage_p.h" #include "qquickshadereffectsource_p.h" +#include "qquickshadereffectmesh_p.h" #include <QtCore/qsignalmapper.h> -#include <QtGui/qopenglframebufferobject.h> QT_BEGIN_NAMESPACE -static const char qt_position_attribute_name[] = "qt_Vertex"; -static const char qt_texcoord_attribute_name[] = "qt_MultiTexCoord0"; - -const char *qtPositionAttributeName() -{ - return qt_position_attribute_name; -} - -const char *qtTexCoordAttributeName() -{ - return qt_texcoord_attribute_name; -} - namespace { enum VariableQualifier { @@ -256,14 +243,14 @@ void QQuickShaderEffectCommon::updateParseLog(bool ignoreAttributes) { parseLog.clear(); if (!ignoreAttributes) { - if (!attributes.contains(qt_position_attribute_name)) { + if (!attributes.contains(qtPositionAttributeName())) { parseLog += QLatin1String("Warning: Missing reference to \'"); - parseLog += QLatin1String(qt_position_attribute_name); + parseLog += QLatin1String(qtPositionAttributeName()); parseLog += QLatin1String("\'.\n"); } - if (!attributes.contains(qt_texcoord_attribute_name)) { + if (!attributes.contains(qtTexCoordAttributeName())) { parseLog += QLatin1String("Warning: Missing reference to \'"); - parseLog += QLatin1String(qt_texcoord_attribute_name); + parseLog += QLatin1String(qtTexCoordAttributeName()); parseLog += QLatin1String("\'.\n"); } } @@ -339,8 +326,8 @@ void QQuickShaderEffectCommon::updateShader(QQuickItem *item, Key::ShaderType sh if (code.isEmpty()) { // Optimize for default code. if (shaderType == Key::VertexShader) { - attributes.append(QByteArray(qt_position_attribute_name)); - attributes.append(QByteArray(qt_texcoord_attribute_name)); + attributes.append(QByteArray(qtPositionAttributeName())); + attributes.append(QByteArray(qtTexCoordAttributeName())); UniformData d; d.name = "qt_Matrix"; d.specialType = UniformData::Matrix; diff --git a/src/quick/items/qquickshadereffect_p.h b/src/quick/items/qquickshadereffect_p.h index fb266d4c44..c43e4a558e 100644 --- a/src/quick/items/qquickshadereffect_p.h +++ b/src/quick/items/qquickshadereffect_p.h @@ -63,9 +63,6 @@ QT_BEGIN_NAMESPACE -const char *qtPositionAttributeName(); -const char *qtTexCoordAttributeName(); - class QSGContext; class QSignalMapper; class QQuickCustomMaterialShader; diff --git a/src/quick/items/qquickshadereffectmesh.cpp b/src/quick/items/qquickshadereffectmesh.cpp index 0811025654..478954e142 100644 --- a/src/quick/items/qquickshadereffectmesh.cpp +++ b/src/quick/items/qquickshadereffectmesh.cpp @@ -39,10 +39,22 @@ #include "qquickshadereffectmesh_p.h" #include <QtQuick/qsggeometry.h> -#include "qquickshadereffect_p.h" QT_BEGIN_NAMESPACE +static const char qt_position_attribute_name[] = "qt_Vertex"; +static const char qt_texcoord_attribute_name[] = "qt_MultiTexCoord0"; + +const char *qtPositionAttributeName() +{ + return qt_position_attribute_name; +} + +const char *qtTexCoordAttributeName() +{ + return qt_texcoord_attribute_name; +} + QQuickShaderEffectMesh::QQuickShaderEffectMesh(QObject *parent) : QObject(parent) { diff --git a/src/quick/items/qquickshadereffectmesh_p.h b/src/quick/items/qquickshadereffectmesh_p.h index 7f9c95888c..c3dcb0322e 100644 --- a/src/quick/items/qquickshadereffectmesh_p.h +++ b/src/quick/items/qquickshadereffectmesh_p.h @@ -43,8 +43,8 @@ #include <QtGui/qcolor.h> #include <QtCore/qobject.h> #include <QtCore/qsize.h> -#include <QtCore/qvariant.h> -#include <QtGui/qopenglfunctions.h> +#include <QtCore/qvector.h> +#include <QtCore/qbytearray.h> #ifndef QQUICKSHADEREFFECTMESH_P_H #define QQUICKSHADEREFFECTMESH_P_H @@ -62,6 +62,9 @@ QT_BEGIN_NAMESPACE +const char *qtPositionAttributeName(); +const char *qtTexCoordAttributeName(); + class QSGGeometry; class QRectF; |