Exemplo n.º 1
0
        public void FontRendering2(GraphicsDevice device)
        {
            using (ICanvas canvas = new GraphicsCanvas(device, device.SwapChain, new Vector2f(1.0f, 1.0f)))
            {
                // We first create all needed fills.
                //RadialFill solidFill = new RadialFill(new Vector2f(0.2f, 0.3f), .4f, Colour.Blue, Colour.LightBlue);
                SolidFill solidFill = new SolidFill(Colour.Black);
                Font      font      = new Font(SVGFontProvider.ImportSVG("vera.svg"));

                Pen pen = new Pen(solidFill, 0.007f, 0.0f, OutlineEnd.Square);

                bool exit = false;

                device.SwapChain.Window.Closed += delegate(Window w) { exit = true; };

                string txt = "ABC�DEFGHIJKLMNOPRS�TUVZ�abc�defghijklmnoprs�tuvz�123456789!?";//"CFGHIJKLMNSTUVZ��cfhklijmnstuvz��12357";

                float a = 0, b = 0;

                while (!exit)
                {
                    device.SwapChain.Window.DoEvents();

                    using (DeviceLock l = device.Lock())
                    {
                        device.Clear(device.SwapChain, Colour.White);

                        device.SetViewports(new Region2i(0, 0, (int)device.SwapChain.Width, (int)device.SwapChain.Height));



                        DateTime time = DateTime.Now;

                        // We render.
                        canvas.Begin(CanvasRenderFlags.None);


                        font.Render(pen.Fill, canvas, txt, 0.1f, TextOptions.UseCanvasUnits | TextOptions.Top, 1.5f,
                                    new Vector2f(0, 0), new Vector2f(1, 1));

                        canvas.End();

                        span += DateTime.Now - time;

                        Console.WriteLine("Span 1: {0}", span.TotalSeconds);
                    }

                    device.SwapChain.Present();

                    Console.WriteLine("FPS: {0}\nTrig Count: {1}", device.DevicePerformance.CurrentFPS,
                                      device.DevicePerformance.MaxTrianglesPerFrame);

                    a += 0.002f;
                    b += 0.01f;

                    /*
                     * if (a > 0.005f)
                     * {
                     *  txt += (char)(txt[txt.Length - 1] + 1);
                     *  a = 0;
                     * }*/
                }
            }
        }
Exemplo n.º 2
0
        public override int Start(string verb, string[] args)
        {
            // We initialize the service.
            if (service.DeviceExists)
            {
                throw new InvalidOperationException("Test application cannot be contructed, " +
                                                    "device already exists.");
            }

            if (renderTargetParameters == null)
            {
                // We use defaults.
                renderTargetParameters                          = new RenderTargetParameters();
                renderTargetParameters.Windowed                 = true;
                renderTargetParameters.FormatCommon             = CommonPixelFormatLayout.X8Y8Z8W8_UNORM;
                renderTargetParameters.DepthStencilCommonFormat = CommonPixelFormatLayout.D24_UNORM_S8_UINT;
                renderTargetParameters.BackBufferCount          = 1;
                renderTargetParameters.BackBufferWidth          = 800;
                renderTargetParameters.BackBufferHeight         = 600;
                renderTargetParameters.MultiSampleType          = 4;
                renderTargetParameters.MultiSampleQuality       = 3;
            }


            Window window;
            Font   font = new Font(SVGFontProvider.ImportSVG("dressel.svg"));

            using (GraphicsDevice device =
                       service.CreateDevice(true, false, renderTargetParameters, out window))
            {
                // We craete input device.
                using (input = new Input.InputService(new Input.Driver.DirectInput.DIInput()))
                {
                    /*
                     * DefaultTheme theme = new DefaultTheme(font);
                     * input.Initialize(window);
                     *
                     * bool isClosed = false;
                     * window.Closed += delegate(Window w) { isClosed = true; };
                     * IWindowManager manager = new DefaultWindowManager(device, device.SwapChain, input, theme);
                     *
                     * Container container = new Container();
                     *
                     * // We create a simple area.
                     * Area area = new Area();
                     * using (area.Enter())
                     * {
                     *  Area.AreaStyle s = new Area.AreaStyle();
                     *  area.PreferredRect = new GuiRect(RectangleMode.MinMax,
                     *      new GuiVector2(new Vector2f(0.2f, 0.2f)),
                     *      new GuiVector2(new Vector2f(0.8f, 0.8f)));
                     *  s.Background = new BackgroundStyle(new SolidFill(Colour.Red));
                     *  area.Style = Style.Create<Area.AreaStyle>(null,
                     *      new KeyValuePair<StyleState, Area.AreaStyle>(CommonStyleStates.Normal, s));
                     * }
                     *
                     * using (container.Enter())
                     * {
                     *  container.AddChild(area);
                     * }
                     *
                     *
                     * theme.AutomaticApply(container, true);
                     *
                     *
                     *
                     * RootWindow client = new RootWindow(device, manager, "Window Title", "SomeGroup",
                     *  WindowOptions.Close|WindowOptions.Maximimize|WindowOptions.Minimize, new Vector2i(100, 100), new Vector2i(300,300),
                     *  null, null, WindowState.Normal, container, 1, 0);
                     *
                     * client.GuiManager.PreRendering += delegate(GuiManager guiManager)
                     * {
                     *  guiManager.Canvas.Device.Clear(guiManager.Canvas.Target, Colour.Blue);
                     * };
                     *
                     * client.IsVisible = true;
                     *
                     * manager.PreRendering += delegate(IWindowManager y)
                     * {
                     *  device.Clear(device.SwapChain, Colour.Yellow);
                     * };
                     * manager.PostRendering += delegate(IWindowManager z)
                     * {
                     *  device.SwapChain.Present();
                     * };
                     *
                     * while (!isClosed)
                     * {
                     *  client.GuiManager.Invalidate();
                     *  client.GuiManager.Render();
                     *  (manager as IWindowManagerControl).Update();
                     *  window.DoEvents();
                     * }
                     * (manager as IWindowManagerControl).Dispose();
                     *
                     */


                    /*
                     * input.Initialize(window);
                     *
                     * // We default to font rendering 2.
                     * if (args.Length == 0)
                     * {
                     *
                     *  IGuiTheme theme = new DefaultTheme(font);
                     *  GuiTest test = new GuiTest();
                     *
                     *  using (GraphicsCanvas canvas = new GraphicsCanvas(device, device.SwapChain, new Vector2f(1, 1)))
                     *  {
                     *      test.SimpleGUI(canvas, theme, input);
                     *
                     *  }
                     *
                     *
                     *  // We now run demos.
                     *
                     *  VectorTest test = new VectorTest();
                     *  test.FontRendering2(device);
                     * }
                     * /*
                     * else
                     * {
                     *
                     *  VectorTest test = new VectorTest();
                     *  foreach (string arg in args)
                     *  {
                     *      MethodInfo info = typeof(VectorTest).GetMethod(arg);
                     *      if (info != null)
                     *      {
                     *          try
                     *          {
                     *              info.Invoke(test, new object[] { device });
                     *          }
                     *          catch (Exception)
                     *          {
                     *              Console.WriteLine("Could not run or error method {0}.", arg);
                     *          }
                     *      }
                     *      else
                     *      {
                     *          Console.WriteLine("Could not run method {0}.", arg);
                     *      }
                     *  }
                     * }*/
                    //}
                }
            }
            return(0);
        }
Exemplo n.º 3
0
        public void FontRendering(GraphicsDevice device)
        {
            ICanvas canvas = new GraphicsCanvas(device, device.SwapChain, new Vector2f(1.0f, 1.0f));

            // We first create all needed fills.
            RadialFill solidFill = new RadialFill(new Vector2f(0.2f, 0.3f), .4f, Colour.Blue, Colour.LightBlue);
            Font       font      = new Font(SVGFontProvider.ImportSVG("vera.svg"));

            Pen pen = new Pen(solidFill, 0.01f, 0.0f, OutlineEnd.Square);

            bool exit = false;

            device.SwapChain.Window.Closed += delegate(Window w) { exit = true; };

            float a = 0;

            while (!exit)
            {
                device.SwapChain.Window.DoEvents();

                using (DeviceLock l = device.Lock())
                {
                    device.Clear(device.SwapChain, Colour.Green);

                    device.SetViewports(new Region2i(0, 0, (int)device.SwapChain.Width, (int)device.SwapChain.Height));

                    // We render.
                    canvas.Begin(CanvasRenderFlags.None);

                    canvas.PixelErrorTolerance = 0.01f + 0.001f * a;

                    Vector2f[] polygon1 = new Vector2f[]
                    {
                        new Vector2f(0.1f, 0.1f),
                        new Vector2f(0.9f, 0.1f),
                        new Vector2f(0.9f, 0.9f),
                        new Vector2f(0.15f, 0.9f),
                        new Vector2f(0.5f, 0.5f),
                        new Vector2f(0.2f, 0.5f),
                        new Vector2f(0.1f, 0.9f)
                    };

                    Vector2f[] polygon2 = new Vector2f[]
                    {
                        new Vector2f(0, 0),
                        new Vector2f(0.1f, 0f),
                        new Vector2f(0.2f, 0.2f),
                        new Vector2f(0.54f, 0.2f),
                        new Vector2f(0.61f, 0.0f),
                        new Vector2f(0.72f, 0.0f),
                        new Vector2f(0.42f, 0.8f),
                        new Vector2f(0.37f, 0.7f),
                        new Vector2f(0.51f, 0.29f),
                        new Vector2f(0.22f, 0.3f),
                        new Vector2f(0.37f, 0.71f),
                        new Vector2f(0.42f, 0.81f),
                        new Vector2f(0.3f, 0.8f)
                    };


                    canvas.FillShape(solidFill, new Polygon2f(polygon2), null);

                    //canvas.FillShape(solidFill, polygon2);
                    //canvas.DrawShape(pen, outline);

                    canvas.End();
                }

                device.SwapChain.Present();

                a += 0.01f;
            }
        }