{"id":19168279,"url":"https://github.com/hilkojj/gu","last_synced_at":"2025-07-17T03:09:12.422Z","repository":{"id":44986125,"uuid":"178728364","full_name":"hilkojj/gu","owner":"hilkojj","description":"C++ OpenGL game library for Desktop \u0026 Web","archived":false,"fork":false,"pushed_at":"2025-05-21T14:24:05.000Z","size":20308,"stargazers_count":8,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-05-21T15:38:10.336Z","etag":null,"topics":["3d","cpp","linux","opengl","webassembly","webgl","windows"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hilkojj.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-03-31T18:46:51.000Z","updated_at":"2025-05-21T14:24:10.000Z","dependencies_parsed_at":"2023-02-15T13:01:23.678Z","dependency_job_id":"7b881511-4786-4ccb-97fa-17dcc7e8b483","html_url":"https://github.com/hilkojj/gu","commit_stats":null,"previous_names":["hilkojj/gu"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hilkojj/gu","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hilkojj%2Fgu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hilkojj%2Fgu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hilkojj%2Fgu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hilkojj%2Fgu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hilkojj","download_url":"https://codeload.github.com/hilkojj/gu/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hilkojj%2Fgu/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265562367,"owners_count":23788515,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["3d","cpp","linux","opengl","webassembly","webgl","windows"],"created_at":"2024-11-09T09:42:03.585Z","updated_at":"2025-07-17T03:09:12.408Z","avatar_url":"https://github.com/hilkojj.png","language":"C++","readme":"# GU:\n## Game Utilities for use with OpenGL, GLM, GLFW and Dear ImGui\n\nThis library forms the lowest layer of my C++ game projects.\nThe goal is to offer commonly used utilities without dictating the architecture of the game, except for the use of the dependencies.\n\n*Note: A lot of the code was written when I was a C++ noob, so some files still could use some refactoring.*\n\n[Dibidab](https://github.com/dibidabidab/dibidab-engine) is the ECS-based game engine that uses this utility library.\n\n### Dependencies\nMost dependencies are included using submodules in `external/`.\nRun `git submodule update --init --recursive` before configuring CMake.\n\nOther dependencies are downloaded by CMake as can be seen in `library/CMakeLists.txt`.\n\nThis repository includes a stripped down version of the [Bullet physics engine](http://bulletphysics.org/) v2 (4MB).\nIncluding it as a submodule would take \u003e600MB.\nRead `external/bullet2/readme.txt` for details on modifications.\n\n### Options\nCheck `library/CMakeLists.txt` for all options.\nThe Bullet physics engine is not compiled by default.\n\n### Features\n\nLook at the folder structure in `source/` to get an idea of what is included in this library.\n\nAn incomplete list:\n\n- **Wrappers for OpenGL functionality**:\n    - Textures\n      - TextureArrays (3d textures)\n      - CubeMaps\n      - Loading images from common formats\n      - Loading compressed images from `.DDS`, which are decompressed by the GPU itself\n    - FrameBuffers\n    - ShaderPrograms\n    - Cameras\n- **3D**:\n  - Meshes\n  - Models\n  - Animated Armatures\n  - `glTF` loader, tested in use with Blender.\n  - ~~Json Model loader~~ (can be included using the CMake options), which uses a format originally used by LibGDX and exported through this [Blender addon](https://github.com/dibidabidab/blender_UBJSON_exporter).\n- **Asset management**:\n  - File assets can be loaded using custom loaders.\n  - Assets are available for use everywhere using the `asset\u003c*your-asset-type*\u003e` type.\n  - Assets can be live-reloaded on Linux using file change detection.\n- **Aseprite**:\n  - Structs for [Aseprite](https://www.aseprite.org/) files\n  - A loader that loads [`.ase` files](https://github.com/aseprite/aseprite/blob/master/docs/ase-file-specs.md) into these structs\n  - A texture generator that uploads the sprites to OpenGL\n- **Player input**:\n  - Gamepad\n  - Keyboard\n  - Mouse\n- ~~**Audio**~~:\n  - There used to be integration with OpenAL (see commit history). The OpenAL implementation that was linked used an annoying license. In my current game project I'm using FMOD instead.\n  - Loading `.wav` and `.ogg` files.\n- More utilities for math, pathfinding, file reading, etc.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhilkojj%2Fgu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhilkojj%2Fgu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhilkojj%2Fgu/lists"}