private void RenderIdBegin() { foreach (var group in idGroupsRendered) { group.IdList.Clear(); } idGroupsRendered.Clear(); renderer.ApplyViewport(); uint idClear = 0xfffffeffu; if (RenderStack.Graphics.Configuration.useIntegerPolygonIDs) { GL.Clear(ClearBufferMask.DepthBufferBit | ClearBufferMask.StencilBufferBit); GL.ClearBuffer(ClearBuffer.Color, 0, ref idClear); } else { Vector3 clearColor = Vector3.Vector3FromUint(idClear); GL.ClearColor(clearColor.X, clearColor.Y, clearColor.Z, 0.0f); //GL.ClearDepth(1.0); GL.Clear( 0 | ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit | ClearBufferMask.StencilBufferBit ); } sceneManager.Camera.Frame.UpdateHierarchical(sceneManager.UpdateSerial); sceneManager.Camera.UpdateFrame(); sceneManager.Camera.UpdateViewport(renderer.Requested.Viewport); renderer.Requested.Camera = sceneManager.Camera; if (RenderStack.Graphics.Configuration.useGl1) { } idOffset = 0; }
public void Render(int viewIndex) { renderer.RenderCurrentClear(); renderer.ApplyViewport(); if (RuntimeConfiguration.doubleSided) { FaceCullState.Disabled.Execute(); Material.LockFaceCullState = true; } Group hoverGroup = (selectionManager != null) ? selectionManager.HoverGroup : null; Group manipulatorGroup = (manipulatorManager != null) ? manipulatorManager.ManipulatorGroup : null; var selectedModels = (selectionManager != null) ? selectionManager.Models : null; renderer.Requested.MeshMode = MeshMode.PolygonFill; foreach (var group in sceneManager.RenderGroups) { if (group.Visible == false) { continue; } renderer.CurrentGroup = group; renderer.RenderGroup(); } GL.Disable(EnableCap.PolygonOffsetFill); renderer.PartialGLStateResetToDefaults(); if (selectionManager != null) { selectionManager.Render(); } if (manipulatorManager != null) { manipulatorManager.Render(); } if (RuntimeConfiguration.debugInfo && (selectionManager != null)) { var physicsDrag = Services.Get <PhysicsDrag>(); renderer.PartialGLStateResetToDefaults(); if ( (selectionManager.HoverModel != null) || (selectedModels.Count > 0) || ( (physicsDrag != null) && (physicsDrag.Model != null) ) ) { lineRenderer.Render(renderer.DefaultFrame); } } if (RuntimeConfiguration.doubleSided) { Material.LockFaceCullState = false; } // \todo fixme renderer.RenderLineRenderer(sceneManager.DebugLineRenderer, sceneManager.DebugFrame); }
public void Render() { int px, py; MouseInScreen(out px, out py); Debug.WriteLine("=== Render"); HandleResize(); renderer.Global.Floats("add_color").Set(0.0f, 0.0f, 0.0f); renderer.Global.Floats("alpha").Set(1.0f); renderer.Global.Sync(); // \todo LineRenderer should have Clear() if (lineRenderer != null) { lineRenderer.Begin(); lineRenderer.End(); } if (true) { #region Id if ( (selectionManager != null) && (RuntimeConfiguration.disableReadPixels == false) ) { if (Configuration.idBuffer && (idRenderer != null)) { using (var t = new TimerScope(timers.ID)) { idRenderer.Render(px, py); selectionManager.ProcessIdBuffer(idRenderer.Hover, px, py); } } selectionManager.Update(px, py); } #endregion #region Shadowmaps if (sceneManager.UpdateShadowMap && (RenderStack.Graphics.Configuration.useGl1 == false)) { using (var t = new TimerScope(timers.Shadow)) { shadowRenderer.UpdateShadowMaps(); } } #endregion #region CurveTool RenderT if ((curveTool != null) && curveTool.Enabled) { if (RenderStack.Graphics.Configuration.useGl1 == false) { curveTool.RenderT(px, py, sceneManager.Camera); } curveTool.CheckForUpdates(); } #endregion #region Main scene mono/stereo using (var t = new TimerScope(timers.Render3D)) { renderer.PartialGLStateResetToDefaults(); if (RenderStack.Graphics.Configuration.useGl1 == false) { renderer.SetTexture("t_shadowmap", shadowRenderer.ShadowMap); } StereoMode mode = (userInterfaceManager != null) ? userInterfaceManager.CurrentStereoMode : null; if ((mode != null) && (mode.Program != null) && (mode.Program.Valid == true)) { stereoscopicRenderer.Render(mode); } else { renderer.Requested.Viewport = windowViewport; renderer.Requested.Camera = sceneManager.Camera; renderer.Requested.Viewport = windowViewport; if (RenderStack.Graphics.Configuration.canUseFramebufferObject) { GL.BindFramebuffer(FramebufferTarget.Framebuffer, 0); } mainSceneRenderer.Render(0); } } #endregion #region voxelTest if (Configuration.voxelTest) { voxelEditor.RenderCubes(px, py, sceneManager.Camera); } #endregion } else { #region Alternative path without normal 3d scene // path without normal 3d scene renderer.Requested.Viewport = windowViewport; renderer.Requested.Camera = sceneManager.Camera; renderer.Requested.Viewport = windowViewport; if (RenderStack.Graphics.Configuration.canUseFramebufferObject) { GL.BindFramebuffer(FramebufferTarget.Framebuffer, 0); } renderer.RenderCurrentClear(); renderer.ApplyViewport(); #endregion } renderer.Requested.Viewport = windowViewport; renderer.Requested.Camera = sceneManager.Camera; renderer.Requested.Viewport = windowViewport; renderer.ApplyViewport(); if (RuntimeConfiguration.debugInfo && Configuration.graphicalUserInterface) { using (var t = new TimerScope(timers.GUI)) { userInterfaceManager.Render(); } } window.SwapBuffers(); }