egormkn / SDLXX

:space_invader: Modern C++ wrapper for Simple DirectMedia Layer (SDL2)
https://egormkn.github.io/sdlxx
zlib License
11 stars 3 forks source link

GUI на Nuklear #10

Open egormkn opened 4 years ago

egormkn commented 4 years ago

Для любой, даже самой примитивной игры, нужен какой-то базовый интерфейс - кнопочки, выключатели и т.п. У SDL по умолчанию нет такой функциональности, и в текущей версии кнопки реализованы мной вручную через отрисовку прямоугольников с текстом и перехват событий мыши. Но есть библиотека Nuklear, которая представляет собой минималистичный интерфейс, и вроде как может работать на чём угодно. Хотелось бы прикрутить её к нашему проекту.

Собственно, есть такие задачи: 1) Почитать документацию и запустить какой-нибудь пример на Nuklear 2) Почитать про Nuklear+, тоже попробовать собрать и запустить. Почитать код SDL-фронтенда. 3) Разобраться, что требуется Nuklear для запуска и отрисовки и написать об этом тут.

Дальше будем думать, как заставить UI Nuklear отрисовываться при помощи 2D рендерера SDL.

egormkn commented 4 years ago

Есть статьи на хабре: https://habr.com/ru/post/319106/ https://habr.com/ru/post/338106/

Есть код для рендеринга Nuklear UI с помощью SDL_Renderer: https://github.com/vurtun/nuklear/pull/494

Для сборки в CMake ставим из vcpkg: vcpkg install nuklear Далее в CMakeLists.txt:

find_path(NUKLEAR_INCLUDE_DIR NAMES nuklear.h PATH_SUFFIXES nuklear)
target_include_directories(... PRIVATE ${NUKLEAR_INCLUDE_DIR}) # Replace ... with your target