MCPcopy Create free account
hub / github.com/Illation/ETEngine / UpdateBuffer

Method UpdateBuffer

Engine/source/EtRendering/SceneRendering/SpriteRenderer.cpp:258–290  ·  view source on GitHub ↗

--------------------------------- SpriteRenderer::UpdateBuffer Recalculates the Vertex buffer

Source from the content-addressed store, hash-verified

256// Recalculates the Vertex buffer
257//
258void SpriteRenderer::UpdateBuffer()
259{
260 I_GraphicsApiContext* const api = Viewport::GetCurrentApiContext();
261
262 //Bind Object vertex array
263 api->BindVertexArray(m_VAO);
264
265 //Send the vertex buffer again
266 api->BindBuffer(E_BufferType::Vertex, m_VBO);
267
268 bool bufferResize = m_Sprites.size() * sizeof( SpriteVertex ) > m_BufferSize;
269 if(!m_VBO || bufferResize) //first creation or resize
270 {
271 if (bufferResize)
272 {
273 m_BufferSize = (uint32)m_Sprites.size() * sizeof( SpriteVertex );
274 }
275
276 api->SetBufferData(E_BufferType::Vertex, m_BufferSize, m_Sprites.data(), E_UsageHint::Dynamic);
277 }
278 else
279 {
280 void* p = api->MapBuffer(E_BufferType::Vertex, E_AccessMode::Write);
281 memcpy( p, m_Sprites.data(), m_Sprites.size() * sizeof( SpriteVertex ) );
282 api->UnmapBuffer(E_BufferType::Vertex);
283 }
284
285
286 api->BindBuffer(E_BufferType::Vertex, 0);
287
288 //Done Modifying
289 api->BindVertexArray(0);
290}
291
292//---------------------------------
293// SpriteRenderer::CalculateTransform

Callers

nothing calls this directly

Calls 5

BindVertexArrayMethod · 0.80
BindBufferMethod · 0.80
SetBufferDataMethod · 0.80
MapBufferMethod · 0.80
UnmapBufferMethod · 0.80

Tested by

no test coverage detected