public void ResetEditingViewports(IRenderGuiControl renderControl, IFocusNodeComponent aMainFocusNode) { var editingView = AmFactory.Create <EditingView>(); editingView.FocusOn(aMainFocusNode); var editViewport = AmFactory.Create <Viewport>(); editViewport.View = editingView; renderControl.SetViewports( new[] { editViewport }, new ViewportsLayout { RowHeights = new[] { new ViewportLength(100, ViewportLengthUnit.Percent), }, ColumnWidths = new[] { new ViewportLength(100, ViewportLengthUnit.Percent) }, ViewportIndices = new[, ] { { 0 } } }); viewService.ChangeRenderingArea(renderControl, editingView); }
public void ChangeRenderingArea(IRenderGuiControl newRenderControl, IFocusableView mainView) { model.RenderControl = newRenderControl; MainView = mainView; // todo: move somewhere or remove Update?.Invoke(this, new ViewEventArgs(ViewEventType.ViewportChanged)); }
public void RenderToContext(IRenderGuiControl renderControl, float timestamp) { foreach (var viewport in renderControl.Viewports) { var offScreen = offScreenContainer.Get(this, viewport, viewport.Width, viewport.Height, MsaaCount, OffscreenTtl); for (var i = 0; i < viewport.View.Layers.Count; i++) { var layer = viewport.View.Layers[i]; var isFirstLayer = i == 0; var isLastLayer = i == viewport.View.Layers.Count - 1; var sceneRendererSettings = GetSceneRendererSettings(isFirstLayer, true, isLastLayer); var sceneRenderer = sceneRendererPool.Allocate(sceneRendererSettings); sceneRenderer.Execute(layer.VisibleScene, layer.Camera, offScreen, timestamp, sceneRendererSettings); sceneRendererPool.Return(sceneRenderer); } glContext.Actions.BlitFramebuffer(offScreen.Framebuffer, null, 0, 0, viewport.Width, viewport.Height, viewport.Left, renderControl.Height - viewport.Top, viewport.Left + viewport.Width, renderControl.Height - (viewport.Top + viewport.Height), ClearBufferMask.ColorBufferBit, BlitFramebufferFilter.Nearest); } glContext.Infra.SwapBuffers(); // todo: to Update offScreenCacheDeathNote.Clear(); infra.MainThreadDisposer.DisposeOfAll(); }
public void Render(IRenderGuiControl target, float timestamp) { if (!(target is UcRenderGuiControl)) { throw new NotImplementedException(); } // todo: support more than one viewport var viewport = target.Viewports.First(); Render(viewport, globalObjectService.MainCamera, 0, timestamp); }