Esempio n. 1
0
		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;
		}
Esempio n. 2
0
 void                clearVertices       (void)                          { resizeVertices(0); }