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); }
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(); }
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); }