private void Init() { // Safely dispose any previous instance // Creates a new DeviceManager (Direct3D, Direct2D, DirectWrite, WIC) deviceManager = new DeviceManager(); // New CubeRenderer cubeRenderer = new CubeRenderer(); cubeRenderer.ShowCube = true; shapeRenderer = new ShapeRenderer(); shapeRenderer.Show = false; shapeRenderer.EnableClear = false; // Use CoreWindowTarget as the rendering target (Initialize SwapChain, RenderTargetView, DepthStencilView, BitmapTarget) target = new SwapChainPanelTarget(scpMain); // Add Initializer to device manager deviceManager.OnInitialize += target.Initialize; deviceManager.OnInitialize += cubeRenderer.Initialize; deviceManager.OnInitialize += shapeRenderer.Initialize; // Render the cube within the CoreWindow target.OnRender += cubeRenderer.Render; target.OnRender += shapeRenderer.Render; // Initialize the device manager and all registered deviceManager.OnInitialize deviceManager.Initialize(DisplayProperties.LogicalDpi); // Setup rendering callback CompositionTarget.Rendering += CompositionTarget_Rendering; // Callback on DpiChanged DisplayProperties.LogicalDpiChanged += DisplayProperties_LogicalDpiChanged; }
/// <summary> /// Invoked when this page is about to be displayed in a Frame. /// </summary> /// <param name="e">Event data that describes how this page was reached. The Parameter /// property is typically used to configure the page.</param> protected override void OnNavigatedTo(NavigationEventArgs e) { d3dDragHandler = new DragHandler(d3dCanvas) { CursorOver = new Windows.UI.Core.CoreCursor(Windows.UI.Core.CoreCursorType.SizeAll, 1) }; d2dDragHandler = new DragHandler(d2dCanvas) { CursorOver = new Windows.UI.Core.CoreCursor(Windows.UI.Core.CoreCursorType.SizeAll, 1) }; d3dBrush = new ImageBrush(); d3dRectangle.Fill = d3dBrush; d2dBrush = new ImageBrush(); d2dRectangle.Fill = d2dBrush; // Safely dispose any previous instance // Creates a new DeviceManager (Direct3D, Direct2D, DirectWrite, WIC) deviceManager = new DeviceManager(); // New CubeRenderer cubeRenderer = new CubeRenderer(); shapeRenderer = new ShapeRenderer(); int pixelWidth = (int)(d3dRectangle.Width * DisplayProperties.LogicalDpi / 96.0); int pixelHeight = (int)(d3dRectangle.Height * DisplayProperties.LogicalDpi / 96.0); // Use CoreWindowTarget as the rendering target (Initialize SwapChain, RenderTargetView, DepthStencilView, BitmapTarget) d3dTarget = new SurfaceImageSourceTarget(pixelWidth, pixelHeight); d3dBrush.ImageSource = d3dTarget.ImageSource; d2dTarget = new SurfaceImageSourceTarget(pixelWidth, pixelHeight); d2dBrush.ImageSource = d2dTarget.ImageSource; // Add Initializer to device manager deviceManager.OnInitialize += d3dTarget.Initialize; deviceManager.OnInitialize += d2dTarget.Initialize; deviceManager.OnInitialize += cubeRenderer.Initialize; deviceManager.OnInitialize += shapeRenderer.Initialize; // Render the cube within the CoreWindow d3dTarget.OnRender += cubeRenderer.Render; d2dTarget.OnRender += shapeRenderer.Render; // Initialize the device manager and all registered deviceManager.OnInitialize deviceManager.Initialize(DisplayProperties.LogicalDpi); CoreWindow.GetForCurrentThread().VisibilityChanged += (_, args) => { if (args.Visible) { BindRenderingEvents(); } else { UnbindRenderingEvents(); } }; }
public void Connect( SceneManager sceneManager, CubeRenderer cubeRenderer ) { this.sceneManager = sceneManager; this.cubeRenderer = cubeRenderer; }
public void Connect( SceneManager sceneManager, CubeRenderer aoHemicubeRenderer ) { this.sceneManager = sceneManager; this.aoHemicubeRenderer = aoHemicubeRenderer; }
public void SetCube(CubeResource cube) { SetModel(null); if (CubeRenderer != null) { CubeRenderer.PrepareCubeRendering(cube); SelectedCube = cube; } }
private IActionResult Render(int x, int y, int z) { Cube cube = new Cube(Point.Zero, x, y, z); Canvas canvas = new Canvas(x + z * 2, y + z * 2); CubeRenderer.Render(canvas, cube); RenderResult renderResult = new RenderResult(canvas.Render(), canvas.Width, canvas.Height); return Ok(renderResult); }
private void canvas_CreateResources(CanvasAnimatedControl sender, CanvasCreateResourcesEventArgs args) { // Create the Direct3D teapot model. Cube = new CubeRenderer(sender); TextRenderTarget = new CanvasRenderTarget(sender, TextRenderTargetSize, TextRenderTargetSize); // Set the scrolling text rendertarget (a Win2D object) as // source texture for our 3D teapot model (which uses Direct3D). Cube.SetTexture(TextRenderTarget); }
private void DrawCube(GLContext context, Vector3 position) { var shader = GlobalShaders.GetShader("BASIC"); context.CurrentShader = shader; var transform = Matrix4.CreateTranslation(position); shader.SetMatrix4x4("mtxMdl", ref transform); shader.SetVector4("color", new Vector4(1)); CubeRenderer.Draw(context, 0.5f); context.CurrentShader = null; }
/// <summary> /// Invoked when the application is launched normally by the end user. Other entry points /// will be used when the application is launched to open a specific file, to display /// search results, and so forth. /// </summary> /// <param name="args">Details about the launch request and process.</param> protected override void OnLaunched(LaunchActivatedEventArgs args) { if (args.PreviousExecutionState == ApplicationExecutionState.Terminated) { //TODO: Load state from previously suspended application } // Safely dispose any previous instance // Creates a new DeviceManager (Direct3D, Direct2D, DirectWrite, WIC) deviceManager = new DeviceManager(); // New CubeRenderer cubeRenderer = new CubeRenderer(); cubeRenderer.ShowCube = true; shapeRenderer = new ShapeRenderer(); shapeRenderer.Show = false; shapeRenderer.EnableClear = false; // Place the frame in the current Window and ensure that it is active var swapchainPanel = new DirectXPanelXaml(cubeRenderer, shapeRenderer); Window.Current.Content = swapchainPanel; Window.Current.Activate(); // Use CoreWindowTarget as the rendering target (Initialize SwapChain, RenderTargetView, DepthStencilView, BitmapTarget) target = new SwapChainBackgroundPanelTarget(swapchainPanel); // Add Initializer to device manager deviceManager.OnInitialize += target.Initialize; deviceManager.OnInitialize += cubeRenderer.Initialize; deviceManager.OnInitialize += shapeRenderer.Initialize; // Render the cube within the CoreWindow target.OnRender += cubeRenderer.Render; target.OnRender += shapeRenderer.Render; // Initialize the device manager and all registered deviceManager.OnInitialize deviceManager.Initialize(DisplayProperties.LogicalDpi); // Setup rendering callback CompositionTarget.Rendering += CompositionTarget_Rendering; // Callback on DpiChanged DisplayProperties.LogicalDpiChanged += DisplayProperties_LogicalDpiChanged; }
void Direct3DUserControl_Loaded(object sender, RoutedEventArgs e) { // Do not initialize D3D in design mode as default, since it may cause designer crashes if (Windows.ApplicationModel.DesignMode.DesignModeEnabled && !DesignModeD3DRendering) { return; } // Safely dispose any previous instance // Creates a new DeviceManager (Direct3D, Direct2D, DirectWrite, WIC) deviceManager = new DeviceManager(); // Use current control as the rendering target (Initialize SwapChain, RenderTargetView, DepthStencilView, BitmapTarget) target = new SwapChainPanelTarget(this); // Add Initializer to device manager deviceManager.OnInitialize += target.Initialize; // New CubeRenderer cubeRenderer = new CubeRenderer(); cubeRenderer.ShowCube = true; deviceManager.OnInitialize += cubeRenderer.Initialize; target.OnRender += cubeRenderer.Render; // New ShapeRenderer shapeRenderer = new ShapeRenderer(); shapeRenderer.Show = true; shapeRenderer.EnableClear = false; deviceManager.OnInitialize += shapeRenderer.Initialize; target.OnRender += shapeRenderer.Render; // Initialize the device manager and all registered deviceManager.OnInitialize try { deviceManager.Initialize(DisplayInformation.GetForCurrentView().LogicalDpi); DisplayInformation.GetForCurrentView().DpiChanged += DisplayInformation_LogicalDpiChanged; } catch (Exception ex) { //DisplayInformation.GetForCurrentView() will throw exception in designer deviceManager.Initialize(96.0f); } // Setup rendering callback CompositionTargetEx.Rendering += CompositionTarget_Rendering; }
public InventoryComponent( D3DEngine engine, InputsManager inputManager, GuiManager guiManager, IconFactory iconFactory, VisualWorldParameters worldParameters) { IsDefferedLoadContent = true; _engine = engine; _inputManager = inputManager; _guiManager = guiManager; _iconFactory = iconFactory; _guiManager.Screen.Desktop.Clicked += DesktopClicked; _cubeRenderer = new CubeRenderer(engine, worldParameters); _dragOffset = new Point(InventoryWindow.CellSize / 2, InventoryWindow.CellSize / 2); }
public Direct3DUserControl() { this.InitializeComponent(); // Safely dispose any previous instance // Creates a new DeviceManager (Direct3D, Direct2D, DirectWrite, WIC) deviceManager = new DeviceManager(); // Use current control as the rendering target (Initialize SwapChain, RenderTargetView, DepthStencilView, BitmapTarget) target = new SwapChainPanelTarget(this); // Add Initializer to device manager deviceManager.OnInitialize += target.Initialize; // New CubeRenderer cubeRenderer = new CubeRenderer(); cubeRenderer.ShowCube = true; deviceManager.OnInitialize += cubeRenderer.Initialize; target.OnRender += cubeRenderer.Render; // New ShapeRenderer shapeRenderer = new ShapeRenderer(); shapeRenderer.Show = true; shapeRenderer.EnableClear = false; deviceManager.OnInitialize += shapeRenderer.Initialize; target.OnRender += shapeRenderer.Render; // Initialize the device manager and all registered deviceManager.OnInitialize try { deviceManager.Initialize(DisplayInformation.GetForCurrentView().LogicalDpi); DisplayInformation.GetForCurrentView().DpiChanged += DisplayProperties_LogicalDpiChanged; } catch (Exception ex) { //DisplayInformation.GetForCurrentView() will throw exception in designer deviceManager.Initialize(96.0f); } // Setup rendering callback CompositionTargetEx.Rendering += CompositionTarget_Rendering; this.LayoutUpdated += Direct3DUserControl_LayoutUpdated; }
public void Initialize(Application application) { loading = application.Loader; // Essential services #if ASSET_MONITOR var assetMonitor = new AssetMonitor(); #endif var depthStencilVisualizer = new DepthStencilVisualizer(); var game = new Game(); var highLevelRenderer = new HighLevelRenderer(); var idRenderer = Configuration.idBuffer ? new IDRenderer() : null; var lineRenderer = new LineRenderer(); var manipulatorManager = new ManipulatorManager(); var map = Configuration.voxelTest ? new Map() : null; var voxelEditor = Configuration.voxelTest ? new VoxelEditor() : null; #if false var openRLRenderer = RenderStack.Graphics.Configuration.useOpenRL ? new OpenRLRenderer() : null; #endif var mainSceneRenderer = new MainSceneRenderer(); var materialManager = new MaterialManager(); // Cannot start without var renderer = RendererFactory.Create(); // Cannot start without var sceneManager = new SceneManager(); // Cannot start without var selectionManager = Configuration.selection ? new SelectionManager() : null; var shadowRenderer = (RenderStack.Graphics.Configuration.useGl1 == false) ? new ShadowRenderer() : null; var sounds = new Sounds(); // Cannot start without - always created, even if disabled var statistics = new Statistics(); var stereoscopicRenderer = Configuration.stereo ? new StereoscopicRenderer() : null; var styleManager = Configuration.graphicalUserInterface ? new StyleManager() : null; var textRenderer = new TextRenderer(); var timerRenderer = new TimerRenderer(); var userInterfaceManager = new UserInterfaceManager(); var updateManager = new UpdateManager(); var curveTool = new CurveTool.CurveTool(); #if false aoHemicubeRenderer = new HemicubeRenderer(32, PixelFormat.Red, PixelInternalFormat.R8); cubeRenderer = new CubeRenderer(512); hemisphericalRenderer = new HemisphericalRenderer(256); pointViewHemicubeRenderer = new HemicubeRenderer(512, PixelFormat.Rgba, PixelInternalFormat.Rgba8); #endif var aoManager = new AmbientOcclusionManager(); var brushManager = Configuration.brushes ? new BrushManager() : null; var operations = new Operations(); var operationStack = new OperationStack(); var physicsDrag = Configuration.physics ? new PhysicsDrag() : null; // Sometimes objective C would be useful.. //if(aoHemicubeRenderer != null) aoHemicubeRenderer.Connect(renderer); if (aoManager != null) { aoManager.Connect(null, renderer, sceneManager); } if (brushManager != null) { brushManager.Connect(materialManager, textRenderer); } //if(cubeRenderer != null) cubeRenderer.Connect(renderer); if (curveTool != null) { curveTool.Connect(materialManager, renderer, sceneManager); } if (depthStencilVisualizer != null) { depthStencilVisualizer.Connect(materialManager, renderer); } if (game != null) { game.Connect(highLevelRenderer, materialManager, renderer, sceneManager); } if (highLevelRenderer != null) { highLevelRenderer.Connect( curveTool, idRenderer, lineRenderer, mainSceneRenderer, manipulatorManager, map, materialManager, renderer, sceneManager, selectionManager, shadowRenderer, stereoscopicRenderer, userInterfaceManager, voxelEditor, application as OpenTK.GameWindow ); } if (idRenderer != null) { idRenderer.Connect(application, materialManager, renderer, sceneManager, textRenderer, userInterfaceManager); } if (lineRenderer != null) { lineRenderer.Connect(renderer); } if (mainSceneRenderer != null) { mainSceneRenderer.Connect(lineRenderer, manipulatorManager, renderer, sceneManager, selectionManager); } if (manipulatorManager != null) { manipulatorManager.Connect(lineRenderer, materialManager, renderer, sceneManager, selectionManager); } if (map != null) { map.Connect(materialManager, renderer); } if (materialManager != null) { materialManager.Connect(renderer); } #if false if (openRLRenderer != null) { openRLRenderer.Connect(materialManager, renderer, sceneManager); } #endif if (operations != null) { operations.Connect(brushManager, materialManager, operationStack, sceneManager, selectionManager, sounds, userInterfaceManager); } if (operationStack != null) { operationStack.Connect(application); } if (physicsDrag != null) { physicsDrag.Connect(lineRenderer, selectionManager, sceneManager, application); } //if(pointViewHemicubeRenderer != null) pointViewHemicubeRenderer.Connect(renderer); if (renderer != null) { renderer.Connect(application as OpenTK.GameWindow); } if (sceneManager != null) { sceneManager.Connect(brushManager, materialManager, renderer, selectionManager, sounds, textRenderer, userInterfaceManager, application as OpenTK.GameWindow); } if (shadowRenderer != null) { shadowRenderer.Connect(materialManager, renderer, sceneManager); } if (selectionManager != null) { selectionManager.Connect(curveTool, idRenderer, lineRenderer, manipulatorManager, operations, physicsDrag, renderer, sceneManager, sounds, userInterfaceManager, application); } if (stereoscopicRenderer != null) { stereoscopicRenderer.Connect(highLevelRenderer, mainSceneRenderer, materialManager, renderer, sceneManager, application as OpenTK.GameWindow); } if (styleManager != null) { styleManager.Connect(materialManager, renderer, textRenderer); } if (textRenderer != null) { textRenderer.Connect(application, renderer); } if (timerRenderer != null) { timerRenderer.Connect(renderer, textRenderer, application as OpenTK.GameWindow); } if (updateManager != null) { updateManager.Connect(sceneManager, sounds, userInterfaceManager); } if (userInterfaceManager != null) { userInterfaceManager.Connect(aoManager, brushManager, curveTool, highLevelRenderer, materialManager, operations, operationStack, renderer, sceneManager, selectionManager, shadowRenderer, sounds, statistics, textRenderer, application); } if (voxelEditor != null) { voxelEditor.Connect(renderer, map); } // This helps us get text rendering capability earlier and thus we can // display loading progress //if(framebufferManager != null) framebufferManager.InitializationDependsOn(textRenderer); if (lineRenderer != null) { lineRenderer.InitializationDependsOn(textRenderer); } if (operationStack != null) { operationStack.InitializationDependsOn(textRenderer); } if (selectionManager != null) { selectionManager.InitializationDependsOn(textRenderer); } if (sounds != null) { sounds.InitializationDependsOn(textRenderer); } #if ASSET_MONITOR if (renderer != null) { renderer.InitializationDependsOn(assetMonitor); } #endif Action <object> initializeService = new Action <object>(InitializeService); HashSet <IService> uninitialized = new HashSet <IService>(ServicesSet); HashSet <IService> removeSet = new HashSet <IService>(); int count = uninitialized.Count; var stopwatch = new Stopwatch(); while (uninitialized.Count > 0) { Trace.TraceInformation("====== Service initialization pass"); removeSet.Clear(); foreach (var service in uninitialized) { if (service.Dependencies.Count == 0) { string message = "Initializing " + service.Name + " (" + count + " left)"; Trace.TraceInformation(message); if ( (Configuration.loadingWindow == false) && (textRenderer != null) && textRenderer.IsInitialized ) { // \todo this is broken, there is no camera //textRenderer.Message(message); } if (loading != null) { loading.Message(message); } if (service.InitializeInMainThread || true) { service.Initialize(); if (loading != null) { loading.Step(); } System.GC.Collect(); System.GC.WaitForPendingFinalizers(); } else { ThreadManager2.Instance.AddTask(initializeService, service); } removeSet.Add(service); --count; } } ThreadManager2.Instance.Execute(); if (removeSet.Count == 0) { Trace.TraceError("Circular Service Dependencies Detected"); foreach (var service in uninitialized) { Trace.TraceInformation(service.ToString()); } Debugger.Break(); } uninitialized.ExceptWith(removeSet); foreach (var other in uninitialized) { other.Dependencies.ExceptWith(removeSet); } } }
public DirectXPanelXaml(CubeRenderer cubeRenderer, ShapeRenderer shapeRenderer) { this.cubeRenderer = cubeRenderer; this.shapeRenderer = shapeRenderer; this.InitializeComponent(); }