public void Draw(DrawInfo drawInfo) { if (BeginDrawing != null) { BeginDrawing(this, new DrawEventArgs(drawInfo)); } rwLock.EnterWrite(); try { graphics.RemoveExpired(); lock (syncRoot) { graphics.AddPending(); } graphics.CheckZOrder(); List <Graphic> graphics1 = graphics.Items; for (int index = 0; index < graphics1.Count; ++index) { Graphic graphic = graphics1[index]; if (graphic.IsVisible) { graphic.Draw(drawInfo); } } } finally { rwLock.ExitWrite(); } if (EndDrawing != null) { EndDrawing(this, new DrawEventArgs(drawInfo)); } }
private void DrawWithChildren(DrawInfo drawInfo) { children.RemoveExpired(); lock (syncRoot) { children.AddPending(); } children.CheckZOrder(); hasChildren = children.Items.Count > 0; PreDraw(drawInfo); int index = 0; List <Graphic> children2 = children.Items; for (; index < children2.Count && children2[index].ZOrder < this.ZOrder; ++index) { Gl.glPushMatrix(); children2[index].Draw(drawInfo); Gl.glPopMatrix(); } drawable.Draw(drawInfo, drawableState); for (; index < children2.Count; ++index) { Gl.glPushMatrix(); children2[index].Draw(drawInfo); Gl.glPopMatrix(); } PostDraw(drawInfo); }
void Draw(Scalar dt, Scalar trueDt) { rwLock.EnterWrite(); try { viewports.RemoveExpired(); lock (syncRoot) { viewports.AddPending(); } viewports.CheckZOrder(); drawCount++; DrawInfo drawInfo = new DrawInfo(dt, trueDt, drawCount, refreshCount); foreach (Viewport viewport in viewports.Items) { viewport.Draw(drawInfo); } } finally { rwLock.ExitWrite(); } }