public void ImGuiSetup() { ImGuiIOPtr io = ImGui.GetIO(); io.KeyMap[(int)ImGuiKey.Tab] = (int)ConsoleKey.Tab; io.KeyMap[(int)ImGuiKey.LeftArrow] = (int)ConsoleKey.LeftArrow; io.KeyMap[(int)ImGuiKey.RightArrow] = (int)ConsoleKey.RightArrow; io.KeyMap[(int)ImGuiKey.UpArrow] = (int)ConsoleKey.UpArrow; io.KeyMap[(int)ImGuiKey.DownArrow] = (int)ConsoleKey.DownArrow; io.KeyMap[(int)ImGuiKey.PageUp] = (int)ConsoleKey.PageUp; io.KeyMap[(int)ImGuiKey.PageDown] = (int)ConsoleKey.PageDown; io.KeyMap[(int)ImGuiKey.Home] = (int)ConsoleKey.Home; io.KeyMap[(int)ImGuiKey.End] = (int)ConsoleKey.End; io.KeyMap[(int)ImGuiKey.Delete] = (int)ConsoleKey.Delete; io.KeyMap[(int)ImGuiKey.Backspace] = (int)ConsoleKey.Backspace; io.KeyMap[(int)ImGuiKey.Enter] = (int)ConsoleKey.Enter; io.KeyMap[(int)ImGuiKey.Escape] = (int)ConsoleKey.Escape; io.KeyMap[(int)ImGuiKey.A] = (int)ConsoleKey.A; io.KeyMap[(int)ImGuiKey.C] = (int)ConsoleKey.C; io.KeyMap[(int)ImGuiKey.V] = (int)ConsoleKey.V; io.KeyMap[(int)ImGuiKey.X] = (int)ConsoleKey.X; io.KeyMap[(int)ImGuiKey.Y] = (int)ConsoleKey.Y; io.KeyMap[(int)ImGuiKey.Z] = (int)ConsoleKey.Z; io.DisplaySize = new Vector2(Game.Renderer.Resolution.Width, Game.Renderer.Resolution.Height); ImFontPtr ret; ret = io.Fonts.AddFontDefault(); IntPtr pixels; int width; int height; int bytesPerPixel; io.Fonts.GetTexDataAsRGBA32(out pixels, out width, out height, out bytesPerPixel); // Store our identifier var sheetBuilder = new SheetBuilder(SheetType.Indexed, width, height); var byteArray = new byte[width * height * bytesPerPixel]; Marshal.Copy(pixels, byteArray, 0, width * height * bytesPerPixel); sp = sheetBuilder.AddRGBA(byteArray, new Size(width, height)); // sp.Sheet.AsPng().Save("imguifont.png"); io.Fonts.SetTexID(fontAtlasID); // текстура для шрифта будет уже второй, так как перед этим была установлена текстура палитры в Renderer.cs //Game.Renderer.ImguiSpriteRenderer.ns = 0; imguifonttextureLocation = Game.Renderer.ImguiSpriteRenderer.SetRenderStateForSprite(sp); // записываем sheet от нашего спрайта в шейдерную коллекцию sheets, чтобы спрайт ушел в первый аргумент шейдера //Game.Renderer.ImguiSpriteRenderer.sheets[1] = Game.worldRenderer.World.Map.Rules.Sequences.SpriteCache.SheetBuilder.sheets[0]; //Game.Renderer.ImguiSpriteRenderer.IncrementNumSheets(); // Game.Renderer.ImguiSpriteRenderer.sheets[1] = Game.Renderer.SpriteRenderer.sheets[1]; }