diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2014-07-08 17:47:08 +0200 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2014-07-09 16:01:23 +0200 |
commit | 64ccfae6f81ff1437a96a42e76055520b66c626c (patch) | |
tree | 555c3f31a9d984608391883e21fad4f4fabaa592 /src/render/frontend/qshaderprogram.cpp | |
parent | 84b0d101508eb6940f8c06f0dc8dafcd4c632802 (diff) |
QShaderProgram d-pointered
Change-Id: I96f3f65e371491ce128572dbafbb0f7776a30e5d
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/render/frontend/qshaderprogram.cpp')
-rw-r--r-- | src/render/frontend/qshaderprogram.cpp | 86 |
1 files changed, 53 insertions, 33 deletions
diff --git a/src/render/frontend/qshaderprogram.cpp b/src/render/frontend/qshaderprogram.cpp index 63abf91dc..df490d8ae 100644 --- a/src/render/frontend/qshaderprogram.cpp +++ b/src/render/frontend/qshaderprogram.cpp @@ -40,6 +40,7 @@ ****************************************************************************/ #include "qshaderprogram.h" +#include "qshaderprogram_p.h" #include <QDebug> #include <QFile> @@ -48,40 +49,53 @@ QT_BEGIN_NAMESPACE namespace Qt3D { -QShaderProgram::QShaderProgram(QNode *parent) - : QAbstractShader(parent) - , m_vertexSourceFile() - , m_fragmentSourceFile() +QShaderProgramPrivate::QShaderProgramPrivate(QShaderProgram *qq) + : QAbstractShaderPrivate(qq) , m_isLoaded(false) { } +QShaderProgram::QShaderProgram(QNode *parent) + : QAbstractShader(*new QShaderProgramPrivate(this), parent) +{ +} + + +QShaderProgram::QShaderProgram(QShaderProgramPrivate &dd, QNode *parent) + : QAbstractShader(dd, parent) +{ +} + void QShaderProgram::setVertexSourceFile(const QString& vertexSourceFile) { - if (vertexSourceFile != m_vertexSourceFile) { - m_vertexSourceFile = vertexSourceFile; - m_isLoaded = false; + Q_D(QShaderProgram); + if (vertexSourceFile != d->m_vertexSourceFile) { + d->m_vertexSourceFile = vertexSourceFile; + d->m_isLoaded = false; emit vertexSourceFileChanged(); } } QString QShaderProgram::vertexSourceFile() const { - return m_vertexSourceFile; + Q_D(const QShaderProgram); + return d->m_vertexSourceFile; } void QShaderProgram::setFragmentSourceFile(const QString& fragmentSourceFile) { - if (fragmentSourceFile != m_fragmentSourceFile) { - m_fragmentSourceFile = fragmentSourceFile; - m_isLoaded = false; + Q_D(QShaderProgram); + if (fragmentSourceFile != d->m_fragmentSourceFile) { + d->m_fragmentSourceFile = fragmentSourceFile; + d->m_isLoaded = false; emit fragmentSourceFileChanged(); } } QString QShaderProgram::fragmentSourceFile() const { - return m_fragmentSourceFile; + Q_D(const QShaderProgram); + return d->m_fragmentSourceFile; } /*! @@ -91,9 +105,10 @@ QString QShaderProgram::fragmentSourceFile() const */ void QShaderProgram::setVertexShader(const QByteArray &vertexShader) { - if (vertexShader != m_cachedVertexCode) { - m_cachedVertexCode = vertexShader; - m_isLoaded = false; + Q_D(QShaderProgram); + if (vertexShader != d->m_cachedVertexCode) { + d->m_cachedVertexCode = vertexShader; + d->m_isLoaded = false; emit vertexShaderChanged(); } } @@ -105,59 +120,64 @@ void QShaderProgram::setVertexShader(const QByteArray &vertexShader) */ void QShaderProgram::setFragmentShader(const QByteArray &fragmentShader) { - if (fragmentShader != m_cachedFragmentCode) { - m_cachedFragmentCode = fragmentShader; - m_isLoaded = false; + Q_D(QShaderProgram); + if (fragmentShader != d->m_cachedFragmentCode) { + d->m_cachedFragmentCode = fragmentShader; + d->m_isLoaded = false; emit fragmentShaderChanged(); } } QByteArray QShaderProgram::vertexSourceCode() const { - if (!isLoaded() && m_cachedVertexCode.isEmpty()) + Q_D(const QShaderProgram); + if (!isLoaded() && d->m_cachedVertexCode.isEmpty()) return QByteArray(); - return m_cachedVertexCode; + return d->m_cachedVertexCode; } QByteArray QShaderProgram::fragmentSourceCode() const { - if (!isLoaded() && m_cachedFragmentCode.isEmpty()) + Q_D(const QShaderProgram); + if (!isLoaded() && d->m_cachedFragmentCode.isEmpty()) return QByteArray(); - return m_cachedFragmentCode; + return d->m_cachedFragmentCode; } bool QShaderProgram::isLoaded() const { - return m_isLoaded; + Q_D(const QShaderProgram); + return d->m_isLoaded; } void QShaderProgram::load() { - if (m_isLoaded) + Q_D(QShaderProgram); + if (d->m_isLoaded) return; - m_isLoaded = true; + d->m_isLoaded = true; - if (!m_fragmentSourceFile.isEmpty()) { - QFile f(m_fragmentSourceFile); + if (!d->m_fragmentSourceFile.isEmpty()) { + QFile f(d->m_fragmentSourceFile); if (!f.exists()) { - qWarning() << "couldn't find shader source file:" << m_fragmentSourceFile; + qWarning() << "couldn't find shader source file:" << d->m_fragmentSourceFile; return; } else { f.open(QIODevice::ReadOnly); - m_cachedFragmentCode = f.readAll(); + d->m_cachedFragmentCode = f.readAll(); } } - if (!m_vertexSourceFile.isEmpty()) { - QFile vs(m_vertexSourceFile); + if (!d->m_vertexSourceFile.isEmpty()) { + QFile vs(d->m_vertexSourceFile); if (!vs.exists()) { - qWarning() << "couldn't find shader source file:" << m_vertexSourceFile; + qWarning() << "couldn't find shader source file:" << d->m_vertexSourceFile; return; } else { vs.open(QIODevice::ReadOnly); - m_cachedVertexCode = vs.readAll(); + d->m_cachedVertexCode = vs.readAll(); } } } |