/// <summary> /// Draw call /// </summary> /// <param name="context"></param> /// <param name="instanceModel"></param> protected virtual void OnDraw(DeviceContextProxy context, IElementsBufferModel instanceModel) { if (GeometryBuffer.IndexBuffer != null) { if (instanceModel == null || !instanceModel.HasElements) { context.DrawIndexed(GeometryBuffer.IndexBuffer.ElementCount, GeometryBuffer.IndexBuffer.Offset, 0); } else { context.DrawIndexedInstanced(GeometryBuffer.IndexBuffer.ElementCount, instanceModel.Buffer.ElementCount, GeometryBuffer.IndexBuffer.Offset, 0, instanceModel.Buffer.Offset); } } else if (GeometryBuffer.VertexBuffer.Length > 0) { if (instanceModel == null || !instanceModel.HasElements) { context.Draw(GeometryBuffer.VertexBuffer[0].ElementCount, 0); } else { context.DrawInstanced(GeometryBuffer.VertexBuffer[0].ElementCount, instanceModel.Buffer.ElementCount, 0, instanceModel.Buffer.Offset); } } }
protected override void OnDraw(DeviceContextProxy context, IElementsBufferModel instanceModel) { if (GeometryBuffer.VertexBuffer.Length > 0) { if (instanceModel == null || !instanceModel.HasElements) { context.Draw(GeometryBuffer.VertexBuffer[0].ElementCount, 0); } else { context.DrawInstanced(GeometryBuffer.VertexBuffer[0].ElementCount, instanceModel.Buffer.ElementCount, 0, 0); } } }
protected override void OnDraw(DeviceContext context, IElementsBufferModel instanceModel) { var billboardGeometry = GeometryBuffer.Geometry as IBillboardText; var vertexCount = billboardGeometry.BillboardVertices.Count; if (instanceModel == null || !instanceModel.HasElements) { context.Draw(vertexCount, 0); } else { context.DrawInstanced(vertexCount, instanceModel.Buffer.ElementCount, 0, 0); } }
public static void DrawPoints(DeviceContextProxy context, IElementsBufferProxy vertexBuffer, IElementsBufferModel instanceModel) { if (!instanceModel.HasElements) { context.Draw(vertexBuffer.ElementCount, 0); } else { context.DrawInstanced(vertexBuffer.ElementCount, instanceModel.Buffer.ElementCount, 0, 0); } }
public static void DrawIndexed(DeviceContextProxy context, IElementsBufferProxy indexBuffer, IElementsBufferModel instanceModel) { if (instanceModel == null || !instanceModel.HasElements) { context.DrawIndexed(indexBuffer.ElementCount, 0, 0); } else { context.DrawIndexedInstanced(indexBuffer.ElementCount, instanceModel.Buffer.ElementCount, 0, 0, 0); } }