public void DrawNode(GraphNode node) { //if(node.ImgFrame == null) if (node.ImgFrame != null) { if (node.ImgFrame.Width < 2) { Console.WriteLine("Illegal Image ID:" + node.ImgFrame.ID); while (true) { } } bool first = true; foreach (GraphLight light in Lights) { if (node.ImgFrame == null) { continue; } LitImage.Graph = this; LitImage.Light = light; if (first) { Render.SetBlend(BlendMode.Alpha); first = false; } else { Render.SetBlend(BlendMode.Add); } LitImage.Bind(); float[] xc; float[] yc; node.SyncCoords(); xc = node.XC; yc = node.YC; Render.Image(node.DrawP, node.ImgFrame); //Render.Image(xc, yc, node.ImgFrame); LitImage.Release(); } } foreach (GraphNode snode in node.Nodes) { DrawNode(snode); } }
public void Draw(bool shadows) { // OpenTK.Graphics.OpenGL4.GL.Disable(OpenTK.Graphics.OpenGL4.EnableCap.Blend); bool first = true; if (Lights.Count == 0) { Render.Begin(); DrawNode(Root); UnlitImage.Bind(); Render.End2D(); UnlitImage.Release(); } foreach (var l in Lights) { Render.Begin(); DrawNode(Root); LitImage.Light = l; LitImage.Graph = this; LitImage.LightZ = l.Z; // Console.WriteLine("LZ:" + l.Z); if (LitImage.Light != null) { LitImage.Bind(); Render.SetBlend(BlendMode.Alpha);; if (shadows) { l.SB1.BB.Bind(1); } else { White1.Bind(1); } if (first) { Render.SetBlend(BlendMode.Alpha); first = false; } else { Render.SetBlend(BlendMode.Add); } Render.End2D(); if (shadows) { l.SB1.BB.Release(1); } else { White1.Release(1); } LitImage.Release(); } } }