Installing Dear ImGui Library (OpenGL) for Android (NDK & CMake) Установка библиотеки Dear ImGui (OpenGL) для Android (NDK и CMake)

A step-by-step guide to downloading, extracting, and configuring the latest release of Dear ImGui with OpenGL ES 3.0 in your CMake projects for Android on Windows using NDK. Пошаговое руководство по скачиванию, распаковке и настройке последней версии библиотеки Dear ImGui с OpenGL ES 3.0 в проектах CMake для Android в Windows с использованием NDK.

Before proceeding, make sure you have configured your MinGW and Android NDK build environment on Windows using the following guides: Перед продолжением убедитесь, что вы настроили рабочее окружение MinGW и Android NDK в Windows, следуя соответствующим инструкциям:

Step 1: Download Source Code Шаг 1: Скачивание исходного кода

Check and download the latest release (such as v1.93.0) directly from the official Dear ImGui repository on GitHub: Проверьте и скачайте последнюю версию (например, v1.93.0) напрямую со страницы релизов Dear ImGui на GitHub:

Open Dear ImGui Releases (GitHub) Открыть релизы Dear ImGui (GitHub) Download v1.93.0 (.zip) Скачать v1.93.0 (.zip)

Step 2: Extract the Library Шаг 2: Распаковка библиотеки

Unzip the downloaded archive so that the source files are located in C:\libs\imgui-1.93.0: Распакуйте скачанный архив так, чтобы исходные файлы находились в папке C:\libs\imgui-1.93.0:

Step 3: Create Project Directory Шаг 3: Создание директории проекта

Create a workspace folder and a new directory for your ImGui Android test project: Создайте рабочую папку для проектов и новую директорию для вашего тестового Android-проекта ImGui:

Windows (Command Prompt / PowerShell)

mkdir C:\projects\imgui-opengl-android-test
cd C:\projects\imgui-opengl-android-test

Step 4: Create Source Files (main.cpp & CMakeLists.txt) Шаг 4: Создание исходных файлов (main.cpp и CMakeLists.txt)

Create the source files in your project directory using Notepad, VS Code, or Sublime Text: Создайте исходные файлы в папке проекта с помощью Блокнота, VS Code или Sublime Text:

Windows (Terminal / Notepad)

notepad main.cpp
notepad CMakeLists.txt

1. File Contents for main.cpp 1. Содержимое файла main.cpp

#include <iostream>
#include <GLES3/gl3.h>

#include "imgui.h"
#include "imgui_impl_opengl3.h"

int main(int argc, char** argv) {
    // Initialize ImGui context
    IMGUI_CHECKVERSION();
    ImGui::CreateContext();
    ImGuiIO& io = ImGui::GetIO(); (void)io;
    io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard;

    // Set virtual display size and frame delta time for headless execution verification
    io.DisplaySize = ImVec2(1280.0f, 720.0f);
    io.DeltaTime = 1.0f / 60.0f;

    // Build font atlas explicitly when renderer backend isn't creating textures
    unsigned char* pixels;
    int width, height;
    io.Fonts->GetTexDataAsRGBA32(&pixels, &width, &height);

    ImGui::StyleColorsDark();

    // Simulate an ImGui frame lifecycle
    ImGui::NewFrame();
    ImGui::Begin("OpenGL ES 3.0 Test Window");
    ImGui::Text("Hello, OpenGL ES 3.0 with Dear ImGui on Android!");
    ImGui::End();
    ImGui::Render();

    std::cout << "Dear ImGui version: " << IMGUI_VERSION << std::endl;
    std::cout << "ImGui OpenGL (GLES3) Backend configured successfully for Android!" << std::endl;

    // Cleanup ImGui context
    ImGui::DestroyContext();

    return 0;
}

2. File Contents for CMakeLists.txt 2. Содержимое файла CMakeLists.txt

cmake_minimum_required(VERSION 3.21)

if(NOT CMAKE_BUILD_TYPE)
    set(CMAKE_BUILD_TYPE "Release")
endif()

project(imgui_opengl_android_test CXX)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# -----------------------------------------------------------------------------
# Paths
# -----------------------------------------------------------------------------
set(IMGUI_DIR "C:/libs/imgui-1.93.0")

# -----------------------------------------------------------------------------
# Sources
# -----------------------------------------------------------------------------
set(IMGUI_SOURCES
    ${IMGUI_DIR}/imgui.cpp
    ${IMGUI_DIR}/imgui_draw.cpp
    ${IMGUI_DIR}/imgui_tables.cpp
    ${IMGUI_DIR}/imgui_widgets.cpp
    ${IMGUI_DIR}/backends/imgui_impl_opengl3.cpp
)

# -----------------------------------------------------------------------------
# Executable Target
# -----------------------------------------------------------------------------
add_executable(app
    main.cpp
    ${IMGUI_SOURCES}
)

# -----------------------------------------------------------------------------
# Include Directories
# -----------------------------------------------------------------------------
target_include_directories(app PRIVATE
    ${IMGUI_DIR}
    ${IMGUI_DIR}/backends
)

# -----------------------------------------------------------------------------
# Backend Selection & Definitions
# -----------------------------------------------------------------------------
target_compile_definitions(app PRIVATE
    IMGUI_IMPL_OPENGL_ES3
)

# -----------------------------------------------------------------------------
# Optimization & Symbol Stripping (Release Only)
# -----------------------------------------------------------------------------
if(CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "MinSizeRel")
    target_compile_options(app PRIVATE -Os)
    target_link_options(app PRIVATE -s)
endif()

# -----------------------------------------------------------------------------
# Platform Linking & Dependencies
# -----------------------------------------------------------------------------
target_link_libraries(app PRIVATE
    GLESv3
    log
)

Step 5: Create Build & Execution Scripts Шаг 5: Создание скриптов сборки и запуска

Create batch scripts to configure, compile, and run the binary on an Android device or emulator via ADB: Создайте пакетные bat-скрипты для конфигурации, компиляции и запуска исполняемого файла на Android-устройстве или эмуляторе через ADB:

Windows (Batch Scripts)

config-android.bat

@echo off
set NDK=H:/AndroidSDK/ndk/28.2.13676358

cmake -G "MinGW Makefiles" ^
  -DCMAKE_TOOLCHAIN_FILE=%NDK%/build/cmake/android.toolchain.cmake ^
  -DANDROID_ABI=arm64-v8a ^
  -DANDROID_PLATFORM=android-21 ^
  -DCMAKE_BUILD_TYPE=Release ^
  -S . -B dist/android

build-android.bat

@echo off
cmake --build dist/android --config Release --parallel

run-android.bat

@echo off
set ADB=H:/AndroidSDK/platform-tools/adb.exe
set DEVICE_DIR=/data/local/tmp/imgui-test

echo [*] Creating target directory on device...
%ADB% shell "mkdir -p %DEVICE_DIR%"

echo [*] Pushing executable...
%ADB% push dist/android/app %DEVICE_DIR%/

echo [*] Setting permissions and executing...
%ADB% shell "chmod +x %DEVICE_DIR%/app"
%ADB% shell "%DEVICE_DIR%/app"

Make sure an Android device or emulator is connected (verify with adb devices), then run the scripts sequentially in Command Prompt: Убедитесь, что Android-устройство или эмулятор подключены (проверьте с помощью команды adb devices), затем последовательно запустите скрипты в командной строке:

config-android.bat
build-android.bat
run-android.bat

Step 6: Expected Output Шаг 6: Ожидаемый результат

After running run-android.bat, the executable will run inside /data/local/tmp on the Android target and display the following output in your terminal: После запуска run-android.bat исполняемый файл выполнится внутри /data/local/tmp на целевом устройстве Android и выведет следующие строки в терминал:

[*] Pushing executable...
dist/android/app: 1 file pushed, 0 skipped. 75.8 MB/s (735224 bytes in 0.009s)
[*] Setting permissions and executing...
Dear ImGui version: 1.93.0
ImGui OpenGL (GLES3) Backend configured successfully for Android!

Step 7: Next Steps Шаг 7: Следующие шаги

Now that you have configured and verified Dear ImGui with OpenGL ES 3.0, you can integrate it into your SDL3 Android projects: Теперь, когда вы настроили и проверили Dear ImGui с OpenGL ES 3.0, вы можете перейти к интеграции библиотеки в свои проекты SDL3 для Android:

Integrating Dear ImGui with SDL3 for Android (OpenGL ES 3.0) Интеграция Dear ImGui с SDL3 для Android (OpenGL ES 3.0)


Support My Work Поддержать проект

If these tutorials helped you, consider buying me a coffee! Если эти туториалы вам помогли, вы можете поддержать автора.

Sberbank (Russia only) Сбербанк (только для РФ)

Sberbank SBP QR Code

Direct transfer via phone number (Russia only) Перевод по номеру телефона (только для РФ)

+7 (917) 212-29-59

USDT TRC20

USDT TRC20 QR Code

Support via Cryptocurrency Поддержка криптовалютой

TMtY1YifNf6FKvgeFmqKGQR4NStKr3csGp