Beispiel #1
0
        public void DrawImage()
        {
            var window = new Win32Window();

            window.Init(new Point(100, 100), new Size(300, 400), WindowTypes.Regular);

            var renderer = new Win32OpenGLRenderer();

            renderer.Init(window.Pointer, window.ClientSize);

            var image     = new Image(@"assets\images\logo.png");
            var primitive = new ImagePrimitive();

            primitive.Image  = image;
            primitive.Offset = new Vector(10, 10);

            var primitiveRenderer = new BuiltinPrimitiveRenderer();
            var brush             = new Brush();

            brush.FillColor = Color.White;

            var mesh = new Mesh();

            mesh.CommandBuffer.Add(DrawCommand.Default);
            primitiveRenderer.SetImageMesh(mesh);
            primitiveRenderer.DrawImage(primitive, brush);


            while (true)
            {
                window.MainLoop(() =>
                {
                    renderer.Clear(Color.FrameBg);
                    Win32OpenGLRenderer.DrawMesh(renderer.imageMaterial, primitiveRenderer.ImageMesh,
                                                 (int)window.ClientSize.Width, (int)window.ClientSize.Height);
                    renderer.SwapBuffers();
                });
                if (Input.Keyboard.Instance.KeyDown(Key.Escape))
                {
                    break;
                }
            }
        }
            public void DrawOriginalImage()
            {
                byte[] imageRawBytes;
                int    width, height;

                using (var context = new RenderContextForTest(300, 400))
                {
                    var primitive = new ImagePrimitive(@"assets\images\logo.png");
                    primitive.Offset = new Vector(10, 10);

                    var styleRuleSet        = new StyleRuleSet();
                    var styleRuleSetBuilder = new StyleRuleSetBuilder(styleRuleSet);
                    styleRuleSetBuilder.BackgroundColor(Color.White);

                    var primitiveRenderer = new BuiltinPrimitiveRenderer();

                    var mesh = new Mesh();
                    mesh.CommandBuffer.Add(DrawCommand.Default);
                    primitiveRenderer.SetImageMesh(mesh);
                    primitiveRenderer.DrawImage(primitive, new Rect(10, 10, primitive.Image.Width, primitive.Image.Height), styleRuleSet);

                    context.Clear();
                    context.DrawImageMesh(mesh);

                    imageRawBytes = context.Renderer.GetRawBackBuffer(out width, out height);
                }

                var    image = Util.CreateImage(imageRawBytes, width, height, flip: true);
                string expectedImageFilePath =
                    @"GraphicsImplementation\Builtin\images\BuiltinPrimitiveRendererFacts.DrawImage.DrawOriginalImage.png";

                #if DEBUG
                var expectedImage = Util.LoadImage(expectedImageFilePath);
                Assert.True(Util.CompareImage(expectedImage, image));
                #else
                Util.SaveImage(image, Util.UnitTestRootDir + expectedImageFilePath);//generate expected image
                #endif
            }