diff options
Diffstat (limited to 'src/quick3d/quick3drender')
5 files changed, 29 insertions, 18 deletions
diff --git a/src/quick3d/quick3drender/items/quick3dbuffer.cpp b/src/quick3d/quick3drender/items/quick3dbuffer.cpp index 73292a3b5..5701adf07 100644 --- a/src/quick3d/quick3drender/items/quick3dbuffer.cpp +++ b/src/quick3d/quick3drender/items/quick3dbuffer.cpp @@ -37,9 +37,10 @@ ** ****************************************************************************/ -#include "quick3dbuffer_p.h" -#include <QQmlEngine> #include <QJSValue> +#include <QQmlEngine> + +#include "quick3dbuffer_p.h" #include <QtQml/private/qqmlengine_p.h> #include <QtQml/private/qjsvalue_p.h> #include <QtQml/private/qv4typedarray_p.h> @@ -57,12 +58,12 @@ namespace { const int jsValueTypeId = qMetaTypeId<QJSValue>(); } -Quick3DBuffer::Quick3DBuffer(QObject *parent) - : QObject(parent) +Quick3DBuffer::Quick3DBuffer(Qt3DCore::QNode *parent) + : Qt3DRender::QBuffer(QBuffer::VertexBuffer, parent) , m_engine(nullptr) , m_v4engine(nullptr) { - QObject::connect(parentBuffer(), &Qt3DRender::QBuffer::dataChanged, this, &Quick3DBuffer::bufferDataChanged); + QObject::connect(this, &Qt3DRender::QBuffer::dataChanged, this, &Quick3DBuffer::bufferDataChanged); } QByteArray Quick3DBuffer::convertToRawData(const QJSValue &jsValue) @@ -83,16 +84,26 @@ QByteArray Quick3DBuffer::convertToRawData(const QJSValue &jsValue) QVariant Quick3DBuffer::bufferData() const { - return QVariant::fromValue(parentBuffer()->data()); + return QVariant::fromValue(data()); } void Quick3DBuffer::setBufferData(const QVariant &bufferData) { if (bufferData.userType() == QMetaType::QByteArray) { - parentBuffer()->setData(bufferData.toByteArray()); + QBuffer::setData(bufferData.toByteArray()); + } else if (bufferData.userType() == jsValueTypeId) { + QJSValue jsValue = bufferData.value<QJSValue>(); + QBuffer::setData(convertToRawData(jsValue)); + } +} + +void Quick3DBuffer::updateData(int offset, const QVariant &bufferData) +{ + if (bufferData.userType() == QMetaType::QByteArray) { + QBuffer::updateData(offset, bufferData.toByteArray()); } else if (bufferData.userType() == jsValueTypeId) { QJSValue jsValue = bufferData.value<QJSValue>(); - parentBuffer()->setData(convertToRawData(jsValue)); + QBuffer::updateData(offset, convertToRawData(jsValue)); } } diff --git a/src/quick3d/quick3drender/items/quick3dbuffer_p.h b/src/quick3d/quick3drender/items/quick3dbuffer_p.h index 512e6936c..c5cb39cdf 100644 --- a/src/quick3d/quick3drender/items/quick3dbuffer_p.h +++ b/src/quick3d/quick3drender/items/quick3dbuffer_p.h @@ -69,17 +69,19 @@ namespace Render { namespace Quick { -class QT3DQUICKRENDERSHARED_PRIVATE_EXPORT Quick3DBuffer : public QObject +class QT3DQUICKRENDERSHARED_PRIVATE_EXPORT Quick3DBuffer : public Qt3DRender::QBuffer { Q_OBJECT Q_PROPERTY(QVariant data READ bufferData WRITE setBufferData NOTIFY bufferDataChanged) public: - explicit Quick3DBuffer(QObject *parent = nullptr); - inline QBuffer *parentBuffer() const { return qobject_cast<QBuffer *>(parent()); } + explicit Quick3DBuffer(Qt3DCore::QNode *parent = nullptr); QVariant bufferData() const; void setBufferData(const QVariant &bufferData); +public Q_SLOTS: + void updateData(int offset, const QVariant &bytes); + Q_SIGNALS: void bufferDataChanged(); diff --git a/src/quick3d/quick3drender/items/quick3dparameter.cpp b/src/quick3d/quick3drender/items/quick3dparameter.cpp index 22b6bba96..783f152c1 100644 --- a/src/quick3d/quick3drender/items/quick3dparameter.cpp +++ b/src/quick3d/quick3drender/items/quick3dparameter.cpp @@ -37,11 +37,11 @@ ** ****************************************************************************/ -#include "quick3dparameter_p_p.h" - #include <QJSValue> #include <QJSValueIterator> +#include "quick3dparameter_p_p.h" + QT_BEGIN_NAMESPACE namespace Qt3DRender { diff --git a/src/quick3d/quick3drender/items/quick3dshaderdata.cpp b/src/quick3d/quick3drender/items/quick3dshaderdata.cpp index e5901e8fb..dbf351695 100644 --- a/src/quick3d/quick3drender/items/quick3dshaderdata.cpp +++ b/src/quick3d/quick3drender/items/quick3dshaderdata.cpp @@ -37,12 +37,12 @@ ** ****************************************************************************/ -#include "quick3dshaderdata_p.h" -#include <private/qshaderdata_p.h> - #include <Qt3DQuickRender/private/quick3dshaderdataarray_p.h> #include <QMetaProperty> +#include "quick3dshaderdata_p.h" +#include <private/qshaderdata_p.h> + QT_BEGIN_NAMESPACE namespace Qt3DRender { diff --git a/src/quick3d/quick3drender/quick3drender.pro b/src/quick3d/quick3drender/quick3drender.pro index 959834870..3079bc494 100644 --- a/src/quick3d/quick3drender/quick3drender.pro +++ b/src/quick3d/quick3drender/quick3drender.pro @@ -22,8 +22,6 @@ HEADERS += \ qt3dquickrender_global_p.h \ qt3dquickrender_global.h -!contains(QT_CONFIG, egl):DEFINES += QT_NO_EGL - # otherwise mingw headers do not declare common functions like ::strcasecmp win32-g++*:QMAKE_CXXFLAGS_CXX11 = -std=gnu++0x |