示例#1
0
 public Batch FindOrCreateBatch(Material material, BlendMode blendMode, 
     int numberOfQuadsToAdd = 1)
 {
     for (int index = 0; index < batches.Count; index++)
     {
         var batch = batches[index];
         if (batch.material.Shader != material.Shader ||
             batch.material.DiffuseMap != material.DiffuseMap || batch.blendMode != blendMode ||
             batch.IsBufferFullAndResizeIfPossible(numberOfQuadsToAdd))
             continue;
         if (batchIndex <= index)
             batchIndex = index + 1;
         return batch;
     }
     var newBatch = new Batch(material, blendMode, numberOfQuadsToAdd);
     batches.Add(newBatch);
     batchIndex = batches.Count;
     return newBatch;
 }
示例#2
0
 private void DrawAndResetBatch(Batch batch)
 {
     batch.Draw(drawing);
     batch.Reset();
 }
示例#3
0
 public void FlushDrawBuffer(Batch batch)
 {
     DrawAndResetBatch(batch);
     drawing.FlushDrawBuffer(batch.material, batch.blendMode);
 }
示例#4
0
 private void DrawAndResetBatch(Batch batch)
 {
     batch.Draw(drawing);
     batch.Reset();
 }
示例#5
0
 public void FlushDrawBuffer(Batch batch)
 {
     DrawAndResetBatch(batch);
     drawing.FlushDrawBuffer(batch.Material, batch.BlendMode);
 }