diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2015-01-28 08:31:29 +0100 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2015-02-08 11:15:35 +0000 |
commit | bfc4432f4deccb6b1287e4cc0d4aa8e34ea810c1 (patch) | |
tree | 62031b56bb903796df11f84a6df8215effe9ea8c /src/render | |
parent | f49cabe35cbd89bd4e5a0e91100a96afdb5d8401 (diff) |
QTexture renamed to QAbstractTextureProvider
This is done prior to the whole texture API refactoring.
Doc was also added, might need improvement later on but a base is present at
least.
Change-Id: I75589f14dfbfba7bc4250b2e0960670e020ed38a
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/render')
31 files changed, 372 insertions, 249 deletions
diff --git a/src/render/backend/qrenderaspect.cpp b/src/render/backend/qrenderaspect.cpp index 4cdd8a0b1..1f2cd7175 100644 --- a/src/render/backend/qrenderaspect.cpp +++ b/src/render/backend/qrenderaspect.cpp @@ -190,7 +190,7 @@ void QRenderAspect::registerBackendTypes() registerBackendType<QTransform>(QBackendNodeFunctorPtr(new Render::RenderNodeFunctor<Render::RenderTransform, Render::TransformManager>(d->m_renderer->transformManager()))); registerBackendType<QMaterial>(QBackendNodeFunctorPtr(new Render::RenderNodeFunctor<Render::RenderMaterial, Render::MaterialManager>(d->m_renderer->materialManager()))); registerBackendType<QTechnique>(QBackendNodeFunctorPtr(new Render::RenderNodeFunctor<Render::RenderTechnique, Render::TechniqueManager>(d->m_renderer->techniqueManager()))); - registerBackendType<QTexture>(QBackendNodeFunctorPtr(new Render::RenderNodeFunctor<Render::RenderTexture, Render::TextureManager>(d->m_renderer->textureManager()))); + registerBackendType<QAbstractTextureProvider>(QBackendNodeFunctorPtr(new Render::RenderNodeFunctor<Render::RenderTexture, Render::TextureManager>(d->m_renderer->textureManager()))); registerBackendType<QShaderProgram>(QBackendNodeFunctorPtr(new Render::RenderNodeFunctor<Render::RenderShader, Render::ShaderManager>(d->m_renderer->shaderManager()))); registerBackendType<QEffect>(QBackendNodeFunctorPtr(new Render::RenderNodeFunctor<Render::RenderEffect, Render::EffectManager>(d->m_renderer->effectManager()))); registerBackendType<QAnnotation>(QBackendNodeFunctorPtr(new Render::RenderNodeFunctor<Render::RenderAnnotation, Render::CriterionManager>(d->m_renderer->criterionManager()))); diff --git a/src/render/backend/renderparameter.cpp b/src/render/backend/renderparameter.cpp index 71bcbbca2..adcacd4cd 100644 --- a/src/render/backend/renderparameter.cpp +++ b/src/render/backend/renderparameter.cpp @@ -105,7 +105,7 @@ QVariant RenderParameter::toBackendValue(const QVariant &value) if (node == Q_NULLPTR) { return value; - } else if (qobject_cast<QTexture*>(node)) { + } else if (qobject_cast<QAbstractTextureProvider*>(node)) { return QVariant::fromValue(m_textureManager->getOrCreateResource(node->id())); } else if (qobject_cast<QShaderData*>(node)) { return QVariant::fromValue(m_shaderDataManager->getOrCreateResource(node->id())); diff --git a/src/render/backend/rendertexture.cpp b/src/render/backend/rendertexture.cpp index 81bb1130d..fa897f39f 100644 --- a/src/render/backend/rendertexture.cpp +++ b/src/render/backend/rendertexture.cpp @@ -63,16 +63,16 @@ RenderTexture::RenderTexture() , m_height(1) , m_depth(1) , m_generateMipMaps(false) - , m_target(QTexture::Target2D) - , m_format(QTexture::RGBA8U) - , m_magnificationFilter(QTexture::Nearest) - , m_minificationFilter(QTexture::Nearest) + , m_target(QAbstractTextureProvider::Target2D) + , m_format(QAbstractTextureProvider::RGBA8U) + , m_magnificationFilter(QAbstractTextureProvider::Nearest) + , m_minificationFilter(QAbstractTextureProvider::Nearest) , m_wrapModeX(QTextureWrapMode::ClampToEdge) , m_wrapModeY(QTextureWrapMode::ClampToEdge) , m_wrapModeZ(QTextureWrapMode::ClampToEdge) , m_maximumAnisotropy(1.0f) - , m_comparisonFunction(QTexture::CompareLessEqual) - , m_comparisonMode(QTexture::CompareNone) + , m_comparisonFunction(QAbstractTextureProvider::CompareLessEqual) + , m_comparisonMode(QAbstractTextureProvider::CompareNone) , m_isDirty(false) , m_filtersAndWrapUpdated(false) , m_lock(new QMutex()) @@ -94,7 +94,7 @@ void RenderTexture::cleanup() void RenderTexture::updateFromPeer(QNode *peer) { - QTexture *texture = static_cast<QTexture *>(peer); + QAbstractTextureProvider *texture = static_cast<QAbstractTextureProvider *>(peer); QMutexLocker lock(m_lock); if (texture != Q_NULLPTR) { @@ -233,13 +233,13 @@ void RenderTexture::setToGLTexture(TexImageDataPtr imgData) void RenderTexture::updateWrapAndFilters() { m_gl->setWrapMode(QOpenGLTexture::DirectionS, static_cast<QOpenGLTexture::WrapMode>(m_wrapModeX)); - if (m_target != QTexture::Target1D && - m_target != QTexture::Target1DArray && - m_target != QTexture::TargetBuffer) + if (m_target != QAbstractTextureProvider::Target1D && + m_target != QAbstractTextureProvider::Target1DArray && + m_target != QAbstractTextureProvider::TargetBuffer) m_gl->setWrapMode(QOpenGLTexture::DirectionT, static_cast<QOpenGLTexture::WrapMode>(m_wrapModeY)); - if (m_target == QTexture::Target3D || - m_target == QTexture::TargetCubeMap || - m_target == QTexture::TargetCubeMapArray) + if (m_target == QAbstractTextureProvider::Target3D || + m_target == QAbstractTextureProvider::TargetCubeMap || + m_target == QAbstractTextureProvider::TargetCubeMapArray) m_gl->setWrapMode(QOpenGLTexture::DirectionR, static_cast<QOpenGLTexture::WrapMode>(m_wrapModeZ)); m_gl->setMinMagFilters(static_cast<QOpenGLTexture::Filter>(m_minificationFilter), static_cast<QOpenGLTexture::Filter>(m_magnificationFilter)); @@ -290,12 +290,12 @@ void RenderTexture::sceneChangeEvent(const QSceneChangePtr &e) m_generateMipMaps = propertyChange->value().toBool(); m_isDirty = (oldMipMaps != m_generateMipMaps); } else if (propertyChange->propertyName() == QByteArrayLiteral("minificationFilter")) { - QTexture::Filter oldMinFilter = m_minificationFilter; - m_minificationFilter = static_cast<QTexture::Filter>(propertyChange->value().toInt()); + QAbstractTextureProvider::Filter oldMinFilter = m_minificationFilter; + m_minificationFilter = static_cast<QAbstractTextureProvider::Filter>(propertyChange->value().toInt()); m_filtersAndWrapUpdated = (oldMinFilter != m_minificationFilter); } else if (propertyChange->propertyName() == QByteArrayLiteral("magnificationFilter")) { - QTexture::Filter oldMagFilter = m_magnificationFilter; - m_magnificationFilter = static_cast<QTexture::Filter>(propertyChange->value().toInt()); + QAbstractTextureProvider::Filter oldMagFilter = m_magnificationFilter; + m_magnificationFilter = static_cast<QAbstractTextureProvider::Filter>(propertyChange->value().toInt()); m_filtersAndWrapUpdated = (oldMagFilter != m_magnificationFilter); } else if (propertyChange->propertyName() == QByteArrayLiteral("wrapModeX")) { QTextureWrapMode::WrapMode oldWrapModeX = m_wrapModeX; @@ -310,24 +310,24 @@ void RenderTexture::sceneChangeEvent(const QSceneChangePtr &e) m_wrapModeZ =static_cast<QTextureWrapMode::WrapMode>(propertyChange->value().toInt()); m_filtersAndWrapUpdated = (oldWrapModeZ != m_wrapModeZ); } else if (propertyChange->propertyName() == QByteArrayLiteral("format")) { - QTexture::TextureFormat oldFormat = m_format; - m_format = static_cast<QTexture::TextureFormat>(propertyChange->value().toInt()); + QAbstractTextureProvider::TextureFormat oldFormat = m_format; + m_format = static_cast<QAbstractTextureProvider::TextureFormat>(propertyChange->value().toInt()); m_isDirty = (oldFormat != m_format); } else if (propertyChange->propertyName() == QByteArrayLiteral("target")) { - QTexture::Target oldTarget = m_target; - m_target = static_cast<QTexture::Target>(propertyChange->value().toInt()); + QAbstractTextureProvider::Target oldTarget = m_target; + m_target = static_cast<QAbstractTextureProvider::Target>(propertyChange->value().toInt()); m_isDirty = (oldTarget != m_target); } else if (propertyChange->propertyName() == QByteArrayLiteral("maximumAnisotropy")) { float oldMaximumAnisotropy = m_maximumAnisotropy; m_maximumAnisotropy = propertyChange->value().toFloat(); m_filtersAndWrapUpdated = !qFuzzyCompare(oldMaximumAnisotropy, m_maximumAnisotropy); } else if (propertyChange->propertyName() == QByteArrayLiteral("comparisonFunction")) { - QTexture::ComparisonFunction oldComparisonFunction = m_comparisonFunction; - m_comparisonFunction = propertyChange->value().value<QTexture::ComparisonFunction>(); + QAbstractTextureProvider::ComparisonFunction oldComparisonFunction = m_comparisonFunction; + m_comparisonFunction = propertyChange->value().value<QAbstractTextureProvider::ComparisonFunction>(); m_filtersAndWrapUpdated = (oldComparisonFunction != m_comparisonFunction); } else if (propertyChange->propertyName() == QByteArrayLiteral("comparisonMode")) { - QTexture::ComparisonMode oldComparisonMode = m_comparisonMode; - m_comparisonMode = propertyChange->value().value<QTexture::ComparisonMode>(); + QAbstractTextureProvider::ComparisonMode oldComparisonMode = m_comparisonMode; + m_comparisonMode = propertyChange->value().value<QAbstractTextureProvider::ComparisonMode>(); m_filtersAndWrapUpdated = (oldComparisonMode != m_comparisonMode); } } diff --git a/src/render/backend/rendertexture_p.h b/src/render/backend/rendertexture_p.h index 0b4f781ac..cdd69d911 100644 --- a/src/render/backend/rendertexture_p.h +++ b/src/render/backend/rendertexture_p.h @@ -54,7 +54,7 @@ class QOpenGLTexture; namespace Qt3D { -class QTexture; +class QAbstractTextureProvider; namespace Render { @@ -88,16 +88,16 @@ private: int m_height; int m_depth; bool m_generateMipMaps; - QTexture::Target m_target; - QTexture::TextureFormat m_format; - QTexture::Filter m_magnificationFilter; - QTexture::Filter m_minificationFilter; + QAbstractTextureProvider::Target m_target; + QAbstractTextureProvider::TextureFormat m_format; + QAbstractTextureProvider::Filter m_magnificationFilter; + QAbstractTextureProvider::Filter m_minificationFilter; QTextureWrapMode::WrapMode m_wrapModeX; QTextureWrapMode::WrapMode m_wrapModeY; QTextureWrapMode::WrapMode m_wrapModeZ; float m_maximumAnisotropy; - QTexture::ComparisonFunction m_comparisonFunction; - QTexture::ComparisonMode m_comparisonMode; + QAbstractTextureProvider::ComparisonFunction m_comparisonFunction; + QAbstractTextureProvider::ComparisonMode m_comparisonMode; QList<TexImageDataPtr> m_imageData; bool m_isDirty; diff --git a/src/render/backend/rendertextureprovider.cpp b/src/render/backend/rendertextureprovider.cpp index 219b75f28..14a3b6e0c 100644 --- a/src/render/backend/rendertextureprovider.cpp +++ b/src/render/backend/rendertextureprovider.cpp @@ -52,7 +52,7 @@ RenderTextureProvider::RenderTextureProvider() { } -RenderTexturePtr RenderTextureProvider::get(QTexture *t) +RenderTexturePtr RenderTextureProvider::get(QAbstractTextureProvider *t) { if (m_dict.contains(t)) return m_dict.value(t); diff --git a/src/render/backend/rendertextureprovider_p.h b/src/render/backend/rendertextureprovider_p.h index 42b516148..28879e195 100644 --- a/src/render/backend/rendertextureprovider_p.h +++ b/src/render/backend/rendertextureprovider_p.h @@ -49,7 +49,7 @@ QT_BEGIN_NAMESPACE namespace Qt3D { -class QTexture; +class QAbstractTextureProvider; namespace Render { @@ -61,9 +61,9 @@ class RenderTextureProvider public: RenderTextureProvider(); - Render::RenderTexturePtr get(QTexture* t); + Render::RenderTexturePtr get(QAbstractTextureProvider* t); private: - QHash<QTexture*, Render::RenderTexturePtr> m_dict; + QHash<QAbstractTextureProvider*, Render::RenderTexturePtr> m_dict; }; } // namespace Render diff --git a/src/render/backend/texturedatamanager.cpp b/src/render/backend/texturedatamanager.cpp index 627ee095f..528ade8e3 100644 --- a/src/render/backend/texturedatamanager.cpp +++ b/src/render/backend/texturedatamanager.cpp @@ -47,7 +47,7 @@ namespace Qt3D { namespace Render { -void Qt3D::Render::TextureDataManager::addTextureData(Qt3D::QTexture *texture) +void Qt3D::Render::TextureDataManager::addTextureData(Qt3D::QAbstractTextureProvider *texture) { if (!contains(texture->id()) && !m_texturesPending.contains(texture)) m_texturesPending.append(texture); diff --git a/src/render/backend/texturedatamanager_p.h b/src/render/backend/texturedatamanager_p.h index 08b8fc38e..d920e5e59 100644 --- a/src/render/backend/texturedatamanager_p.h +++ b/src/render/backend/texturedatamanager_p.h @@ -64,13 +64,13 @@ class TextureDataManager : public QResourceManager<TexImageData, public: TextureDataManager() {} - void addTextureData(QTexture *texture); + void addTextureData(QAbstractTextureProvider *texture); - QList<QTexture *> texturesPending() const { return m_texturesPending; } + QList<QAbstractTextureProvider *> texturesPending() const { return m_texturesPending; } void clearTexturesPending() { m_texturesPending.clear(); } private: - QList<QTexture *> m_texturesPending; + QList<QAbstractTextureProvider *> m_texturesPending; }; } // Render diff --git a/src/render/defaults/qdiffusemapmaterial.cpp b/src/render/defaults/qdiffusemapmaterial.cpp index d32633cc0..8b16b8f4a 100644 --- a/src/render/defaults/qdiffusemapmaterial.cpp +++ b/src/render/defaults/qdiffusemapmaterial.cpp @@ -60,7 +60,7 @@ namespace Qt3D { QDiffuseMapMaterialPrivate::QDiffuseMapMaterialPrivate(QDiffuseMapMaterial *qq) : QMaterialPrivate(qq) , m_diffuseMapEffect(new QEffect()) - , m_diffuseTexture(new QTexture(QTexture::Target2D)) + , m_diffuseTexture(new QAbstractTextureProvider(QAbstractTextureProvider::Target2D)) , m_ambientParameter(new QParameter(QStringLiteral("ka"), QColor::fromRgbF(0.05f, 0.05f, 0.05f, 1.0f))) , m_diffuseParameter(new QParameter(QStringLiteral("diffuseTexture"), m_diffuseTexture)) , m_specularParameter(new QParameter(QStringLiteral("ks"), QColor::fromRgbF(0.95f, 0.95f, 0.95f, 1.0f))) @@ -77,8 +77,8 @@ QDiffuseMapMaterialPrivate::QDiffuseMapMaterialPrivate(QDiffuseMapMaterial *qq) , m_diffuseMapGL3Shader(new QShaderProgram()) , m_diffuseMapGL2ES2Shader(new QShaderProgram()) { - m_diffuseTexture->setMagnificationFilter(QTexture::Linear); - m_diffuseTexture->setMinificationFilter(QTexture::LinearMipMapLinear); + m_diffuseTexture->setMagnificationFilter(QAbstractTextureProvider::Linear); + m_diffuseTexture->setMinificationFilter(QAbstractTextureProvider::LinearMipMapLinear); m_diffuseTexture->setWrapMode(QTextureWrapMode(QTextureWrapMode::Repeat)); m_diffuseTexture->setGenerateMipMaps(true); m_diffuseTexture->setMaximumAnisotropy(16.0f); @@ -209,10 +209,10 @@ float QDiffuseMapMaterial::shininess() const the wrap mode is repeat, the maximum anisotropy is set to 16.0 and mipmapping is enabled. */ -QTexture *QDiffuseMapMaterial::diffuse() const +QAbstractTextureProvider *QDiffuseMapMaterial::diffuse() const { Q_D(const QDiffuseMapMaterial); - return d->m_diffuseParameter->value().value<QTexture *>(); + return d->m_diffuseParameter->value().value<QAbstractTextureProvider *>(); } /*! @@ -259,7 +259,7 @@ void QDiffuseMapMaterial::setShininess(float shininess) \fn Qt3D::QDiffuseMapMaterial::setDiffuse(QTexture *diffuseMap) Sets the current diffuse map to \a diffuseMap. */ -void QDiffuseMapMaterial::setDiffuse(QTexture *diffuseMap) +void QDiffuseMapMaterial::setDiffuse(QAbstractTextureProvider *diffuseMap) { Q_D(QDiffuseMapMaterial); d->m_diffuseParameter->setValue(QVariant::fromValue(diffuseMap)); diff --git a/src/render/defaults/qdiffusemapmaterial.h b/src/render/defaults/qdiffusemapmaterial.h index 69eb0d33f..0f3d9cf51 100644 --- a/src/render/defaults/qdiffusemapmaterial.h +++ b/src/render/defaults/qdiffusemapmaterial.h @@ -50,7 +50,7 @@ QT_BEGIN_NAMESPACE namespace Qt3D { class QDiffuseMapMaterialPrivate; -class QTexture; +class QAbstractTextureProvider; class QT3DRENDERERSHARED_EXPORT QDiffuseMapMaterial : public QMaterial { @@ -58,7 +58,7 @@ class QT3DRENDERERSHARED_EXPORT QDiffuseMapMaterial : public QMaterial Q_PROPERTY(QColor ambient READ ambient WRITE setAmbient NOTIFY ambientChanged) Q_PROPERTY(QColor specular READ specular WRITE setSpecular NOTIFY specularChanged) Q_PROPERTY(float shininess READ shininess WRITE setShininess NOTIFY shininessChanged) - Q_PROPERTY(QTexture *diffuse READ diffuse WRITE setDiffuse NOTIFY diffuseChanged) + Q_PROPERTY(QAbstractTextureProvider *diffuse READ diffuse WRITE setDiffuse NOTIFY diffuseChanged) Q_PROPERTY(float textureScale READ textureScale WRITE setTextureScale NOTIFY textureScaleChanged) public: @@ -68,13 +68,13 @@ public: QColor ambient() const; QColor specular() const; float shininess() const; - QTexture *diffuse() const; + QAbstractTextureProvider *diffuse() const; float textureScale() const; void setAmbient(const QColor &color); void setSpecular(const QColor &specular); void setShininess(float shininess); - void setDiffuse(QTexture *diffuse); + void setDiffuse(QAbstractTextureProvider *diffuse); void setTextureScale(float textureScale); Q_SIGNALS: diff --git a/src/render/defaults/qdiffusemapmaterial_p.h b/src/render/defaults/qdiffusemapmaterial_p.h index 538128668..515094a3e 100644 --- a/src/render/defaults/qdiffusemapmaterial_p.h +++ b/src/render/defaults/qdiffusemapmaterial_p.h @@ -49,7 +49,7 @@ QT_BEGIN_NAMESPACE namespace Qt3D { class QEffect; -class QTexture; +class QAbstractTextureProvider; class QTechnique; class QParameter; class QShaderProgram; @@ -65,7 +65,7 @@ class QDiffuseMapMaterialPrivate : public QMaterialPrivate void init(); QEffect *m_diffuseMapEffect; - QTexture *m_diffuseTexture; + QAbstractTextureProvider *m_diffuseTexture; QParameter *m_ambientParameter; QParameter *m_diffuseParameter; QParameter *m_specularParameter; diff --git a/src/render/defaults/qdiffusespecularmapmaterial.cpp b/src/render/defaults/qdiffusespecularmapmaterial.cpp index 864d1ed22..ce0abe9f2 100644 --- a/src/render/defaults/qdiffusespecularmapmaterial.cpp +++ b/src/render/defaults/qdiffusespecularmapmaterial.cpp @@ -61,8 +61,8 @@ namespace Qt3D { QDiffuseSpecularMapMaterialPrivate::QDiffuseSpecularMapMaterialPrivate(QDiffuseSpecularMapMaterial *qq) : QMaterialPrivate(qq) , m_diffuseSpecularMapEffect(new QEffect()) - , m_diffuseTexture(new QTexture(QTexture::Target2D)) - , m_specularTexture(new QTexture(QTexture::Target2D)) + , m_diffuseTexture(new QAbstractTextureProvider(QAbstractTextureProvider::Target2D)) + , m_specularTexture(new QAbstractTextureProvider(QAbstractTextureProvider::Target2D)) , m_ambientParameter(new QParameter(QStringLiteral("ka"), QColor::fromRgbF(0.05f, 0.05f, 0.05f, 1.0f))) , m_diffuseParameter(new QParameter(QStringLiteral("diffuseTexture"), m_diffuseTexture)) , m_specularParameter(new QParameter(QStringLiteral("specularTexture"), m_specularTexture)) @@ -79,14 +79,14 @@ QDiffuseSpecularMapMaterialPrivate::QDiffuseSpecularMapMaterialPrivate(QDiffuseS , m_diffuseSpecularMapGL3Shader(new QShaderProgram()) , m_diffuseSpecularMapGL2ES2Shader(new QShaderProgram()) { - m_diffuseTexture->setMagnificationFilter(QTexture::Linear); - m_diffuseTexture->setMinificationFilter(QTexture::LinearMipMapLinear); + m_diffuseTexture->setMagnificationFilter(QAbstractTextureProvider::Linear); + m_diffuseTexture->setMinificationFilter(QAbstractTextureProvider::LinearMipMapLinear); m_diffuseTexture->setWrapMode(QTextureWrapMode(QTextureWrapMode::Repeat)); m_diffuseTexture->setGenerateMipMaps(true); m_diffuseTexture->setMaximumAnisotropy(16.0f); - m_specularTexture->setMagnificationFilter(QTexture::Linear); - m_specularTexture->setMinificationFilter(QTexture::LinearMipMapLinear); + m_specularTexture->setMagnificationFilter(QAbstractTextureProvider::Linear); + m_specularTexture->setMinificationFilter(QAbstractTextureProvider::LinearMipMapLinear); m_specularTexture->setWrapMode(QTextureWrapMode(QTextureWrapMode::Repeat)); m_specularTexture->setGenerateMipMaps(true); m_specularTexture->setMaximumAnisotropy(16.0f); @@ -196,10 +196,10 @@ QColor QDiffuseSpecularMapMaterial::ambient() const the wrap mode is repeat, the maximum anisotropy is set to 16.0 and mipmapping is enabled. */ -QTexture *QDiffuseSpecularMapMaterial::diffuse() const +QAbstractTextureProvider *QDiffuseSpecularMapMaterial::diffuse() const { Q_D(const QDiffuseSpecularMapMaterial); - return d->m_diffuseParameter->value().value<QTexture *>(); + return d->m_diffuseParameter->value().value<QAbstractTextureProvider *>(); } /*! @@ -210,10 +210,10 @@ QTexture *QDiffuseSpecularMapMaterial::diffuse() const the wrap mode is repeat, the maximum anisotropy is set to 16.0 and mipmapping is enabled. */ -QTexture *QDiffuseSpecularMapMaterial::specular() const +QAbstractTextureProvider *QDiffuseSpecularMapMaterial::specular() const { Q_D(const QDiffuseSpecularMapMaterial); - return d->m_specularParameter->value().value<QTexture *>(); + return d->m_specularParameter->value().value<QAbstractTextureProvider *>(); } /*! @@ -250,7 +250,7 @@ void QDiffuseSpecularMapMaterial::setAmbient(const QColor &ambient) \fn Qt3D::QDiffuseSpecularMapMaterial::setDiffuse(QTexture *diffuse) Sets the current diffuse map to \a diffuse. */ -void QDiffuseSpecularMapMaterial::setDiffuse(QTexture *diffuse) +void QDiffuseSpecularMapMaterial::setDiffuse(QAbstractTextureProvider *diffuse) { Q_D(QDiffuseSpecularMapMaterial); d->m_diffuseParameter->setValue(QVariant::fromValue(diffuse)); @@ -260,7 +260,7 @@ void QDiffuseSpecularMapMaterial::setDiffuse(QTexture *diffuse) \fn Qt3D::QDiffuseSpecularMapMaterial::setSpecular(QTexture *specular) Sets the current specular map to \a specular. */ -void QDiffuseSpecularMapMaterial::setSpecular(QTexture *specular) +void QDiffuseSpecularMapMaterial::setSpecular(QAbstractTextureProvider *specular) { Q_D(QDiffuseSpecularMapMaterial); d->m_specularParameter->setValue(QVariant::fromValue(specular)); diff --git a/src/render/defaults/qdiffusespecularmapmaterial.h b/src/render/defaults/qdiffusespecularmapmaterial.h index bcaa5b37e..06c184ce0 100644 --- a/src/render/defaults/qdiffusespecularmapmaterial.h +++ b/src/render/defaults/qdiffusespecularmapmaterial.h @@ -49,7 +49,7 @@ QT_BEGIN_NAMESPACE namespace Qt3D { -class QTexture; +class QAbstractTextureProvider; class QDiffuseSpecularMapMaterialPrivate; class QT3DRENDERERSHARED_EXPORT QDiffuseSpecularMapMaterial : public QMaterial @@ -57,8 +57,8 @@ class QT3DRENDERERSHARED_EXPORT QDiffuseSpecularMapMaterial : public QMaterial Q_OBJECT Q_PROPERTY(QColor ambient READ ambient WRITE setAmbient NOTIFY ambientChanged) Q_PROPERTY(float shininess READ shininess WRITE setShininess NOTIFY shininessChanged) - Q_PROPERTY(QTexture *specular READ specular WRITE setSpecular NOTIFY specularChanged) - Q_PROPERTY(QTexture *diffuse READ diffuse WRITE setDiffuse NOTIFY diffuseChanged) + Q_PROPERTY(QAbstractTextureProvider *specular READ specular WRITE setSpecular NOTIFY specularChanged) + Q_PROPERTY(QAbstractTextureProvider *diffuse READ diffuse WRITE setDiffuse NOTIFY diffuseChanged) Q_PROPERTY(float textureScale READ textureScale WRITE setTextureScale NOTIFY textureScaleChanged) public: @@ -66,14 +66,14 @@ public: ~QDiffuseSpecularMapMaterial(); QColor ambient() const; - QTexture *diffuse() const; - QTexture *specular() const; + QAbstractTextureProvider *diffuse() const; + QAbstractTextureProvider *specular() const; float shininess() const; float textureScale() const; void setAmbient(const QColor &ambient); - void setDiffuse(QTexture *diffuse); - void setSpecular(QTexture *specular); + void setDiffuse(QAbstractTextureProvider *diffuse); + void setSpecular(QAbstractTextureProvider *specular); void setShininess(float shininess); void setTextureScale(float textureScale); diff --git a/src/render/defaults/qdiffusespecularmapmaterial_p.h b/src/render/defaults/qdiffusespecularmapmaterial_p.h index 8dc642443..4636d4cdd 100644 --- a/src/render/defaults/qdiffusespecularmapmaterial_p.h +++ b/src/render/defaults/qdiffusespecularmapmaterial_p.h @@ -49,7 +49,7 @@ QT_BEGIN_NAMESPACE namespace Qt3D { class QEffect; -class QTexture; +class QAbstractTextureProvider; class QTechnique; class QParameter; class QShaderProgram; @@ -66,8 +66,8 @@ public: void init(); QEffect *m_diffuseSpecularMapEffect; - QTexture *m_diffuseTexture; - QTexture *m_specularTexture; + QAbstractTextureProvider *m_diffuseTexture; + QAbstractTextureProvider *m_specularTexture; QParameter *m_ambientParameter; QParameter *m_diffuseParameter; QParameter *m_specularParameter; diff --git a/src/render/defaults/qnormaldiffusemapmaterial.cpp b/src/render/defaults/qnormaldiffusemapmaterial.cpp index 896de08b7..cead0c51a 100644 --- a/src/render/defaults/qnormaldiffusemapmaterial.cpp +++ b/src/render/defaults/qnormaldiffusemapmaterial.cpp @@ -61,8 +61,8 @@ namespace Qt3D { QNormalDiffuseMapMaterialPrivate::QNormalDiffuseMapMaterialPrivate(QNormalDiffuseMapMaterial *qq) : QMaterialPrivate(qq) , m_normalDiffuseEffect(new QEffect()) - , m_diffuseTexture(new QTexture(QTexture::Target2D)) - , m_normalTexture(new QTexture(QTexture::Target2D)) + , m_diffuseTexture(new QAbstractTextureProvider(QAbstractTextureProvider::Target2D)) + , m_normalTexture(new QAbstractTextureProvider(QAbstractTextureProvider::Target2D)) , m_ambientParameter(new QParameter(QStringLiteral("ka"), QColor::fromRgbF(0.1f, 0.1f, 0.1f, 1.0f))) , m_diffuseParameter(new QParameter(QStringLiteral("diffuseTexture"), m_diffuseTexture)) , m_normalParameter(new QParameter(QStringLiteral("normalTexture"), m_normalTexture)) @@ -80,14 +80,14 @@ QNormalDiffuseMapMaterialPrivate::QNormalDiffuseMapMaterialPrivate(QNormalDiffus , m_normalDiffuseGL3Shader(new QShaderProgram()) , m_normalDiffuseGL2ES2Shader(new QShaderProgram()) { - m_diffuseTexture->setMagnificationFilter(QTexture::Linear); - m_diffuseTexture->setMinificationFilter(QTexture::LinearMipMapLinear); + m_diffuseTexture->setMagnificationFilter(QAbstractTextureProvider::Linear); + m_diffuseTexture->setMinificationFilter(QAbstractTextureProvider::LinearMipMapLinear); m_diffuseTexture->setWrapMode(QTextureWrapMode(QTextureWrapMode::Repeat)); m_diffuseTexture->setGenerateMipMaps(true); m_diffuseTexture->setMaximumAnisotropy(16.0f); - m_normalTexture->setMagnificationFilter(QTexture::Linear); - m_normalTexture->setMinificationFilter(QTexture::Linear); + m_normalTexture->setMagnificationFilter(QAbstractTextureProvider::Linear); + m_normalTexture->setMinificationFilter(QAbstractTextureProvider::Linear); m_normalTexture->setWrapMode(QTextureWrapMode(QTextureWrapMode::Repeat)); m_normalTexture->setMaximumAnisotropy(16.0f); } @@ -221,10 +221,10 @@ QColor QNormalDiffuseMapMaterial::specular() const the wrap mode is repeat, the maximum anisotropy is set to 16.0 and mipmapping is enabled. */ -QTexture *QNormalDiffuseMapMaterial::diffuse() const +QAbstractTextureProvider *QNormalDiffuseMapMaterial::diffuse() const { Q_D(const QNormalDiffuseMapMaterial); - return d->m_diffuseParameter->value().value<QTexture *>(); + return d->m_diffuseParameter->value().value<QAbstractTextureProvider *>(); } /*! @@ -234,10 +234,10 @@ QTexture *QNormalDiffuseMapMaterial::diffuse() const and magnification filters, the wrap mode is repeat and maximum anisotropy is set to 16.0. */ -QTexture *QNormalDiffuseMapMaterial::normal() const +QAbstractTextureProvider *QNormalDiffuseMapMaterial::normal() const { Q_D(const QNormalDiffuseMapMaterial); - return d->m_normalParameter->value().value<QTexture *>(); + return d->m_normalParameter->value().value<QAbstractTextureProvider *>(); } /*! @@ -284,7 +284,7 @@ void QNormalDiffuseMapMaterial::setSpecular(const QColor &specular) \fn Qt3D::QNormalDiffuseMapMaterial::setDiffuse(QTexture *diffuse) Sets the current diffuse map to \a diffuse. */ -void QNormalDiffuseMapMaterial::setDiffuse(QTexture *diffuse) +void QNormalDiffuseMapMaterial::setDiffuse(QAbstractTextureProvider *diffuse) { Q_D(QNormalDiffuseMapMaterial); d->m_diffuseParameter->setValue(QVariant::fromValue(diffuse)); @@ -294,7 +294,7 @@ void QNormalDiffuseMapMaterial::setDiffuse(QTexture *diffuse) \fn Qt3D::QNormalDiffuseMapMaterial::setNormal(QTexture *normal) Sets the current normal map to \a normal. */ -void QNormalDiffuseMapMaterial::setNormal(QTexture *normal) +void QNormalDiffuseMapMaterial::setNormal(QAbstractTextureProvider *normal) { Q_D(QNormalDiffuseMapMaterial); d->m_normalParameter->setValue(QVariant::fromValue(normal)); diff --git a/src/render/defaults/qnormaldiffusemapmaterial.h b/src/render/defaults/qnormaldiffusemapmaterial.h index 34c1cf7c3..5c6320113 100644 --- a/src/render/defaults/qnormaldiffusemapmaterial.h +++ b/src/render/defaults/qnormaldiffusemapmaterial.h @@ -49,7 +49,7 @@ QT_BEGIN_NAMESPACE namespace Qt3D { -class QTexture; +class QAbstractTextureProvider; class QNormalDiffuseMapMaterialPrivate; class QT3DRENDERERSHARED_EXPORT QNormalDiffuseMapMaterial : public QMaterial @@ -57,8 +57,8 @@ class QT3DRENDERERSHARED_EXPORT QNormalDiffuseMapMaterial : public QMaterial Q_OBJECT Q_PROPERTY(QColor ambient READ ambient WRITE setAmbient NOTIFY ambientChanged) Q_PROPERTY(QColor specular READ specular WRITE setSpecular NOTIFY specularChanged) - Q_PROPERTY(QTexture *diffuse READ diffuse WRITE setDiffuse NOTIFY diffuseChanged) - Q_PROPERTY(QTexture *normal READ normal WRITE setNormal NOTIFY normalChanged) + Q_PROPERTY(QAbstractTextureProvider *diffuse READ diffuse WRITE setDiffuse NOTIFY diffuseChanged) + Q_PROPERTY(QAbstractTextureProvider *normal READ normal WRITE setNormal NOTIFY normalChanged) Q_PROPERTY(float shininess READ shininess WRITE setShininess NOTIFY shininessChanged) Q_PROPERTY(float textureScale READ textureScale WRITE setTextureScale NOTIFY textureScaleChanged) @@ -68,15 +68,15 @@ public: QColor ambient() const; QColor specular() const; - QTexture *diffuse() const; - QTexture *normal() const; + QAbstractTextureProvider *diffuse() const; + QAbstractTextureProvider *normal() const; float shininess() const; float textureScale() const; void setAmbient(const QColor &ambient); void setSpecular(const QColor &specular); - void setDiffuse(QTexture *diffuse); - void setNormal(QTexture *normal); + void setDiffuse(QAbstractTextureProvider *diffuse); + void setNormal(QAbstractTextureProvider *normal); void setShininess(float shininess); void setTextureScale(float textureScale); diff --git a/src/render/defaults/qnormaldiffusemapmaterial_p.h b/src/render/defaults/qnormaldiffusemapmaterial_p.h index eaa9ff496..7b4e3d90d 100644 --- a/src/render/defaults/qnormaldiffusemapmaterial_p.h +++ b/src/render/defaults/qnormaldiffusemapmaterial_p.h @@ -49,7 +49,7 @@ QT_BEGIN_NAMESPACE namespace Qt3D { class QEffect; -class QTexture; +class QAbstractTextureProvider; class QTechnique; class QParameter; class QShaderProgram; @@ -66,8 +66,8 @@ public: virtual void init(); QEffect *m_normalDiffuseEffect; - QTexture *m_diffuseTexture; - QTexture *m_normalTexture; + QAbstractTextureProvider *m_diffuseTexture; + QAbstractTextureProvider *m_normalTexture; QParameter *m_ambientParameter; QParameter *m_diffuseParameter; QParameter *m_normalParameter; diff --git a/src/render/defaults/qnormaldiffusespecularmapmaterial.cpp b/src/render/defaults/qnormaldiffusespecularmapmaterial.cpp index 0b21a4bb7..fb9d2fa97 100644 --- a/src/render/defaults/qnormaldiffusespecularmapmaterial.cpp +++ b/src/render/defaults/qnormaldiffusespecularmapmaterial.cpp @@ -60,9 +60,9 @@ namespace Qt3D { QNormalDiffuseSpecularMapMaterialPrivate::QNormalDiffuseSpecularMapMaterialPrivate(QNormalDiffuseSpecularMapMaterial *qq) : QMaterialPrivate(qq) , m_normalDiffuseSpecularEffect(new QEffect()) - , m_diffuseTexture(new QTexture(QTexture::Target2D)) - , m_normalTexture(new QTexture(QTexture::Target2D)) - , m_specularTexture(new QTexture(QTexture::Target2D)) + , m_diffuseTexture(new QAbstractTextureProvider(QAbstractTextureProvider::Target2D)) + , m_normalTexture(new QAbstractTextureProvider(QAbstractTextureProvider::Target2D)) + , m_specularTexture(new QAbstractTextureProvider(QAbstractTextureProvider::Target2D)) , m_ambientParameter(new QParameter(QStringLiteral("ka"), QColor::fromRgbF(0.05f, 0.05f, 0.05f, 1.0f))) , m_diffuseParameter(new QParameter(QStringLiteral("diffuseTexture"), m_diffuseTexture)) , m_normalParameter(new QParameter(QStringLiteral("normalTexture"), m_normalTexture)) @@ -80,19 +80,19 @@ QNormalDiffuseSpecularMapMaterialPrivate::QNormalDiffuseSpecularMapMaterialPriva , m_normalDiffuseSpecularGL3Shader(new QShaderProgram()) , m_normalDiffuseSpecularGL2ES2Shader(new QShaderProgram()) { - m_diffuseTexture->setMagnificationFilter(QTexture::Linear); - m_diffuseTexture->setMinificationFilter(QTexture::LinearMipMapLinear); + m_diffuseTexture->setMagnificationFilter(QAbstractTextureProvider::Linear); + m_diffuseTexture->setMinificationFilter(QAbstractTextureProvider::LinearMipMapLinear); m_diffuseTexture->setWrapMode(QTextureWrapMode(QTextureWrapMode::Repeat)); m_diffuseTexture->setGenerateMipMaps(true); m_diffuseTexture->setMaximumAnisotropy(16.0f); - m_normalTexture->setMagnificationFilter(QTexture::Linear); - m_normalTexture->setMinificationFilter(QTexture::Linear); + m_normalTexture->setMagnificationFilter(QAbstractTextureProvider::Linear); + m_normalTexture->setMinificationFilter(QAbstractTextureProvider::Linear); m_normalTexture->setWrapMode(QTextureWrapMode(QTextureWrapMode::Repeat)); m_normalTexture->setMaximumAnisotropy(16.0f); - m_specularTexture->setMagnificationFilter(QTexture::Linear); - m_specularTexture->setMinificationFilter(QTexture::LinearMipMapLinear); + m_specularTexture->setMagnificationFilter(QAbstractTextureProvider::Linear); + m_specularTexture->setMinificationFilter(QAbstractTextureProvider::LinearMipMapLinear); m_specularTexture->setWrapMode(QTextureWrapMode(QTextureWrapMode::Repeat)); m_specularTexture->setGenerateMipMaps(true); m_specularTexture->setMaximumAnisotropy(16.0f); @@ -218,10 +218,10 @@ QColor QNormalDiffuseSpecularMapMaterial::ambient() const the wrap mode is repeat, the maximum anisotropy is set to 16.0 and mipmapping is enabled. */ -QTexture *QNormalDiffuseSpecularMapMaterial::diffuse() const +QAbstractTextureProvider *QNormalDiffuseSpecularMapMaterial::diffuse() const { Q_D(const QNormalDiffuseSpecularMapMaterial); - return d->m_diffuseParameter->value().value<QTexture *>(); + return d->m_diffuseParameter->value().value<QAbstractTextureProvider *>(); } /*! @@ -231,10 +231,10 @@ QTexture *QNormalDiffuseSpecularMapMaterial::diffuse() const and magnification filters, the wrap mode is repeat and maximum anisotropy is set to 16.0. */ -QTexture *QNormalDiffuseSpecularMapMaterial::normal() const +QAbstractTextureProvider *QNormalDiffuseSpecularMapMaterial::normal() const { Q_D(const QNormalDiffuseSpecularMapMaterial); - return d->m_normalParameter->value().value<QTexture *>(); + return d->m_normalParameter->value().value<QAbstractTextureProvider *>(); } /*! @@ -245,10 +245,10 @@ QTexture *QNormalDiffuseSpecularMapMaterial::normal() const the wrap mode is repeat, the maximum anisotropy is set to 16.0 and mipmapping is enabled. */ -QTexture *QNormalDiffuseSpecularMapMaterial::specular() const +QAbstractTextureProvider *QNormalDiffuseSpecularMapMaterial::specular() const { Q_D(const QNormalDiffuseSpecularMapMaterial); - return d->m_specularParameter->value().value<QTexture *>(); + return d->m_specularParameter->value().value<QAbstractTextureProvider *>(); } /*! @@ -285,7 +285,7 @@ void QNormalDiffuseSpecularMapMaterial::setAmbient(const QColor &ambient) \fn Qt3D::QNormalDiffuseSpecularMapMaterial::setDiffuse(QTexture *diffuse) Sets the current diffuse map to \a diffuse. */ -void QNormalDiffuseSpecularMapMaterial::setDiffuse(QTexture *diffuse) +void QNormalDiffuseSpecularMapMaterial::setDiffuse(QAbstractTextureProvider *diffuse) { Q_D(QNormalDiffuseSpecularMapMaterial); d->m_diffuseParameter->setValue(QVariant::fromValue(diffuse)); @@ -295,7 +295,7 @@ void QNormalDiffuseSpecularMapMaterial::setDiffuse(QTexture *diffuse) \fn Qt3D::QNormalDiffuseSpecularMapMaterial::setNormal(QTexture *normal) Sets the current normal map to \a normal. */ -void QNormalDiffuseSpecularMapMaterial::setNormal(QTexture *normal) +void QNormalDiffuseSpecularMapMaterial::setNormal(QAbstractTextureProvider *normal) { Q_D(QNormalDiffuseSpecularMapMaterial); d->m_normalParameter->setValue(QVariant::fromValue(normal)); @@ -305,7 +305,7 @@ void QNormalDiffuseSpecularMapMaterial::setNormal(QTexture *normal) \fn Qt3D::QNormalDiffuseSpecularMapMaterial::setSpecular(QTexture *specular) Sets the current specular map to \a specular. */ -void QNormalDiffuseSpecularMapMaterial::setSpecular(QTexture *specular) +void QNormalDiffuseSpecularMapMaterial::setSpecular(QAbstractTextureProvider *specular) { Q_D(QNormalDiffuseSpecularMapMaterial); d->m_specularParameter->setValue(QVariant::fromValue(specular)); diff --git a/src/render/defaults/qnormaldiffusespecularmapmaterial.h b/src/render/defaults/qnormaldiffusespecularmapmaterial.h index 1694fe290..8e0dab80c 100644 --- a/src/render/defaults/qnormaldiffusespecularmapmaterial.h +++ b/src/render/defaults/qnormaldiffusespecularmapmaterial.h @@ -55,9 +55,9 @@ class QT3DRENDERERSHARED_EXPORT QNormalDiffuseSpecularMapMaterial : public QMate { Q_OBJECT Q_PROPERTY(QColor ambient READ ambient WRITE setAmbient NOTIFY ambientChanged) - Q_PROPERTY(QTexture *diffuse READ diffuse WRITE setDiffuse NOTIFY diffuseChanged) - Q_PROPERTY(QTexture *normal READ normal WRITE setNormal NOTIFY normalChanged) - Q_PROPERTY(QTexture *specular READ specular WRITE setSpecular NOTIFY specularChanged) + Q_PROPERTY(QAbstractTextureProvider *diffuse READ diffuse WRITE setDiffuse NOTIFY diffuseChanged) + Q_PROPERTY(QAbstractTextureProvider *normal READ normal WRITE setNormal NOTIFY normalChanged) + Q_PROPERTY(QAbstractTextureProvider *specular READ specular WRITE setSpecular NOTIFY specularChanged) Q_PROPERTY(float shininess READ shininess WRITE setShininess NOTIFY shininessChanged) Q_PROPERTY(float textureScale READ textureScale WRITE setTextureScale NOTIFY textureScaleChanged) @@ -66,16 +66,16 @@ public: ~QNormalDiffuseSpecularMapMaterial(); QColor ambient() const; - QTexture *diffuse() const; - QTexture *normal() const; - QTexture *specular() const; + QAbstractTextureProvider *diffuse() const; + QAbstractTextureProvider *normal() const; + QAbstractTextureProvider *specular() const; float shininess() const; float textureScale() const; void setAmbient(const QColor &ambient); - void setDiffuse(QTexture *diffuse); - void setNormal(QTexture *normal); - void setSpecular(QTexture *specular); + void setDiffuse(QAbstractTextureProvider *diffuse); + void setNormal(QAbstractTextureProvider *normal); + void setSpecular(QAbstractTextureProvider *specular); void setShininess(float shininess); void setTextureScale(float textureScale); diff --git a/src/render/defaults/qnormaldiffusespecularmapmaterial_p.h b/src/render/defaults/qnormaldiffusespecularmapmaterial_p.h index 0aa2ec2d9..529875c31 100644 --- a/src/render/defaults/qnormaldiffusespecularmapmaterial_p.h +++ b/src/render/defaults/qnormaldiffusespecularmapmaterial_p.h @@ -49,7 +49,7 @@ QT_BEGIN_NAMESPACE namespace Qt3D { class QEffect; -class QTexture; +class QAbstractTextureProvider; class QTechnique; class QParameter; class QShaderProgram; @@ -66,9 +66,9 @@ public: void init(); QEffect *m_normalDiffuseSpecularEffect; - QTexture *m_diffuseTexture; - QTexture *m_normalTexture; - QTexture *m_specularTexture; + QAbstractTextureProvider *m_diffuseTexture; + QAbstractTextureProvider *m_normalTexture; + QAbstractTextureProvider *m_specularTexture; QParameter *m_ambientParameter; QParameter *m_diffuseParameter; QParameter *m_normalParameter; diff --git a/src/render/frontend/qmaterial.cpp b/src/render/frontend/qmaterial.cpp index 842d51b91..5556d9aed 100644 --- a/src/render/frontend/qmaterial.cpp +++ b/src/render/frontend/qmaterial.cpp @@ -185,7 +185,7 @@ TextureDict QMaterial::textureValues() const } // TO DO: Check if this is really needed -void QMaterial::setTextureParameter(QString name, QTexture *tex) +void QMaterial::setTextureParameter(QString name, QAbstractTextureProvider *tex) { Q_D(QMaterial); d->m_textures[name] = tex; diff --git a/src/render/frontend/qmaterial.h b/src/render/frontend/qmaterial.h index b65034b27..36a15d401 100644 --- a/src/render/frontend/qmaterial.h +++ b/src/render/frontend/qmaterial.h @@ -51,11 +51,11 @@ QT_BEGIN_NAMESPACE namespace Qt3D { -class QTexture; +class QAbstractTextureProvider; class QParameter; class QMaterialPrivate; class QEffect; -typedef QMap<QString, QTexture*> TextureDict; +typedef QMap<QString, QAbstractTextureProvider*> TextureDict; class QT3DRENDERERSHARED_EXPORT QMaterial : public QComponent { @@ -74,7 +74,7 @@ public: TextureDict textureValues() const; - void setTextureParameter(QString name, QTexture* tex); + void setTextureParameter(QString name, QAbstractTextureProvider* tex); Q_SIGNALS: void effectChanged(); diff --git a/src/render/frontend/qparameter.cpp b/src/render/frontend/qparameter.cpp index df20b2df1..99f3ee37d 100644 --- a/src/render/frontend/qparameter.cpp +++ b/src/render/frontend/qparameter.cpp @@ -86,7 +86,7 @@ QParameter::QParameter(const QString &name, const QVariant &value, QNode *parent setValue(value); } -QParameter::QParameter(const QString &name, QTexture *texture, QNode *parent) +QParameter::QParameter(const QString &name, QAbstractTextureProvider *texture, QNode *parent) : QNode(*new QParameterPrivate(this), parent) { Q_D(QParameter); diff --git a/src/render/frontend/qparameter.h b/src/render/frontend/qparameter.h index b45248d1d..7f2b7b430 100644 --- a/src/render/frontend/qparameter.h +++ b/src/render/frontend/qparameter.h @@ -51,7 +51,7 @@ QT_BEGIN_NAMESPACE namespace Qt3D { class QParameterPrivate; -class QTexture; +class QAbstractTextureProvider; class QT3DRENDERERSHARED_EXPORT QParameter : public QNode { @@ -62,7 +62,7 @@ class QT3DRENDERERSHARED_EXPORT QParameter : public QNode public: explicit QParameter(QNode *parent = 0); QParameter(const QString& name, const QVariant& value, QNode* parent = 0); - QParameter(const QString &name, QTexture *texture, QNode *parent = 0); + QParameter(const QString &name, QAbstractTextureProvider *texture, QNode *parent = 0); void setName(const QString &name); QString name() const; diff --git a/src/render/frontend/qrenderattachment.cpp b/src/render/frontend/qrenderattachment.cpp index 1e3898e7b..8940069ca 100644 --- a/src/render/frontend/qrenderattachment.cpp +++ b/src/render/frontend/qrenderattachment.cpp @@ -62,7 +62,7 @@ void QRenderAttachment::copy(const QNode *ref) QNode::copy(ref); const QRenderAttachment *rA = static_cast<const QRenderAttachment*>(ref); d_func()->m_type = rA->d_func()->m_type; - setTexture(qobject_cast<QTexture *>(QNode::clone(rA->d_func()->m_texture))); + setTexture(qobject_cast<QAbstractTextureProvider *>(QNode::clone(rA->d_func()->m_texture))); } QRenderAttachment::QRenderAttachment(QNode *parent) @@ -90,7 +90,7 @@ QRenderAttachment::RenderAttachmentType QRenderAttachment::type() const return d->m_type; } -void QRenderAttachment::setTexture(QTexture *texture) +void QRenderAttachment::setTexture(QAbstractTextureProvider *texture) { Q_D(QRenderAttachment); if (texture != d->m_texture) { @@ -103,7 +103,7 @@ void QRenderAttachment::setTexture(QTexture *texture) } } -QTexture *QRenderAttachment::texture() const +QAbstractTextureProvider *QRenderAttachment::texture() const { Q_D(const QRenderAttachment); return d->m_texture; diff --git a/src/render/frontend/qrenderattachment.h b/src/render/frontend/qrenderattachment.h index 52688e3c9..e569d0f9c 100644 --- a/src/render/frontend/qrenderattachment.h +++ b/src/render/frontend/qrenderattachment.h @@ -49,7 +49,7 @@ QT_BEGIN_NAMESPACE namespace Qt3D { -class QTexture; +class QAbstractTextureProvider; class QRenderAttachmentPrivate; class QT3DRENDERERSHARED_EXPORT QRenderAttachment : public QNode @@ -58,7 +58,7 @@ class QT3DRENDERERSHARED_EXPORT QRenderAttachment : public QNode Q_ENUMS(RenderAttachmentType) Q_ENUMS(CubeMapFace) Q_PROPERTY(RenderAttachmentType type READ type WRITE setType NOTIFY typeChanged) - Q_PROPERTY(Qt3D::QTexture *texture READ texture WRITE setTexture NOTIFY textureChanged) + Q_PROPERTY(Qt3D::QAbstractTextureProvider *texture READ texture WRITE setTexture NOTIFY textureChanged) Q_PROPERTY(int mipLevel READ mipLevel WRITE setMipLevel NOTIFY mipLevelChanged) Q_PROPERTY(int layer READ layer WRITE setLayer NOTIFY layerChanged) Q_PROPERTY(CubeMapFace face READ face WRITE setFace NOTIFY faceChanged) @@ -101,8 +101,8 @@ public: void setType(RenderAttachmentType type); RenderAttachmentType type() const; - void setTexture(QTexture *texture); - QTexture *texture() const; + void setTexture(QAbstractTextureProvider *texture); + QAbstractTextureProvider *texture() const; void setMipLevel(int level); int mipLevel() const; diff --git a/src/render/frontend/qrenderattachment_p.h b/src/render/frontend/qrenderattachment_p.h index 4e386ba8d..3e6760d2c 100644 --- a/src/render/frontend/qrenderattachment_p.h +++ b/src/render/frontend/qrenderattachment_p.h @@ -49,7 +49,7 @@ QT_BEGIN_NAMESPACE namespace Qt3D { -class QTexture; +class QAbstractTextureProvider; class QRenderAttachmentPrivate : public QNodePrivate { @@ -58,7 +58,7 @@ public: Q_DECLARE_PUBLIC(QRenderAttachment) - QTexture *m_texture; + QAbstractTextureProvider *m_texture; QRenderAttachment::RenderAttachmentType m_type; int m_mipLevel; int m_layer; diff --git a/src/render/frontend/qtexture.cpp b/src/render/frontend/qtexture.cpp index 5a107504f..b28ad7c3b 100644 --- a/src/render/frontend/qtexture.cpp +++ b/src/render/frontend/qtexture.cpp @@ -52,47 +52,47 @@ QT_BEGIN_NAMESPACE namespace Qt3D { -class QTexturePrivate : public QNodePrivate +class QAbstractTextureProviderPrivate : public QNodePrivate { public : - QTexturePrivate(QTexture *qq) + QAbstractTextureProviderPrivate(QAbstractTextureProvider *qq) : QNodePrivate(qq) - , m_target(QTexture::Target2D) - , m_format(QTexture::RGBA8U) + , m_target(QAbstractTextureProvider::Target2D) + , m_format(QAbstractTextureProvider::RGBA8U) , m_width(1) , m_height(1) , m_depth(1) , m_autoMipMap(false) - , m_minFilter(QTexture::Nearest) - , m_magFilter(QTexture::Nearest) - , m_status(QTexture::Loading) + , m_minFilter(QAbstractTextureProvider::Nearest) + , m_magFilter(QAbstractTextureProvider::Nearest) + , m_status(QAbstractTextureProvider::Loading) , m_maximumAnisotropy(1.0f) - , m_comparisonFunction(QTexture::CompareLessEqual) - , m_comparisonMode(QTexture::CompareNone) + , m_comparisonFunction(QAbstractTextureProvider::CompareLessEqual) + , m_comparisonMode(QAbstractTextureProvider::CompareNone) {} - Q_DECLARE_PUBLIC(QTexture) + Q_DECLARE_PUBLIC(QAbstractTextureProvider) - QTexture::Target m_target; - QTexture::TextureFormat m_format; + QAbstractTextureProvider::Target m_target; + QAbstractTextureProvider::TextureFormat m_format; int m_width, m_height, m_depth; bool m_autoMipMap; QList<TexImageDataPtr> m_data; - QTexture::Filter m_minFilter, m_magFilter; + QAbstractTextureProvider::Filter m_minFilter, m_magFilter; // FIXME, store per direction QTextureWrapMode m_wrapMode; - QTexture::Status m_status; + QAbstractTextureProvider::Status m_status; float m_maximumAnisotropy; - QTexture::ComparisonFunction m_comparisonFunction; - QTexture::ComparisonMode m_comparisonMode; + QAbstractTextureProvider::ComparisonFunction m_comparisonFunction; + QAbstractTextureProvider::ComparisonMode m_comparisonMode; }; -void QTexture::copy(const QNode *ref) +void QAbstractTextureProvider::copy(const QNode *ref) { QNode::copy(ref); - const QTexture *t = static_cast<const QTexture*>(ref); + const QAbstractTextureProvider *t = static_cast<const QAbstractTextureProvider*>(ref); d_func()->m_target = t->d_func()->m_target; d_func()->m_width = t->d_func()->m_width; d_func()->m_height = t->d_func()->m_height; @@ -110,25 +110,39 @@ void QTexture::copy(const QNode *ref) // TO DO: Copy TexImageDataPtr } -QTexture::QTexture(QNode *parent) - : QNode(*new QTexturePrivate(this), parent) +/*! + \class Qt3D::QAbstractTextureProvider + \since 5.5 + \brief Qt3D::QAbstractTextureProvider is a base class to be used to provide textures. + + Qt3D::QAbstractTextureProvider shouldn't be used directly but rather + through one of its subclasses. Each subclass implements a given texture + target (2D, 2DArray, 3D, CubeMap ...) Each subclass provides a set of + functors for each layer, cube map face and mipmap level. In turn the + backend uses those functor to properly fill a corresponding OpenGL texture + with data. + */ + + +QAbstractTextureProvider::QAbstractTextureProvider(QNode *parent) + : QNode(*new QAbstractTextureProviderPrivate(this), parent) { } -QTexture::QTexture(Target target, QNode *parent) - : QNode(*new QTexturePrivate(this), parent) +QAbstractTextureProvider::QAbstractTextureProvider(Target target, QNode *parent) + : QNode(*new QAbstractTextureProviderPrivate(this), parent) { d_func()->m_target = target; } -QTexture::QTexture(QTexture::Target target, QTexture::TextureFormat format, +QAbstractTextureProvider::QAbstractTextureProvider(QAbstractTextureProvider::Target target, QAbstractTextureProvider::TextureFormat format, int width, int height, int depth, bool mipMaps, - QTexture::Filter magnificationFilter, QTexture::Filter minificationFilter, + QAbstractTextureProvider::Filter magnificationFilter, QAbstractTextureProvider::Filter minificationFilter, float maximumAnisotropy, - QTexture::ComparisonFunction comparisonFunction, - QTexture::ComparisonMode comparisonMode, + QAbstractTextureProvider::ComparisonFunction comparisonFunction, + QAbstractTextureProvider::ComparisonMode comparisonMode, QNode *parent) - : QNode(*new QTexturePrivate(this), parent) + : QNode(*new QAbstractTextureProviderPrivate(this), parent) { d_func()->m_target = target; d_func()->m_format = format; @@ -143,106 +157,143 @@ QTexture::QTexture(QTexture::Target target, QTexture::TextureFormat format, d_func()->m_comparisonMode = comparisonMode; } -QTexture::QTexture(QTexturePrivate &dd, QNode *parent) +QAbstractTextureProvider::QAbstractTextureProvider(QAbstractTextureProviderPrivate &dd, QNode *parent) : QNode(dd, parent) { } -QTexture::~QTexture() +QAbstractTextureProvider::~QAbstractTextureProvider() { } -void QTexture::setSize(int w, int h, int d) +/*! + Sets the size of the texture provider to width \a, height \a h and depth \a d. + */ +void QAbstractTextureProvider::setSize(int w, int h, int d) { setWidth(w); setHeight(h); setDepth(d); } -void QTexture::setWidth(int width) +/*! + Sets the width of the texture provider to \a width. + */ +void QAbstractTextureProvider::setWidth(int width) { - Q_D(QTexture); + Q_D(QAbstractTextureProvider); if (d->m_width != width) { d->m_width = width; emit widthChanged(); } } -void QTexture::setHeight(int height) +/*! + Sets the height of the texture provider to \a height. + */ +void QAbstractTextureProvider::setHeight(int height) { - Q_D(QTexture); + Q_D(QAbstractTextureProvider); if (d->m_height != height) { d->m_height = height; emit heightChanged(); } } -void QTexture::setDepth(int depth) +/*! + Sets the depth of the texture provider to \a depth. + */ +void QAbstractTextureProvider::setDepth(int depth) { - Q_D(QTexture); + Q_D(QAbstractTextureProvider); if (d->m_depth != depth) { d->m_depth = depth; emit depthChanged(); } } -int QTexture::width() const +/*! + \returns the width of the texture provider. + */ +int QAbstractTextureProvider::width() const { - Q_D(const QTexture); + Q_D(const QAbstractTextureProvider); return d->m_width; } -int QTexture::height() const +/*! + \returns the height of the texture provider. + */ +int QAbstractTextureProvider::height() const { - Q_D(const QTexture); + Q_D(const QAbstractTextureProvider); return d->m_height; } -int QTexture::depth() const +/*! + \returns the depth of the texture provider. + */ +int QAbstractTextureProvider::depth() const { - Q_D(const QTexture); + Q_D(const QAbstractTextureProvider); return d->m_depth; } -void QTexture::setFormat(TextureFormat format) +/*! + Sets the format of the texture provider to \a format. + */ +void QAbstractTextureProvider::setFormat(TextureFormat format) { - Q_D(QTexture); + Q_D(QAbstractTextureProvider); if (d->m_format != format) { d->m_format = format; emit formatChanged(); } } -QTexture::TextureFormat QTexture::format() const +/*! + \returns the format of the texture provider. + */ +QAbstractTextureProvider::TextureFormat QAbstractTextureProvider::format() const { - Q_D(const QTexture); + Q_D(const QAbstractTextureProvider); return d->m_format; } -void QTexture::setStatus(Status status) +/*! + Sets the current status of the texture provider to \a status. + */ +void QAbstractTextureProvider::setStatus(Status status) { - Q_D(QTexture); + Q_D(QAbstractTextureProvider); if (status != d->m_status) { d->m_status = status; emit statusChanged(); } } -QTexture::Status QTexture::status() const +/*! + \returns the current status of the texture provider. + */ +QAbstractTextureProvider::Status QAbstractTextureProvider::status() const { - Q_D(const QTexture); + Q_D(const QAbstractTextureProvider); return d->m_status; } -QTexture::Target QTexture::target() const +/*! + \returns the target format of the texture provider. + \note: The target format can only be set once. + */ +QAbstractTextureProvider::Target QAbstractTextureProvider::target() const { - Q_D(const QTexture); + Q_D(const QAbstractTextureProvider); return d->m_target; } -bool QTexture::setFromQImage(QImage img, int layer) +bool QAbstractTextureProvider::setFromQImage(QImage img, int layer) { - Q_D(QTexture); + Q_D(QAbstractTextureProvider); setSize(img.width(), img.height()); if ((d->m_target != Target2D) && @@ -260,66 +311,87 @@ bool QTexture::setFromQImage(QImage img, int layer) return true; } -void QTexture::addImageData(TexImageDataPtr imgData) +void QAbstractTextureProvider::addImageData(TexImageDataPtr imgData) { - Q_D(QTexture); + Q_D(QAbstractTextureProvider); d->m_data.append(imgData); } -QList<TexImageDataPtr> QTexture::imageData() const +QList<TexImageDataPtr> QAbstractTextureProvider::imageData() const { - Q_D(const QTexture); + Q_D(const QAbstractTextureProvider); return d->m_data; } -void QTexture::setGenerateMipMaps(bool gen) +/*! + Sets whether the texture provider should auto generate mipmaps. + */ +void QAbstractTextureProvider::setGenerateMipMaps(bool gen) { - Q_D(QTexture); + Q_D(QAbstractTextureProvider); if (d->m_autoMipMap != gen) { d->m_autoMipMap = gen; emit generateMipMapsChanged(); } } -bool QTexture::generateMipMaps() const +/*! + \returns whether texture provider auto generates mipmaps. + */ +bool QAbstractTextureProvider::generateMipMaps() const { - Q_D(const QTexture); + Q_D(const QAbstractTextureProvider); return d->m_autoMipMap; } -void QTexture::setMinificationFilter(Filter f) +/*! + Sets the minification filter of the texture provider to \a f. + */ +void QAbstractTextureProvider::setMinificationFilter(Filter f) { - Q_D(QTexture); + Q_D(QAbstractTextureProvider); if (d->m_minFilter != f) { d->m_minFilter = f; emit minificationFilterChanged(); } } -void QTexture::setMagnificationFilter(Filter f) +/*! + Sets the magnification filter of the texture provider to \a f. + */ +void QAbstractTextureProvider::setMagnificationFilter(Filter f) { - Q_D(QTexture); + Q_D(QAbstractTextureProvider); if (d->m_magFilter != f) { d->m_magFilter = f; emit magnificationFilterChanged(); } } -QTexture::Filter QTexture::minificationFilter() const +/*! + \returns the minification filter of the texture provider. + */ +QAbstractTextureProvider::Filter QAbstractTextureProvider::minificationFilter() const { - Q_D(const QTexture); + Q_D(const QAbstractTextureProvider); return d->m_minFilter; } -QTexture::Filter QTexture::magnificationFilter() const +/*! + \returns the magnification filter of the texture provider. + */ +QAbstractTextureProvider::Filter QAbstractTextureProvider::magnificationFilter() const { - Q_D(const QTexture); + Q_D(const QAbstractTextureProvider); return d->m_magFilter; } -void QTexture::setWrapMode(const QTextureWrapMode &wrapMode) +/*! + Sets the wrap mode of the texture provider to \a wrapMode. + */ +void QAbstractTextureProvider::setWrapMode(const QTextureWrapMode &wrapMode) { - Q_D(QTexture); + Q_D(QAbstractTextureProvider); if (d->m_wrapMode.x() != wrapMode.x()) { d->m_wrapMode.setX(wrapMode.x()); QScenePropertyChangePtr e(new QScenePropertyChange(NodeUpdated, this)); @@ -343,54 +415,75 @@ void QTexture::setWrapMode(const QTextureWrapMode &wrapMode) } } -QTextureWrapMode *QTexture::wrapMode() +/*! + \returns the wrap mode of the texture provider. + */ +QTextureWrapMode *QAbstractTextureProvider::wrapMode() { - Q_D(QTexture); + Q_D(QAbstractTextureProvider); return &d->m_wrapMode; } -void QTexture::setMaximumAnisotropy(float anisotropy) +/*! + Sets the maximum anisotropy of the texture provider to \a anisotropy. + */ +void QAbstractTextureProvider::setMaximumAnisotropy(float anisotropy) { - Q_D(QTexture); + Q_D(QAbstractTextureProvider); if (!qFuzzyCompare(d->m_maximumAnisotropy, anisotropy)) { d->m_maximumAnisotropy = anisotropy; emit maximumAnisotropyChanged(); } } -float QTexture::maximumAnisotropy() const +/*! + \returns the maximum anisotropy of the texture provider. + */ +float QAbstractTextureProvider::maximumAnisotropy() const { - Q_D(const QTexture); + Q_D(const QAbstractTextureProvider); return d->m_maximumAnisotropy; } -void QTexture::setComparisonFunction(QTexture::ComparisonFunction function) +/*! + Sets the comparison function of the texture provider to \a function. + */ +void QAbstractTextureProvider::setComparisonFunction(QAbstractTextureProvider::ComparisonFunction function) { - Q_D(QTexture); + Q_D(QAbstractTextureProvider); if (d->m_comparisonFunction != function) { d->m_comparisonFunction = function; emit comparisonFunctionChanged(); } } -QTexture::ComparisonFunction QTexture::comparisonFunction() const +/*! + \returns the comparison function of the texture provider. + */ +QAbstractTextureProvider::ComparisonFunction QAbstractTextureProvider::comparisonFunction() const { - Q_D(const QTexture); + Q_D(const QAbstractTextureProvider); return d->m_comparisonFunction; } -void QTexture::setComparisonMode(QTexture::ComparisonMode mode) +/*! + Sets the comparison mode of the texture provider to \a mode. + */ +void QAbstractTextureProvider::setComparisonMode(QAbstractTextureProvider::ComparisonMode mode) { - Q_D(QTexture); + Q_D(QAbstractTextureProvider); if (d->m_comparisonMode != mode) { d->m_comparisonMode = mode; emit comparisonModeChanged(); } } -QTexture::ComparisonMode QTexture::comparisonMode() const +/*! + \returns the comparison mode of the texture provider. + */ +QAbstractTextureProvider::ComparisonMode QAbstractTextureProvider::comparisonMode() const { - Q_D(const QTexture); + Q_D(const QAbstractTextureProvider); return d->m_comparisonMode; } @@ -413,6 +506,14 @@ public: QTextureWrapMode::WrapMode m_z; }; +/*! + \class Qt3D::QTextureWrapMode + \since 5.5 + + \brief Qt3D::QTextureWrapMode defines the wrap mode a + Qt3D::QAbstractTextureProvider should apply to a texture. + */ + QTextureWrapMode::QTextureWrapMode(WrapMode wrapMode, QObject *parent) : QObject(*new QTextureWrapModePrivate(this), parent) { @@ -421,6 +522,10 @@ QTextureWrapMode::QTextureWrapMode(WrapMode wrapMode, QObject *parent) d_func()->m_z = wrapMode; } +/*! + Contrusts a new Qt3D::QTextureWrapMode instance with the wrap mode to apply to + each dimension \a x, \a y \a z of the texture and \a parent as parent. + */ QTextureWrapMode::QTextureWrapMode(WrapMode x,WrapMode y, WrapMode z, QObject *parent) : QObject(*new QTextureWrapModePrivate(this), parent) { @@ -429,6 +534,9 @@ QTextureWrapMode::QTextureWrapMode(WrapMode x,WrapMode y, WrapMode z, QObject *p d_func()->m_z = z; } +/*! + Sets the wrap mode of the x dimension to \a x. + */ void QTextureWrapMode::setX(WrapMode x) { Q_D(QTextureWrapMode); @@ -438,12 +546,18 @@ void QTextureWrapMode::setX(WrapMode x) } } +/*! + \returns the wrap mode of the x dimension. + */ QTextureWrapMode::WrapMode QTextureWrapMode::x() const { Q_D(const QTextureWrapMode); return d->m_x; } +/*! + Sets the wrap mode of the y dimension to \a y. + */ void QTextureWrapMode::setY(WrapMode y) { Q_D(QTextureWrapMode); @@ -453,12 +567,18 @@ void QTextureWrapMode::setY(WrapMode y) } } +/*! + \returns the wrap mode of the y dimension. + */ QTextureWrapMode::WrapMode QTextureWrapMode::y() const { Q_D(const QTextureWrapMode); return d->m_y; } +/*! + Sets the wrap mode of the z dimension to \a z. + */ void QTextureWrapMode::setZ(WrapMode z) { Q_D(QTextureWrapMode); @@ -468,6 +588,9 @@ void QTextureWrapMode::setZ(WrapMode z) } } +/*! + \returns the wrap mode of the y dimension. + */ QTextureWrapMode::WrapMode QTextureWrapMode::z() const { Q_D(const QTextureWrapMode); diff --git a/src/render/frontend/qtexture.h b/src/render/frontend/qtexture.h index 8ab4879a3..738b20a0b 100644 --- a/src/render/frontend/qtexture.h +++ b/src/render/frontend/qtexture.h @@ -51,7 +51,7 @@ QT_BEGIN_NAMESPACE namespace Qt3D { -class QTexturePrivate; +class QAbstractTextureProviderPrivate; class QTextureWrapModePrivate; class QT3DRENDERERSHARED_EXPORT QTextureWrapMode: public QObject @@ -91,7 +91,7 @@ private: Q_DECLARE_PRIVATE(QTextureWrapMode) }; -class QT3DRENDERERSHARED_EXPORT QTexture : public QNode +class QT3DRENDERERSHARED_EXPORT QAbstractTextureProvider : public QNode { Q_OBJECT Q_ENUMS(Target) @@ -286,14 +286,14 @@ public: CompareNone = 0x0000 // GL_NONE }; - explicit QTexture(Target target, QNode *parent = 0); - explicit QTexture(Target target, TextureFormat format, int width, int height = 1, int depth = 1, + explicit QAbstractTextureProvider(Target target, QNode *parent = 0); + explicit QAbstractTextureProvider(Target target, TextureFormat format, int width, int height = 1, int depth = 1, bool mipMaps = false, Filter magnificationFilter = Nearest, Filter minificationFilter = Nearest, float maximumAnisotropy = 1.0f, ComparisonFunction comparisonFunction = CompareLessEqual, ComparisonMode comparisonMode = CompareNone, QNode *parent = 0); - ~QTexture(); + ~QAbstractTextureProvider(); Target target() const; @@ -361,23 +361,23 @@ Q_SIGNALS: void comparisonModeChanged(); protected: - explicit QTexture(QNode *parent = 0); - QTexture(QTexturePrivate &dd, QNode *parent = 0); + explicit QAbstractTextureProvider(QNode *parent = 0); + QAbstractTextureProvider(QAbstractTextureProviderPrivate &dd, QNode *parent = 0); void copy(const QNode *ref) Q_DECL_OVERRIDE; void setStatus(Status status); private: - Q_DECLARE_PRIVATE(QTexture) - QT3D_CLONEABLE(QTexture) + Q_DECLARE_PRIVATE(QAbstractTextureProvider) + QT3D_CLONEABLE(QAbstractTextureProvider) }; } // namespace Qt3D QT_END_NAMESPACE -Q_DECLARE_METATYPE(Qt3D::QTexture*) +Q_DECLARE_METATYPE(Qt3D::QAbstractTextureProvider*) Q_DECLARE_METATYPE(Qt3D::QTextureWrapMode*) -Q_DECLARE_METATYPE(Qt3D::QTexture::ComparisonFunction) -Q_DECLARE_METATYPE(Qt3D::QTexture::ComparisonMode) +Q_DECLARE_METATYPE(Qt3D::QAbstractTextureProvider::ComparisonFunction) +Q_DECLARE_METATYPE(Qt3D::QAbstractTextureProvider::ComparisonMode) #endif // QT3D_QTEXTURE_H diff --git a/src/render/io/gltfparser.cpp b/src/render/io/gltfparser.cpp index 1792014a1..b135fc3b0 100644 --- a/src/render/io/gltfparser.cpp +++ b/src/render/io/gltfparser.cpp @@ -793,14 +793,14 @@ void GLTFParser::processJSONImage( QString id, QJsonObject jsonObj) void GLTFParser::processJSONTexture( QString id, QJsonObject jsonObj) { int target = jsonObj.value(KEY_TARGET).toInt(); - QTexture* tex = new QTexture(static_cast<QTexture::Target>(target)); + QAbstractTextureProvider* tex = new QAbstractTextureProvider(static_cast<QAbstractTextureProvider::Target>(target)); // TODO: Choose suitable internal format - may vary on OpenGL context type //int pixelFormat = jsonObj.value(KEY_FORMAT).toInt(); //int internalFormat = jsonObj.value(KEY_INTERNAL_FORMAT).toInt(); - tex->setFormat(QTexture::RGBA8_UNorm /* static_cast<QOpenGLTexture::TextureFormat>(internalFormat)*/); + tex->setFormat(QAbstractTextureProvider::RGBA8_UNorm /* static_cast<QOpenGLTexture::TextureFormat>(internalFormat)*/); QString samplerId = jsonObj.value(KEY_SAMPLER).toString(); QString source = jsonObj.value(KEY_SOURCE).toString(); @@ -820,8 +820,8 @@ void GLTFParser::processJSONTexture( QString id, QJsonObject jsonObj) QJsonObject sampler = samplersDict.value(samplerId).toObject(); tex->setWrapMode(QTextureWrapMode(static_cast<QTextureWrapMode::WrapMode>(sampler.value(KEY_WRAP_S).toInt()))); - tex->setMinificationFilter(static_cast<QTexture::Filter>(sampler.value(KEY_MIN_FILTER).toInt())); - tex->setMagnificationFilter(static_cast<QTexture::Filter>(sampler.value(KEY_MAG_FILTER).toInt())); + tex->setMinificationFilter(static_cast<QAbstractTextureProvider::Filter>(sampler.value(KEY_MIN_FILTER).toInt())); + tex->setMagnificationFilter(static_cast<QAbstractTextureProvider::Filter>(sampler.value(KEY_MAG_FILTER).toInt())); m_textures[id] = tex; } diff --git a/src/render/io/gltfparser_p.h b/src/render/io/gltfparser_p.h index 10d8bfab7..152ff1c58 100644 --- a/src/render/io/gltfparser_p.h +++ b/src/render/io/gltfparser_p.h @@ -66,7 +66,7 @@ class QShaderProgram; class QEffect; class QCamera; class QCameraLens; -class QTexture; +class QAbstractTextureProvider; class GLTFParser : public AbstractSceneParser { @@ -146,7 +146,7 @@ private: // up our techniques QMap<QString, QEffect*> m_effectProxies; - QMap<QString, QTexture*> m_textures; + QMap<QString, QAbstractTextureProvider*> m_textures; QMap<QString, QImage> m_images; QFile* resolveLocalData(QString path); |