Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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();
                }
            }
        }