|
|
@@ -1058,9 +1058,17 @@ namespace bgfx { namespace gl
|
|
|
GL_CHECK(glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0) );
|
|
|
}
|
|
|
|
|
|
- void update(uint32_t _offset, uint32_t _size, void* _data)
|
|
|
+ void update(uint32_t _offset, uint32_t _size, void* _data, bool _discard = false)
|
|
|
{
|
|
|
BX_CHECK(0 != m_id, "Updating invalid index buffer.");
|
|
|
+
|
|
|
+ if (_discard)
|
|
|
+ {
|
|
|
+ // orphan buffer...
|
|
|
+ destroy();
|
|
|
+ create(m_size, NULL, m_flags);
|
|
|
+ }
|
|
|
+
|
|
|
GL_CHECK(glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_id) );
|
|
|
GL_CHECK(glBufferSubData(GL_ELEMENT_ARRAY_BUFFER
|
|
|
, _offset
|
|
|
@@ -1104,9 +1112,17 @@ namespace bgfx { namespace gl
|
|
|
GL_CHECK(glBindBuffer(m_target, 0) );
|
|
|
}
|
|
|
|
|
|
- void update(uint32_t _offset, uint32_t _size, void* _data)
|
|
|
+ void update(uint32_t _offset, uint32_t _size, void* _data, bool _discard = false)
|
|
|
{
|
|
|
BX_CHECK(0 != m_id, "Updating invalid vertex buffer.");
|
|
|
+
|
|
|
+ if (_discard)
|
|
|
+ {
|
|
|
+ // orphan buffer...
|
|
|
+ destroy();
|
|
|
+ create(m_size, NULL, m_decl, 0);
|
|
|
+ }
|
|
|
+
|
|
|
GL_CHECK(glBindBuffer(m_target, m_id) );
|
|
|
GL_CHECK(glBufferSubData(m_target
|
|
|
, _offset
|