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); }
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); } } }