public override void DrawViewportWires(IGH_PreviewArgs args) { if (!OpenGL.Initialized) { OpenGL.Initialize(); } if (args.Display.Viewport.ParentView != null) { _hglrc = OpenGL.wglGetCurrentContext(); _viewSerialNumber = args.Display.Viewport.ParentView.RuntimeSerialNumber; } _model.Draw(args.Display); }
static void PostDrawObjects(object sender, DrawEventArgs args) { if (_activeShaderComponents.Count < 1) { return; } if (!OpenGL.Initialized) { OpenGL.Initialize(); } if (!OpenGL.IsAvailable) { return; } UpdateContext(args); SortComponents(); using (IDisposable lifetimeObject = PerFrameCache.BeginFrame(args.Display, _activeShaderComponents)) { foreach (var component in _activeShaderComponents) { if (component.Hidden) { continue; } if (!GLSLEditorDialog.EditorsOpen && !AnimationTimerEnabled) { string dataType; int arrayLength; if (component._model.TryGetUniformType("_time", out dataType, out arrayLength) || component._model.TryGetUniformType("_date", out dataType, out arrayLength) || component._model.TryGetUniformType("_mousePosition", out dataType, out arrayLength) || component._model.TryGetUniformType("_mouseDownPosition", out dataType, out arrayLength) || component._model.TryGetUniformType("_mouseState", out dataType, out arrayLength)) { AnimationTimerEnabled = true; } } component._model.Draw(args.Display, component); } } GLRecycleBin.Recycle(); _activeShaderComponents.Clear(); }
// One time setup function to get the OpenGL functions initialized for use private void DisplayPipeline_DrawForeground(object sender, DrawEventArgs e) { DisplayPipeline.DrawForeground -= DisplayPipeline_DrawForeground; if (!OpenGL.Initialized) { OpenGL.Initialize(); } _hglrc = OpenGL.wglGetCurrentContext(); var view = e.Display.Viewport.ParentView; if (view == null) { view = e.RhinoDoc.Views.ActiveView; } _viewSerialNumber = view.RuntimeSerialNumber; }