{"id":26715492,"url":"https://github.com/avitase/omelet","last_synced_at":"2026-05-01T01:31:33.425Z","repository":{"id":284587205,"uuid":"955415526","full_name":"avitase/omelet","owner":"avitase","description":"A modern C++ template for creating SDL3/OpenGL applications","archived":false,"fork":false,"pushed_at":"2025-10-15T18:45:22.000Z","size":331,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-16T18:55:06.110Z","etag":null,"topics":["cmake","cpp","opengl","sdl3","template"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/avitase.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-03-26T15:49:25.000Z","updated_at":"2025-10-15T18:45:25.000Z","dependencies_parsed_at":null,"dependency_job_id":"f7b8f6cc-22a2-452b-a78e-6e6fe58c6105","html_url":"https://github.com/avitase/omelet","commit_stats":null,"previous_names":["avitase/omelet"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/avitase/omelet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avitase%2Fomelet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avitase%2Fomelet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avitase%2Fomelet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avitase%2Fomelet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/avitase","download_url":"https://codeload.github.com/avitase/omelet/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avitase%2Fomelet/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32482460,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"ssl_error","status_checked_at":"2026-04-30T13:12:06.837Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["cmake","cpp","opengl","sdl3","template"],"created_at":"2025-03-27T14:25:20.459Z","updated_at":"2026-05-01T01:31:33.408Z","avatar_url":"https://github.com/avitase.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Omlete 🍳\n\nThis is a highly opinionated [CMake][5] template using *contemporary* C++ to wrap \"modern\" OpenGL, [SDL3][1], [Dear ImGui][2], [glbindings][3], and [GLM][4].\n\n## Why the name *Omelet*?\n\nSurely it must be some clever acronym, right?\nWell, the **O** and **l** are a nod to **OpenGL**, one of the **e** obviously is Euler's number, and the **m**... well, maybe _math_? Or _matrix_? Or _mystery_?\nTruth is, by the time GitHub prompted me for a project name, I was just hungry.\nAn omelet sounded good, and here we are.\n\n## Template or Library?\n\nConsider this repository as a template that helps you creating a canonical *Hello World* in the context of OpenGL programming: a colorful rotating triangle!\n\n![A colorful rotation triangle](https://github.com/avitase/omelet/blob/main/screenshot.png?raw=true)\n\nIn contrast to a library or a full-fledged game engine, this template does note even try to hide OpenGL details from you but instead provides you with a *good* (this is the part that is highly opinionated) starting point with convenient helper functions that wraps, for instance, the annoying VAO/VBO fiddling.\nHowever, none of the files under [`omlete/`](omlete/) should be considered out of bounds: Open them, read them, change them! (Maybe except for [`omelet/source/glsl_program.cpp`](omelet/source/glsl_program.cpp); here be dragons🐉)\n\n## How to use it?\n\nCheck out the repository **including its various submodules** and build it with [CMake][5].\nA layman's approach (on Linux🐧) is to type:\n\n```bash\ngit clone --recurse-submodules https://github.com/avitase/omelet\nmkdir -p omelet/build \u0026\u0026 cd omelet/build/\ncmake .. \u0026\u0026 make -j\n```\n\nIf you have installed OpenGL on your system, this will build [SDL3][1], [Dear ImGui][2], [glbindings][3], and [GLM][4] and finally compile the [template in omelet/](omelet/). (If not, it will fail spectacularly💥)\n\nCompiling the dependencies does take some time but will eventually create an executable under `build/install/bin`.\nRun it, it's safe!✋\n\n```\n./install/bin/omelete  # in omelet/build/\n```\n\nYou should see a spinning triangle and a [Dear ImGui window][2] with the position of your cursor and an FPS counter. \n\n## How to use it properly?\n\nThis template will give you a CMake Superbuild that builds [SDL3][1], [Dear ImGui][2], [glbindings][3], and [GLM][4] as dependencies and the actual SDL3/OpenGL template.\nTypically, building the Superbuild only has to be done once, you can then navigate to [`omelete/`](omelet/) (the subdirectory) and start fooling around here.\n\nThe subproject [`omelet/`](omelet/) expects to find its dependencies under `build/install`.\nThis happens automatically if you use our [CMakeUserPresets.json.EXAMPLE][6] (click on the link to learn more about what this is), e.g., by copying it: \n\n```bash\n# project root (not omelet/omelet!)\ncp CMakeUserPresets.json.EXAMPLE CMakeUserPresets.json\n```\n\nThis will make a new preset `release` available that you can use to build the Superbuild:\n\n```bash\ncmake --preset=release\ncmake --build --preset=release\n```\n\nAs before, this should install everything under `build/install` and you can now navigate to the subproject [`omelet/`](omelet/).\nHere, you'll find again a `CMakeUserPresets.json.EXAMPLE` that sets `CMAKE_PREFIX_PATH` for you and exposes two presets `dev` and `dev-clang-tidy`.\nFeel free to change these presets to your own needs and then run, e.g.,\n\n```bash\n# run this in omelet/omelet\ncmake --preset=dev\ncmake --build --preset=dev\n```\n\n## Next steps\n\nEverything you find under [`omelet/`](omelet) is nothing but a template, and you might have to change all files eventually.\nHowever, consider starting your journey in [`omelet/source/triangle.cpp`](omelet/source/triangle.cpp) and [`omelet/source/world.cpp`](omelet/source/world.cpp), and then gradually work yourself through the includes, when needed.\n\nWhen you feel lost, have a look into [`omelet/source/main.cpp`](omelet/source/main.cpp) where we define\n`int main(int, char**)` and start the life of *the window*.\n\n## Seeing link-time errors?\n\nThe super build script is not bullet-proof and assumes that all your dependencies that are build during the process are linked statically.\nIf this is not possible, one has to adopt the `rpath`, e.g., by adding the following the build recipe:\n\n```\nExternalProject_Add(\n    omelet\n    [...]\n    CMAKE_ARGS\n        [...]\n        -DCMAKE_INSTALL_RPATH:STRING=\u003cINSTALL_DIR\u003e/lib;\u003cINSTALL_DIR\u003e/lib64\n        -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON\n```\n\n[1]: https://libsdl.org/\n\n[2]: https://github.com/ocornut/imgui\n\n[3]: https://github.com/cginternals/glbinding\n\n[4]: https://github.com/g-truc/glm\n\n[5]: https://cmake.org/\n\n[6]: https://cmake.org/cmake/help/latest/manual/cmake-presets.7.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Favitase%2Fomelet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Favitase%2Fomelet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Favitase%2Fomelet/lists"}