示例#1
0
        internal static Image <Rgba32> RenderTextMeshToImage(TextMesh textMesh, Size imageSize)
        {
            //TODO de-cuple this method with Windows platform

            var window = new Win32Window();

            window.Init(Point.Zero, imageSize, WindowTypes.Regular);

            var renderer = new Win32OpenGLRenderer();

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

            renderer.Clear(Color.FrameBg);
            Win32OpenGLRenderer.DrawTextMesh(renderer.shapeMaterial, textMesh,
                                             (int)window.ClientSize.Width, (int)window.ClientSize.Height);

            var imageRawBytes = renderer.GetRawBackBuffer(out var width, out var height);

            var image = Util.CreateImage(imageRawBytes, width, height, flip: true);

            renderer.ShutDown();
            window.Close();

            return(image);
        }
示例#2
0
文件: Util.cs 项目: peter-819/ImGui
        internal static void DrawTextMeshInWindow(int width, int height, TextMesh mesh)
        {
            Application.Init();

            var window = Application.PlatformContext.CreateWindow(Point.Zero, new Size(width, height),
                                                                  WindowTypes.Hidden);
            var renderer = Application.PlatformContext.CreateRenderer() as Win32OpenGLRenderer;//TEMP HACK

            Debug.Assert(renderer != null, nameof(renderer) + " != null");
            renderer.Init(window.Pointer, window.ClientSize);
            window.Show();
            while (true)
            {
                if (Keyboard.Instance.KeyDown(Key.Escape))
                {
                    break;
                }

                window.MainLoop(() =>
                {
                    Keyboard.Instance.OnFrameBegin();
                    renderer.Clear(Color.White);
                    Win32OpenGLRenderer.DrawTextMesh(mesh, width, height);
                    Keyboard.Instance.OnFrameEnd();
                    renderer.SwapBuffers();
                });
            }

            renderer.ShutDown();
            window.Close();
        }
示例#3
0
        public void DrawText()
        {
            TextPrimitive primitive = new TextPrimitive();

            primitive.Text = "Hello你好こんにちは";
            var style = GUIStyle.Default;

            BuiltinPrimitiveRenderer primitiveRenderer = new BuiltinPrimitiveRenderer();
            var textMesh = new TextMesh();

            primitiveRenderer.SetTextMesh(textMesh);
            primitiveRenderer.DrawText(primitive, new Rect(10, 10, 500, 40), style.FontFamily, style.FontSize, style.FontColor, style.FontStyle, style.FontWeight);

            //render text

            var window = new Win32Window();

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

            var renderer = new Win32OpenGLRenderer();

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

            while (true)
            {
                window.MainLoop(() =>
                {
                    renderer.Clear(Color.FrameBg);
                    Win32OpenGLRenderer.DrawTextMesh(renderer.glyphMaterial, primitiveRenderer.TextMesh,
                                                     (int)window.ClientSize.Width, (int)window.ClientSize.Height);
                    renderer.SwapBuffers();
                });
                if (Input.Keyboard.Instance.KeyDown(Key.Escape))
                {
                    break;
                }
            }
        }
 public void DrawTextMesh(TextMesh textMesh)
 {
     Win32OpenGLRenderer.DrawTextMesh(this.Renderer.glyphMaterial, textMesh,
                                      viewportWidth, viewportHeight);
 }