TDME2  1.9.200
ObjectBuffer.cpp
Go to the documentation of this file.
2 
3 #include <memory>
4 #include <vector>
5 
6 #include <tdme/tdme.h>
8 #include <tdme/engine/Engine.h>
10 #include <tdme/utilities/Console.h>
11 
13 
14 using std::unique_ptr;
15 using std::vector;
16 
21 
22 vector<unique_ptr<ByteBuffer>> ObjectBuffer::byteBuffers;
23 
24 void ObjectBuffer::initialize() {
25  auto renderer = Engine::getRenderer();
26  byteBuffers.resize(renderer->isSupportingMultithreadedRendering() == true?Engine::getThreadCount():1);
27 }
28 
30  byteBuffers.clear();
31 }
32 
33 ByteBuffer* ObjectBuffer::getByteBuffer(int contextIdx, int32_t bytes)
34 {
35  auto renderer = Engine::getRenderer();
36  if (byteBuffers[contextIdx] == nullptr || bytes > byteBuffers[contextIdx]->getCapacity()) {
37  byteBuffers[contextIdx] = unique_ptr<ByteBuffer>(ByteBuffer::allocate(bytes));
38  } else {
39  byteBuffers[contextIdx]->clear();
40  }
41  return byteBuffers[contextIdx].get();
42 }
Engine main class.
Definition: Engine.h:131
static Renderer * getRenderer()
Definition: Engine.h:434
static int getThreadCount()
Definition: Engine.h:670
Buffers used to transfer data between main memory to graphics board memory.
Definition: ObjectBuffer.h:24
static ByteBuffer * getByteBuffer(int contextIdx, int32_t bytes)
Get byte buffer for given context.
static STATIC_DLL_IMPEXT vector< unique_ptr< ByteBuffer > > byteBuffers
Definition: ObjectBuffer.h:36
static void dispose()
Disposes object buffer per thread.
Byte buffer class.
Definition: ByteBuffer.h:27
Console class.
Definition: Console.h:29