public void Begin(PrimitiveType primType, Camera cam) { if (hasBegun) { throw new Exception("Can't call Begin until current batch has ended"); } vertCounter = 0; vertsPerPrimitive = numVertsPerPrimitive(primType); currentCam = cam; currentType = primType; hasBegun = true; }
public void DrawVertexBuffer(VertexBuffer buffer, PrimitiveType primType, Camera cam) { device.SetVertexBuffer(buffer); effect.View = currentCam.View; effect.Projection = currentCam.Projection; effect.CurrentTechnique.Passes[0].Apply(); int passes = buffer.VertexCount / maxVertsPerDraw; int remainder = buffer.VertexCount % maxVertsPerDraw; int offset = 0; for (int i = 0; i < passes; i++) { device.DrawPrimitives(primType, offset, maxVertsPerDraw / numVertsPerPrimitive(primType)); offset += maxVertsPerDraw; } device.DrawPrimitives(primType, offset, remainder / numVertsPerPrimitive(primType)); }