Exemplo n.º 1
0
        public void Init(FormsHost host, FrameworkElement overlay)
        {
            context = new ContextStateProcessor();
            context.AddState(0, x => new GenneralContextState(x, notificator));

            context.SwitchTo(0);

            scene = new SceneView(host, overlay, context, notificator);
            scene.RenderStarted += OnRenderStarted;

            primitiveDrawer.SetContext(context);

            VisualTreeviewer.RenderModeSwither = new RenderModeSwitherCommand(context);
        }
Exemplo n.º 2
0
        static void Main(string[] args)
        {
            WindowCreateInfo windowCI = new WindowCreateInfo {
                X                  = 50,
                Y                  = 50,
                WindowWidth        = 960,
                WindowHeight       = 540,
                WindowInitialState = WindowState.Normal,
                WindowTitle        = "Veldrid NeoDemo"
            };

            Sdl2Window w = VeldridStartup.CreateWindow(windowCI);

            window = new Sdl2WindowWrapper(w);

            var context = new ContextStateProcessor(new EngineNotificator());

            context.AddState(0, x => new GenneralContextState(x));
            context.SwitchTo(0);

            var game = new Game(window, context);

            //====

            D3DShaderInfo[] shaders =
            {
                new D3DShaderInfo {
                    Path  = Path.Combine(AppContext.BaseDirectory, "Shaders", "Cube"),
                    Stage = ShaderStages.Vertex.ToString(), EntryPoint = "VS"
                },
                new D3DShaderInfo {
                    Path  = Path.Combine(AppContext.BaseDirectory, "Shaders", "Cube"),
                    Stage = ShaderStages.Fragment.ToString(), EntryPoint = "FS"
                }
            };

            var mb = new Helpers.MeshBulder();

            var camera = context.GetEntityManager()
                         .CreateEntity(new ElementTag(Guid.NewGuid().ToString()))
                         .AddComponent(new CameraBuilder.CameraComponent(window.Width, window.Height));
            // .AddComponent(new CameraBuilder.GraphicsComponent());

            var mage = Image.Load(Path.Combine(AppContext.BaseDirectory, "Textures", "spnza_bricks_a_diff.png"));

            var image = new TextureInfo()
            {
                Path = Path.Combine(AppContext.BaseDirectory, "Textures", "spnza_bricks_a_diff.png"),
                ///Image = Image.Load(Path.Combine(AppContext.BaseDirectory, "Textures", "spnza_bricks_a_diff.png"))
            };

            var box = GetCubeVertice();

            box = mb.BuildBox(Vector3.Zero, 1, 1, 1);

            var geo = context.GetEntityManager()
                      .CreateEntity(new ElementTag(Guid.NewGuid().ToString()))
                      .AddComponent(new TexturedGeometryGraphicsComponent(shaders, box, image)
            {
                Matrix = Matrix4x4.CreateTranslation(Vector3.UnitX * 1)
            });

            var geo1 = context.GetEntityManager()
                       .CreateEntity(new ElementTag(Guid.NewGuid().ToString()))
                       .AddComponent(new TexturedGeometryGraphicsComponent(shaders, mb.BuildSphere(Vector3.Zero, 1), image)
            {
                Matrix = Matrix4x4.CreateTranslation(Vector3.UnitY * -1)
            });

            context.GetSystemManager()
            .CreateSystem <VeldridRenderSystem>()
            .Init(game.gd, game.factory, window);

            context.EntityOrder
            .RegisterOrder <VeldridRenderSystem>(camera.Tag, 0)
            .RegisterOrder <VeldridRenderSystem>(geo.Tag, 1)
            .RegisterOrder <VeldridRenderSystem>(geo1.Tag, 2);

            //====


            game.Run(new EngineNotificator());
        }