Ejemplo n.º 1
0
        public Pipeline(Application.Application a_application)
        {
#if DEBUG_INFO
            Debug.Assert(Instance == null);
#endif
            Instance = this;

            m_application = a_application;

            m_gui = new List <Canvas>();

            if (a_application.ApplicationType == e_ApplicationType.Managed)
            {
                m_internalPipeline = new OpenTKPipeline(this);
            }
            else
            {
                m_internalPipeline = new NativePipeline(this);
            }

            m_application.Update  += SyncedUpdate;
            m_application.Closing += Shutdown;

            GraphicsCommand.Init(this);
        }
Ejemplo n.º 2
0
        public void Update()
        {
            GizmoVertex[] dirtyVerts = Gizmos.GetVertices();

            if (dirtyVerts != null)
            {
                int count = dirtyVerts.Length;
                if (count > 0)
                {
                    List <GizmoVertex>             vertices     = new List <GizmoVertex>();
                    List <uint>                    indices      = new List <uint>();
                    Dictionary <GizmoVertex, uint> vertexLookup = new Dictionary <GizmoVertex, uint>();

                    for (int i = 0; i < count; ++i)
                    {
                        GizmoVertex vert = dirtyVerts[i];

                        if (vertexLookup.ContainsKey(vert))
                        {
                            indices.Add(vertexLookup[vert]);

                            continue;
                        }

                        uint index = (uint)vertices.Count;
                        vertices.Add(vert);
                        indices.Add(index);
                        vertexLookup.Add(vert, index);
                    }

                    m_model.SetData(vertices.ToArray(), indices.ToArray(), 0.0f, m_vertexInfo);
                    m_model.Bind();

                    GraphicsCommand.BindProgram(m_program);

                    GraphicsCommand.DrawElementsUInt(m_model.Indices);
                }
            }
        }