Esempio n. 1
0
 internal void Render()
 {
     if (GetObjects == null)
     {
         TriangleTest();
     }
     else
     {
         GL.PushMatrix();
         SetupCamera();
         foreach (LatipiumObject obj in GetObjects())
         {
             Com.Latipium.Core.Tuple <object, object> data = obj.InvokeFunction <LatipiumObject>("Type")
                                                             .InvokeFunction <LatipiumObject, Com.Latipium.Core.Tuple <object, object> >("GetRenderData", obj);
             if (data != null)
             {
                 IObjectRenderer objectR = FindObjectRenderer(data);
                 if (objectR == null)
                 {
                     continue;
                 }
                 IColorRenderer colorR = FindColorRenderer(data);
                 GL.PushMatrix();
                 RenderObject(obj, data, objectR, colorR);
                 GL.PopMatrix();
             }
         }
         GL.PopMatrix();
     }
 }
Esempio n. 2
0
        private void RenderObject(LatipiumObject obj, Com.Latipium.Core.Tuple <object, object> data, IObjectRenderer objectR, IColorRenderer colorR)
        {
            Com.Latipium.Core.Tuple <float, float, float> position = obj.InvokeFunction <Com.Latipium.Core.Tuple <float, float, float>, Com.Latipium.Core.Tuple <float, float, float> >("Position", null);
            float[] transform = obj.InvokeFunction <float[], float[]>("Transform", null);
            if (position != null)
            {
                GL.Translate(position.Object1, position.Object2, position.Object3);
            }
            if (transform != null)
            {
                GL.MultMatrix(transform);
            }
            int len = objectR.Start(data.Object1);

            if (colorR == null)
            {
                for (int i = 0; i < len; ++i)
                {
                    objectR.Vertex(i);
                }
            }
            else
            {
                colorR.Start(data.Object2);
                for (int i = 0; i < len; ++i)
                {
                    colorR.Color(i);
                    objectR.Vertex(i);
                }
            }
            objectR.End();
        }