From Vincent Mahnke, 10 Years ago, written in C#.
Embed
  1.  
  2. #pragma region DynamicVertexBuffer Helper Functions
  3. void DXScreenRenderer::AddVertex(Vertex vertex, ID3D11Texture2D* textureUsed) {
  4.         if (DynamicVertexLastTextureUsed != textureUsed && DynamicVertexLastTextureUsed != nullptr) {
  5.                 Flush();
  6.         }
  7.  
  8.         if (DynamicVertexBufferCounter < DynamicVertexBufferSize) {
  9.                 DynamicVertexLastTextureUsed = textureUsed;
  10.                 DynamicVertexBufferCache[DynamicVertexBufferSize] = vertex;
  11.                 DynamicVertexBufferCounter++;
  12.         }
  13.         else {
  14.                 Flush();
  15.         }
  16. }
  17.  
  18. void DXScreenRenderer::Flush() {
  19.         // Do magical things with buffer here <-->
  20.  
  21.         // Clear buffer
  22.         DynamicVertexBufferCounter = 0;
  23.         memset(DynamicVertexBufferCache, 0, sizeof(Vertex)*DynamicVertexBufferSize);
  24. }
  25. #pragma endregion