๐Ÿ“ฆ RobLoach / raylib-nuklear

Nuklear immediate mode GUI for raylib

โ˜… 221 stars โ‘‚ 24 forks ๐Ÿ‘ 221 watching โš–๏ธ zlib License
nuklearraylib
๐Ÿ“ฅ Clone https://github.com/RobLoach/raylib-nuklear.git
HTTPS git clone https://github.com/RobLoach/raylib-nuklear.git
SSH git clone git@github.com:RobLoach/raylib-nuklear.git
CLI gh repo clone RobLoach/raylib-nuklear
Rob Loach Rob Loach Update nuklear d2bd2b7 10 months ago ๐Ÿ“ History
๐Ÿ“‚ master View all commits โ†’
๐Ÿ“ examples
๐Ÿ“ include
๐Ÿ“ test
๐Ÿ“ vendor
๐Ÿ“„ .editorconfig
๐Ÿ“„ .gitignore
๐Ÿ“„ .gitmodules
๐Ÿ“„ CMakeLists.txt
๐Ÿ“„ LICENSE
๐Ÿ“„ README.md
๐Ÿ“„ README.md

raylib-nuklear

Use the Nuklear immediate mode cross-platform GUI library in raylib.

raylib-nuklear-example Screenshot

Usage

  • Since this is a header-only library, you must first define RAYLIB_NUKLEAR_IMPLEMENTATION in one of your .c files...
`` c #define RAYLIB_NUKLEAR_IMPLEMENTATION %%CODEBLOCK0%% c #include "path/to/raylib-nuklear.h" %%CODEBLOCK1%% c struct nk_context *ctx = InitNuklear(10); %%CODEBLOCK2%% c #define RAYLIB_NUKLEAR_IMPLEMENTATION #include "raylib-nuklear.h" int main() { InitWindow(640, 480, "raylib-nuklear example"); // Create the Nuklear Context int fontSize = 10; struct nk_context *ctx = InitNuklear(fontSize); while (!WindowShouldClose()) { // Update the Nuklear context, along with input UpdateNuklear(ctx); // Nuklear GUI Code // https://github.com/Immediate-Mode-UI/Nuklear/wiki/Window if (nk_begin(ctx, "Nuklear", nk_rect(100, 100, 220, 220), NK_WINDOW_BORDER|NK_WINDOW_MOVABLE|NK_WINDOW_CLOSABLE)) { nk_layout_row_static(ctx, 50, 150, 1); if (nk_button_label(ctx, "Button")) { // Button was clicked! } } nk_end(ctx); // Render BeginDrawing(); ClearBackground(RAYWHITE); // Render the Nuklear GUI DrawNuklear(ctx); EndDrawing(); } // De-initialize the Nuklear GUI UnloadNuklear(ctx); CloseWindow(); return 0; } %%CODEBLOCK3%% c struct nk_context* InitNuklear(int fontSize); // Initialize the Nuklear GUI context using raylib's font struct nk_context* InitNuklearEx(Font font, float fontSize); // Initialize the Nuklear GUI context, with a custom font Font LoadFontFromNuklear(int fontSize); // Loads the default Nuklear font void UpdateNuklear(struct nk_context * ctx); // Update the input state and internal components for Nuklear void UpdateNuklearEx(struct nk_context * ctx, float deltaTime); // Update the input state and internal components for Nuklear, with a custom frame time void DrawNuklear(struct nk_context * ctx); // Render the Nuklear GUI on the screen void UnloadNuklear(struct nk_context * ctx); // Deinitialize the Nuklear context struct nk_color ColorToNuklear(Color color); // Convert a raylib Color to a Nuklear color object struct nk_colorf ColorToNuklearF(Color color); // Convert a raylib Color to a Nuklear floating color struct Color ColorFromNuklear(struct nk_color color); // Convert a Nuklear color to a raylib Color struct Color ColorFromNuklearF(struct nk_colorf color); // Convert a Nuklear floating color to a raylib Color struct Rectangle RectangleFromNuklear(struct nk_context * ctx, struct nk_rect rect); // Convert a Nuklear rectangle to a raylib Rectangle struct nk_rect RectangleToNuklear(struct nk_context * ctx, Rectangle rect); // Convert a raylib Rectangle to a Nuklear Rectangle struct nk_image TextureToNuklear(Texture tex); // Convert a raylib Texture to A Nuklear image struct Texture TextureFromNuklear(struct nk_image img); // Convert a Nuklear image to a raylib Texture struct nk_image LoadNuklearImage(const char* path); // Load a Nuklear image void UnloadNuklearImage(struct nk_image img); // Unload a Nuklear image. And free its data void CleanupNuklearImage(struct nk_image img); // Frees the data stored by the Nuklear image void SetNuklearScaling(struct nk_context * ctx, float scaling); // Sets the scaling for the given Nuklear context float GetNuklearScaling(struct nk_context * ctx); // Retrieves the scaling of the given Nuklear context %%CODEBLOCK4%% git submodule update --init mkdir build cd build cmake .. make ./example/raylib-nuklear-example make test ``

License

raylib-nuklear is licensed under an unmodified zlib/libpng license, which is an OSI-certified, BSD-like license that allows static linking with closed source software. Check LICENSE for further details.