| 146 | } |
| 147 | |
| 148 | void GPUBuffer::Resize(void const * data, uint32_t elementCount) |
| 149 | { |
| 150 | TBase::Resize(elementCount); |
| 151 | Bind(); |
| 152 | GLFunctions::glBufferData(glTarget(m_t), GetCapacity() * GetElementSize(), data, gl_const::GLDynamicDraw); |
| 153 | |
| 154 | // If we have set up data already (in glBufferData), we have to call SetDataSize. |
| 155 | if (data != nullptr) |
| 156 | SetDataSize(elementCount); |
| 157 | |
| 158 | #if defined(TRACK_GPU_MEM) |
| 159 | dp::GPUMemTracker & memTracker = dp::GPUMemTracker::Inst(); |
| 160 | memTracker.RemoveDeallocated("VBO", m_bufferID); |
| 161 | auto const sizeInBytes = GetCapacity() * GetElementSize(); |
| 162 | memTracker.AddAllocated("VBO", m_bufferID, sizeInBytes); |
| 163 | memTracker.TrackAverageAllocation(m_batcherHash, sizeInBytes); |
| 164 | if (data != nullptr) |
| 165 | dp::GPUMemTracker::Inst().SetUsed("VBO", m_bufferID, GetCurrentSize() * GetElementSize()); |
| 166 | #endif |
| 167 | } |
| 168 | } // namespace dp |
no test coverage detected