1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/zhouxs1023-imgui

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Дорогой ImGui

"Предоставь человеку состояние, и однажды он столкнется с багом, но научи его представлять состояние в двух отдельных местах, которые должны быть синхронизированы, и он будет сталкиваться с багами всю жизнь." — ryg


Статус сборки Статус статического анализа Статус тестирования

(Эта библиотека доступна под свободной и либеральной лицензией, но требует финансовой поддержки для обеспечения её дальнейшего развития и улучшения. В дополнение к поддержанию стабильности есть много желаемых функций ещё не реализованных. Если ваша компания использует Dear ImGui, пожалуйста, рассмотрите возможность обратиться.)

Компании: поддержите дальнейшее развитие и обслуживание через договоры спонсорства/поддержки на условиях счетной формы:
  Электронная почта: contact@dearimgui.com
Личные лица: поддержите дальнейшее развитие и обслуживание здесь. Также см. страницу Финансирование.| Основная идея - Использование - Как это работает - Выпуски и изменения - Демо - Начало работы и интеграция | :----------------------------------------------------------: | | Галерея - Поддержка, ЧАВО - Как помочь - Финансирование и спонсоры - Авторы - Лицензия | | Вики - Расширения - Привязки к языкам и бэкендам фреймворков - Программы, использующие Dear ImGui - Цитаты пользователей |

ПредложениеУважаемый ImGui — это графическая библиотека пользовательского интерфейса для C++, которая лишена ненужных функций. Она выводит оптимизированные вершинные буферы, которые можно отрисовать в любое время в вашем приложении с трёхмерной графической трубой. Библиотека является быстрой, переносимой, агрегатором рендера и автономной (не требует внешних зависимостей).

ImGui создан для того, чтобы обеспечивать быстрые итерации и позволять программистам создавать средства создания контента и средства визуализации/отладки (в отличие от пользовательских интерфейсов для обычного конечного пользователя). Он предпочитает простоту и продуктивность в достижении этой цели и не имеет некоторых функций, обычно присутствующих в более высоких уровнях библиотек. В частности, полная международная локализация (текст слева направо, двунаправленный текст, форматирование текста и т. д.), а также функции доступности не поддерживаются.

ImGui особенно хорошо подходит для интеграции в движках игр (для создания средств), реального времени трёхмерных приложений, полноэкраных приложений, встраиваемых приложений или любых приложений на платформах консолей, где функции операционной системы являются неконстантными.- Минимизация синхронизации состояния.

  • Минимизация хранения состояния пользовательского интерфейса со стороны пользователя.
  • Минимизация установки и обслуживания.
  • Лёгкость использования для создания динамического пользовательского интерфейса, который является отражением динамического набора данных.
  • Лёгкость использования для создания средств, управляемых кодом и данными.
  • Лёгкость использования для создания временных средств и долгоживущих, более сложных средств.
  • Лёгкость модификации и улучшения.
  • Переносимость, минимизация зависимостей, работа на целевой платформе (консоли, телефоны и т.д.).
  • Эффективное использование времени выполнения и памяти.
  • Проблемоустойчивость, используется многими крупными игроками в игровой индустрии (ссылка).### Использование

Ядро ImGui самообособлено в нескольких платформенно-независимых файлах, которые легко скомпилировать в вашем приложении/движке. Это все файлы в корневом каталоге репозитория (imgui*.cpp, imgui*.h). Не требуется специальный процесс сборки. Вы можете добавить .cpp файлы в свой существующий проект.

Бэкэнды для различных графических API и платформ рендера предоставляются в каталоге backends/, вместе с примерами приложений в каталоге examples/. Вы также можете создать свой собственный бэкэнд. В любом месте, где вы можете рисовать текстурные треугольники, вы можете рисовать ImGui. См. раздел Начало работы и интеграция этого документа для получения более подробной информации.

После того как был настроен Dear ImGui в вашем приложении, вы можете использовать его из любого места вашего цикла программы:

ImGui::Text("Привет, мир %d", 123);
if (ImGui::Button("Сохранить"))
    MySaveFunction();
ImGui::InputText("строка", buf, IM_ARRAYSIZE(buf));
ImGui::SliderFloat("число с плавающей запятой", &f, 0.0f, 1.0f);

выходящий пример кода (темная тема, шрифт SegoeUI, FreeType) выходящий пример кода (светлая тема, шрифт SegoeUI, FreeType)```cpp // Создайте окно с названием "My First Tool", с меню. ImGui::Begin("My First Tool", &my_tool_active, ImGuiWindowFlags_MenuBar); if (ImGui::BeginMenuBar()) { if (ImGui::BeginMenu("File")) { if (ImGui::MenuItem("Open...", "Ctrl+O")) { /* Perform actions / } if (ImGui::MenuItem("Save", "Ctrl+S")) { / Perform actions */ } if (ImGui::MenuItem("Close", "Ctrl+W")) { my_tool_active = false; } ImGui::EndMenu(); } ImGui::EndMenuBar(); }

// Измените цвет, хранящийся как четыре числа с плавающей запятой ImGui::ColorEdit4("Color", my_color);

// Генерируйте образцы данных и отобразите их float samples[100]; for (int n = 0; n < 100; n++) samples[n] = sinf(n * 0.2f + ImGui::GetTime() * 1.5f); ImGui::PlotLines("Samples", samples, 100);

ImGui::TextColored(ImVec4(1,1,0,1), "Важная информация");
ImGui::BeginChild("Прокручивание");
for (int n = 0; n < 50; n++)
    ImGui::Text("%04d: Некоторый текст", n);
ImGui::EndChild();
ImGui::End();

```markdown
![my_first_tool_v188](https://user-images.githubusercontent.com/8225057/191055698-690a5651-458f-4856-b5a9-e8cc95c543e2.gif)

Dear ImGui позволяет создавать **сложные инструменты** и очень кратковременные. В крайнем случае кратковременности: используя функцию редактирования и продолжения (горячей перезагрузки кода) современных компиляторов, можно добавить несколько виджетов для изменения переменных во время выполнения приложения, и удалить этот код через минуту! Dear ImGui не предназначен только для отладки значений. Его можно использовать для трассировки выполняющегося алгоритма путём отправки команд текста. Также можно использовать его вместе со своими данными рефлексии для просмотра вашего набора данных в режиме реального времени. Он может быть использован для экспонирования внутренних деталей подсистемы в вашем движке, создания логгера, инспекционного инструмента, профилировщика, отладчика, полного редактора/фреймворка для создания игр и т.д.

### Как это работает
```Парадигма IMGUI через свой API стремится минимизировать избыточное дублирование состояния, синхронизацию состояния и его хранение с точки зрения пользователя. Она менее склонна к ошибкам (меньше кода и меньше багов), чем традиционные удерживаемые режимы интерфейсов, и позволяет создавать динамические пользовательские интерфейсы. Подробнее о парадигме IMGUI можно узнать в разделе [Описание IMGUI парадигмы](https://github.com/ocornut/imgui/wiki#about-the-imgui-paradigm) Вики.

Dear ImGui выводит вершинные буферы и списки команд, которые вы можете легко отрисовать в вашем приложении. Количество вызовов рендера и изменения состояния, необходимых для отображения этих данных, довольно мало. Поскольку Dear ImGui не знает или не меняет графическое состояние напрямую, вы можете вызывать его функции в любом месте вашего кода (например, посередине выполняющегося алгоритма или посередине своего процесса рендера). Для получения инструкций по интеграции Dear ImGui с вашим существующим кодом обратитесь к примерам приложений в папке examples/._Общее заблуждение состоит в том, что неправильно понимают немедленный режим GUI как немедленный режим рендера, который обычно подразумевает использование большого количества неэффективных вызовов рендера и изменения состояния, когда вызываются функции GUI. Это НЕ то, что делает Dear ImGui. Dear ImGui выводит вершинные буферы и небольшой список вызовов рендера. Он никогда не воздействует на вашу видеокарту напрямую. Вызовы рендера оптимальны, и вы можете рендерить их позже, в вашем приложении или даже удаленно._### Версии и Журнал Изменений

Смотрите страницу [Версий](https://github.com/ocornut/imgui/releases) для подробного журнала изменений.
Чтение журнала изменений — хороший способ следить за тем, какие возможности предлагает вам Dear ImGui, и может дать идеи для некоторых функций, которые вы игнорировали до сих пор!

### Демо

Вызов функции `ImGui::ShowDemoWindow()` создаёт демонстрационное окно, которое показывает различные функции и примеры. Код всегда доступен для справки в файле `imgui_demo.cpp`. [Вот как выглядит демо](https://raw.githubusercontent.com/wiki/ocornut/imgui/web/v167/v167-misc.png).

Вы должны иметь возможность сборки примеров из исходников. Если нет, сообщите нам! Если вы хотите быстро взглянуть на некоторые возможности Dear ImGui, вы можете скачать Windows двоичные файлы демонстрационного приложения здесь:
- [imgui-demo-binaries-20240105.zip](https://www.dearimgui.com/binaries/imgui-demo-binaries-20240105.zip) (Windows, 1.90.1 WIP, собрано 2024/01/05, master) или [более старые двоичные файлы](https://www.dearimgui.com/binaries). Примерные приложения не учитывают плотность пикселей (DPI), поэтому ожидайте некоторого размытия на экранах с разрешением 4К. Для учета DPI в вашем приложении вы можете загружать/перезагружать шрифт с другим масштабом и масштабировать стиль с помощью `style.ScaleAllSizes()` (см. [Часто задаваемые вопросы (FAQ)](https://www.dearimgui.com/faq)).

### Начало работы и интеграция

Подробности см. в руководстве [Начало работы](https://github.com/ocornut/imgui/wiki/Getting-Started).На большинстве платформ и при использовании C++ **вы должны иметь возможность использовать комбинацию бэкендов [imgui_impl_xxxx](https://github.com/ocornut/imgui/tree/master/backends) без модификаций** (например, `imgui_impl_win32.cpp` + `imgui_impl_dx11.cpp`). Если ваш движок поддерживает несколько платформ, рассмотрите использование нескольких файлов imgui_impl_xxxx вместо переписывания их: это будет меньше работы для вас, и вы сможете запустить Dear ImGui сразу. Вы можете _позже_ решить переписать собственный бэкенд, используя свои специфичные функции движка, если вам этого захочется.

Интеграция Dear ImGui в вашем собственном движке заключается в следующих шагах: 1) соединение входных данных мыши/клавиатуры/джойстика; 2) загрузка текстур на GPU/рендеринговый движок; 3) предоставление функции рендера, которая может привязывать текстуры и рендерить текстурированные треугольники, что фактически делает каждый бэкенд. В папке [examples/](https://github.com/ocornut/imgui/tree/master/examples) находятся примеры приложений, делающие именно это: создание окна и использование бэкендов. Если вы последуете руководству [Начало работы](https://github.com/ocornut/imgui/wiki/Getting-Started), теоретически вам потребуется менее часа для интеграции Dear ImGui. **Убедитесь, что вы потратили время на чтение [Часто задаваемых вопросов (FAQ)](https://www.dearimgui.com/faq), комментариев и примеров приложений!**Официально поддерживаемые бэкенды/биндинги (в репозитории):
- Рендереры: DirectX9, DirectX10, DirectX11, DirectX12, Metal, OpenGL/ES/ES2, SDL_Renderer, Vulkan, WebGPU.
- Платформы: GLFW, SDL2/SDL3, Win32, GLUT, macOS, Android.
- Фреймворки: Allegro5, Emscripten.[Страница вики с привязками к сторонним бэкендам](https://github.com/ocornut/imgui/wiki/Bindings):
- Языки: C, C#, Beef, ChaiScript, CovScript, Crystal, D, Go, Haskell, Haxe/hxcpp, Java, JavaScript, Julia, Kotlin, Lobster, Lua, Nim, Odin, Pascal, PureBasic, Python, ReaScript, Ruby, Rust, Swift, Zig...
- Фреймворки: AGS/Adventure Game Studio, Amethyst, Blender, bsf, Cinder, Cocos2d-x, Defold, Diligent Engine, Ebiten, Flexium, GML/Game Maker Studio, GLEQ, Godot, GTK3, Irrlicht Engine, JUCE, LÖVE+LUA, Mach Engine, Magnum, Marmalade, MonoGame, NanoRT, nCine, Nim Game Library, Nintendo 3DS/Switch/WiiU (homebrew), Ogre, OpenFrameworks, OSG/OpenSceneGraph, Orx, Photoshop, px_render, Qt/QtDirect3D, raylib, SFML, Sokol, Unity, Unreal Engine 4/5, UWP, VTK, VulkanHPP, VulkanSceneGraph, Win32 GDI, wxWidgets.
- Многие привязки генерируются автоматически (старым добрым [cimgui](https://github.com/cimgui/cimgui) или новыми/экспериментальными [dear_bindings](https://github.com/dearimgui/dear_bindings)), вы можете использовать их метаданные для генерации привязок для других языков.[Полезные расширения/виджеты](https://github.com/ocornut/imgui/wiki/Useful-Extensions) страница вики:
- Автоматизация/тестирование, текстовые редакторы, графический редактор узлов, временные редакторы, построение графиков, программные рендереры, удалённый доступ к сети, редактор памяти, гизмо и т.д. Отмечены и хорошо поддерживаемые расширения включают [ImPlot](https://github.com/epezent/implot) и [Dear ImGui Test Engine](https://github.com/ocornut/imgui_test_engine).Дополнительно см. [Wiki](https://github.com/ocornut/imgui/wiki) для получения более подробной информации и идей.

### Галерея

Примеры проектов с использованием Dear ImGui: [Tracy](https://github.com/wolfpld/tracy) (профилировщик), [ImHex](https://github.com/WerWolv/ImHex) (шестнадцатеричный редактор данных), [RemedyBG](https://remedybg.itch.io/remedybg) (отладчик) и [сотни других](https://github.com/ocornut/imgui/wiki/Software-using-Dear-ImGui).

Для просмотра пользовательских скриншотов проектов использующих Dear ImGui, проверьте раздел [Галерея](https://github.com/ocornut/imgui/issues?q=label%3Agallery)! 

Для получения списка сторонних виджетов и расширений, проверьте страницу [Полезные расширения/виджеты](https://github.com/ocornut/imgui/wiki/Useful-Extensions) вики.

|  |  |
|--|--|
| Настраиваемый движок [erhe](https://github.com/tksuoran/erhe) (ветка docking)<br>[![erhe](https://user-images.githubusercontent.com/8225057/190203358-6988b846-0686-480e-8663-1311fbd18abd.jpg)](https://user-images.githubusercontent.com/994606/147875067-a848991e-2ad2-4fd3-bf71-4aeb8a547bcf.png) | Настраиваемый движок для [Wonder Boy: The Dragon's Trap](http://www.TheDragonsTrap.com) (2017)<br>[![the dragon's trap](https://user-images.githubusercontent.com/8225057/190203379-57fcb80e-4aec-4fec-959e-17ddd3cd71e5.jpg)](https://cloud.githubusercontent.com/assets/8225057/20628927/33e14cac-b329-11e6-80f6-9524e93b048a.png) |
| Настраиваемый движок (без названия)<br>[![редактор белый](https://user-images.githubusercontent.com/8225057/190203393-c5ac9f22-b900-4d1e-bfeb-6027c63e3d92.jpg)](https://raw.githubusercontent.com/wiki/ocornut/imgui/web/v160/editor_white.png) | Tracy Profiler ([github](https://github.com/wolfpld/tracy))<br>[![tracy профилировщик](https://user-images.githubusercontent.com/8225057/190203401-7b595f6e-607c-44d3-97ea-4c2673244dfb.jpg)](https://raw.githubusercontent.com/wiki/ocornut/imgui/web/v176/tracy_profiler.png) |

### Поддержка, Часто задаваемые вопросы (ЧЗВ)См.: [Часто задаваемые вопросы (ЧЗВ)](https://github.com/ocornut/imgui/blob/master/docs/FAQ.md), где отвечаются на общие вопросы.

См.: [Начало работы](https://github.com/ocornut/imgui/wiki/Getting-Started) и [Вики](https://github.com/ocornut/imgui/wiki) с множеством ссылок, справочных материалов и статей.

См.: [Статьи о парадигме IMGUI](https://github.com/ocornut/imgui/wiki#about-the-imgui-paradigm) для чтения/обучения парадигме Immediate Mode GUI.

См.: [Предстоящие изменения](https://github.com/ocornut/imgui/wiki/Upcoming-Changes).

См.: [Dear ImGui Test Engine + набор тестов](https://github.com/ocornut/imgui_test_engine) для автоматизации и тестирования.

Для целей поисковых систем здесь приведена ссылка на [Обзор Вики](https://github-wiki-see.page/m/ocornut/imgui/wiki) (не для людей, [почему](https://github-wiki-see.page/)).

Начинаете работу? Для новых пользователей, имеющих проблемы с компиляцией/линковкой/запуском или проблемами с загрузкой шрифтов, пожалуйста, используйте [GitHub Discussions](https://github.com/ocornut/imgui/discussions). Для ЛЮБЫХ других вопросов, сообщений об ошибках, запросов, обратной связи, пожалуйста, отправьте сообщение на [GitHub Issues](https://github.com/ocornut/imgui/issues). Пожалуйста, внимательно прочтите и заполните шаблон нового сообщения.

Личная поддержка доступна для платящих корпоративных клиентов (Электронная почта: _contact @ dearimgui dot com_).

**Какую версию мне выбрать?**Мы иногда выпускаем [версии](https://github.com/ocornut/imgui/releases) (с приятными заметками), но в целом безопаснее и рекомендовано синхронизировать с последней `master` или `docking` веткой. Библиотека довольно стабильна, регрессии обычно быстро исправляются при выявленных ошибках. Пользователи со сложными требованиями могут использовать ветку `docking` с [многими окнами](https://github.com/ocornut/imgui/wiki/Multi-Viewports) и [прикреплением](https://github.com/ocornut/imgui/wiki/Docking) функциями. Эта ветка регулярно синхронизируется с основной веткой.**Кто использует Dear ImGui?**

См. страницы [Цитаты](https://github.com/ocornut/imgui/wiki/Quotes), [Финансирование и спонсоры](https://github.com/ocornut/imgui/wiki/Funding), и [Программы использующие Dear ImGui](https://github.com/ocornut/imgui/wiki/Software-using-dear-imgui) Вики для представления того, кто использует Dear ImGui. Пожалуйста, добавьте вашу игру/программу, если это возможно! Также см. [Галерею тем](https://github.com//issues?q=label%3Agallery)! Как помочь

-----------

**Как мне можно помочь?**

- Увидеть [GitHub Forum/Issues](https://github.com/ocornut/imgui/issues).
- Вы можете помочь с разработкой и отправить запросы на вливание! Пожалуйста, понимайте, что отправляя запрос на вливание (PR), вы также просите поддерживать ваш код и взять его под постоянное обслуживание. PR должны быть созданы как в интересах конечных пользователей, так и чтобы облегчить понимание и принятие этого кода со стороны поддерживаемого лица.
- Посмотреть [Потребность в помощи](https://github.com/ocornut/imgui/wiki/Help-Wanted) на [Wiki](https://github.com/ocornut/imgui/wiki/) за некоторыми идеями.
- Быть [Поддерживающим финансирование](https://github.com/ocornut/imgui/wiki/Funding)! Дать финансовую поддержку этому проекту через спонсорство по счету или покупкой лицензии для [Dear ImGui Test Engine](https://github.com/ocornut/imgui_test_engine) (пожалуйста, свяжитесь: omar@dearimgui.com).

Спонсоры
--------Непрерывная разработка Dear ImGui финансируется пользователями и частными спонсорами.
<BR>Для подробностей обратиться к **[детальному списку текущих и прошлых поддерживающих финансирование и спонсоров Dear ImGui](https://github.com/ocornut/imgui/wiki/Funding)**.
<BR>С ноября 2014 года по декабрь 2019 года непрерывная разработка также была финансирована пользователями через Patreon и индивидуальные пожертвования.**СПАСИБО всем прошлым и настоящим спонсорам за помощь в поддержании этого проекта живым и развивающимся!**

Dear ImGui использует программное обеспечение и услуги, предоставляемые бесплатно для открытых проектов:
- [PVS-Studio](https://www.viva64.com/en/b/0570/) для статического анализа.
- [GitHub Actions](https://github.com/features/actions) для систем непрерывной интеграции.
- [OpenCppCoverage](https://github.com/OpenCppCoverage/OpenCppCoverage) для анализа покрытия кода.

Кредиты
-------
Разработано [Omar Cornut](https://www.miracleworld.net) и каждым прямым или косвенным [вкладчиком](https://github.com/ocornut/imgui/graphs/contributors) на GitHub. Начальная версия этой библиотеки была создана с поддержкой [Media Molecule](https://www.mediamolecule.com) и использовалась внутренне на игре [Tearaway](https://tearaway.mediamolecule.com) (PS Vita).

Периодически вносящие вклад включают Rokas Kupstys [@rokups](https://github.com/rokups) (2020–2022): значительная часть работы над автоматизацией системы и регрессионными тестами теперь доступна в [Dear ImGui Test Engine](https://github.com/ocornut/imgui_test_engine). Соглашения по обслуживанию и ремонту, счета на спонсорство и другие транзакции B2B хранятся и обрабатываются через [Disco Hello](https://www.discohello.com).Омар: "Я впервые узнал о парадигме IMGUI в [Q-Games](https://www.q-games.com), где Атман Бинсток внёс свою простую реализацию в кодовой базе, которую я некоторое время улучшал и анализировал. Оказалось, что Атман был непосредственно знаком с концепцией благодаря работе с Кэси. Когда я перешёл в Media Molecule, я перезаписал новую библиотеку, пытаясь преодолеть недостатки и ограничения первой библиотеки, с которой работал. Она стала этой библиотекой, и с тех пор я потратил немало времени на её итерации и улучшение."Интегрирован шрифт [ProggyClean.ttf](https://www.proggyfonts.net) от Триссона Граммера (лицензия MIT).
<br>Интегрированы [stb_textedit.h, stb_truetype.h, stb_rect_pack.h](https://github.com/nothings/stb/) от Саймона Бэрретта (общественное достояние).

Вдохновение, обратная связь и тестирование ранних версий: Кэси Муратори, Атман Бинсток, Миикко Мононен, Эммануэль Брини, Стефан Камода, Антон Михайлов, Мэтт Уильямс. Также благодарность всем, кто публиковал отзывы, вопросы и исправления на GitHub.

Лицензия
--------
Проект ImGui лицензирован под лицензией MIT, подробнее см. [LICENSE.txt](https://github.com/ocornut/imgui/blob/master/LICENSE.txt).

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Уважаемый ImGui: облегчённый графический пользовательский интерфейс немедленного режима для C++ с минимальными зависимостями. Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/zhouxs1023-imgui.git
git@api.gitlife.ru:oschina-mirror/zhouxs1023-imgui.git
oschina-mirror
zhouxs1023-imgui
zhouxs1023-imgui
master