bool getBuffer(const uint32 vertexSize, const uint32 indexSize, Vertex2D** pVertex, IndexType** pIndices, IndexType* indexOffset, D3D11Render2DCommandManager& commandManager) { // VB const uint32 requiredVertexSize = m_vertexArrayWritePos + vertexSize; if (m_vertices.size() < requiredVertexSize) { if (MaxVertexSize < requiredVertexSize) { return false; } resizeVertices(requiredVertexSize); } // IB const uint32 requiredIndexSize = m_indexArrayWritePos + indexSize; if (m_indices.size() < requiredIndexSize) { if (MaxIndexSize < requiredIndexSize) { return false; } resizeIndices(requiredIndexSize); } if (VertexBufferSize < (m_batches.back().vertexPos + vertexSize) || IndexBufferSize < (m_batches.back().indexPos + indexSize)) { m_batches.emplace_back(); commandManager.pushNextBatch(); } *pVertex = m_vertices.data() + m_vertexArrayWritePos; *pIndices = m_indices.data() + m_indexArrayWritePos; *indexOffset = m_batches.back().vertexPos; m_vertexArrayWritePos += vertexSize; m_indexArrayWritePos += indexSize; m_batches.back().vertexPos += vertexSize; m_batches.back().indexPos += indexSize; return true; }
void clearVertices (void) { resizeVertices(0); }