diff options
author | Oleg Evseev <ev.mipt@gmail.com> | 2016-04-30 01:06:30 +0300 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2016-08-13 15:37:44 +0000 |
commit | c818f3b70cdcac27b8aaff0b53a5790beebba9e7 (patch) | |
tree | ea746e0263df506362263e3e4c277bd447bcbacb /src/render/geometry/buffer.cpp | |
parent | 8fed49011d501361e63aef7423a3939301ac8b6c (diff) |
Add partial data update support for QBuffer
Perform upadateData through queue of replacements specified by
QBufferUpdate: start position (offset) and QByteArray (replacing data)
Add example based on custom-mesh-cpp to show how updating data works.
Task-number: QTBUG-50720
Change-Id: I2eceb514af21209deb278d73c94773e39f300fb3
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/render/geometry/buffer.cpp')
-rw-r--r-- | src/render/geometry/buffer.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/render/geometry/buffer.cpp b/src/render/geometry/buffer.cpp index 8c897dd2b..aaae9825f 100644 --- a/src/render/geometry/buffer.cpp +++ b/src/render/geometry/buffer.cpp @@ -70,6 +70,7 @@ void Buffer::cleanup() m_type = QBuffer::VertexBuffer; m_usage = QBuffer::StaticDraw; m_data.clear(); + m_bufferUpdates.clear(); m_functor.reset(); m_bufferDirty = false; m_syncData = false; @@ -120,6 +121,10 @@ void Buffer::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) QByteArray newData = propertyChange->value().value<QByteArray>(); m_bufferDirty |= m_data != newData; m_data = newData; + } else if (propertyName == QByteArrayLiteral("updateData")) { + Qt3DRender::QBufferUpdate updateData = propertyChange->value().value<Qt3DRender::QBufferUpdate>(); + m_bufferUpdates.push_back(updateData); + m_bufferDirty = true; } else if (propertyName == QByteArrayLiteral("type")) { m_type = static_cast<QBuffer::BufferType>(propertyChange->value().value<int>()); m_bufferDirty = true; |