summaryrefslogtreecommitdiffstats
path: root/src/render/geometry/buffer.cpp
diff options
context:
space:
mode:
authorOleg Evseev <ev.mipt@gmail.com>2016-04-30 01:06:30 +0300
committerSean Harmer <sean.harmer@kdab.com>2016-08-13 15:37:44 +0000
commitc818f3b70cdcac27b8aaff0b53a5790beebba9e7 (patch)
treeea746e0263df506362263e3e4c277bd447bcbacb /src/render/geometry/buffer.cpp
parent8fed49011d501361e63aef7423a3939301ac8b6c (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.cpp5
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;