{"id":48199835,"url":"https://github.com/michaeleggers/vkal","last_synced_at":"2026-04-04T18:19:35.215Z","repository":{"id":38534106,"uuid":"293630344","full_name":"michaeleggers/vkal","owner":"michaeleggers","description":"C library that helps setting up a Vulkan application.","archived":false,"fork":false,"pushed_at":"2024-07-02T09:12:47.000Z","size":62642,"stargazers_count":4,"open_issues_count":8,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-19T20:46:56.360Z","etag":null,"topics":["computergraphics","vulkan","vulkan-api"],"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/michaeleggers.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}},"created_at":"2020-09-07T20:53:47.000Z","updated_at":"2025-07-25T07:43:38.000Z","dependencies_parsed_at":"2024-06-12T19:27:21.844Z","dependency_job_id":null,"html_url":"https://github.com/michaeleggers/vkal","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/michaeleggers/vkal","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaeleggers%2Fvkal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaeleggers%2Fvkal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaeleggers%2Fvkal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaeleggers%2Fvkal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/michaeleggers","download_url":"https://codeload.github.com/michaeleggers/vkal/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaeleggers%2Fvkal/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31408041,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T10:20:44.708Z","status":"ssl_error","status_checked_at":"2026-04-04T10:20:06.846Z","response_time":60,"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":["computergraphics","vulkan","vulkan-api"],"created_at":"2026-04-04T18:19:34.757Z","updated_at":"2026-04-04T18:19:35.194Z","avatar_url":"https://github.com/michaeleggers.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# VKAL\n\nThe Vulkan Abstraction Layer (short: VKAL) is being created in order to help setting up a Vulkan based\nrenderer. VKAL is still in development and the API is not final. It is written in C and compiles with\nMSVC, CLANG and GCC.\n\n## Operating Systems supported: \n- **Windows 10/11**\n- **Ubuntu LTS 20.04. It _should_ work on other Linux distributions as well, but this is the one we tested it on.**\n\nI got **MacOS** to work but is not maintained and not a priority at this point.\n\n## The reason for VKAL\n\nDespite its name, VKAL does not completely abstract away the Vulkan API. It rather is a set of functions that wrap\nmany Vulkan-calls in order to make the developer's life easier. It does not prevent the user\nto mix in Vulkan calls directly. In fact, VKAL expects the user to do this.\n\nVKAL is used as part of the template program at the [Munich University of Applied Sciences](https://www.cs.hm.edu/en/home/index.en.html) for the Computer Graphics course.\n\n## Prerequisites\n\nIn order to initialize VKAL, the OS-specific Window-Handle is needed. You can do this via:\n- [GLFW3](https://www.glfw.org/)\n- [SDL2](https://libsdl.org)\n\nOn windows you can also use [plain WIN32 to get the window](https://docs.microsoft.com/en-us/windows/win32/learnwin32/creating-a-window). VKAL can use the Window Handle to setup\neverything. In that case you do not depend on any third-party library apart from the implementation of the C standard library that comes with your operating system.\n\n- [LunarG Vulkan SDK](https://vulkan.lunarg.com/) The SDK is needed! VKAL was tested with version 1.3.216.0\n- [CMake](https://cmake.org/download/) In order to build the examples easily or to integrate VKAL easily into your current CMake project CMake version 3.24 is needed.\n\n# Using VKAL\nClone this repo with:\n```\ngit clone --recurse-submodules git@github.com:michaeleggers/vkal.git\n```\n\nIf you already cloned, but forgot the recursive part, no worries. Just init the submodules afterwards with:\n```\ngit submodule update --init --recursive\n```\n\n## CMake\n\nIn the repo's main folder make a subdirectory called ```build``` and ```cd``` into it.\n### Build using **GLFW**\n```\ncmake -G \"\u003cyour target here\u003e\" -DWINDOWING=VKAL_GFLW ..\n```\n### Build using **SDL2** (currently not working on MacOS)\n```\ncmake -G \"\u003cyour target here\u003e\" -DWINDOWING=VKAL_SDL ..\n```\n### Build using **WIN32** (only on Windows)\n```\ncmake -G \"\u003cyour target here\u003e\" -DWINDOWING=VKAL_WIN32 ..\n```\n\n## Without CMake\n\nJust drop in ```vkal.h``` and ```vkal.h``` into your project and set a compiler define depending on what backend to use. The following are available at the moment:\n```\nfor GLFW:   VKAL_GLFW\nfor SDL2:   VKAL_SDL \nfor WIN32:  VKAL_WIN32\n```\nAlso, of course, you have to link against Vulkan loader.\n\n# Examples\n\nYou have to tell CMake if you want to generate project files for the examples:\n```\n-DBUILD_EXAMPLES=ON\n```\n\nfor example:\n```\ncmake -G \"Visual Studio 17 2022\" -DWINDOWING=VKAL_GLFW -DBUILD_EXAMPLES=ON ..\n```\nwhich will generate Visual Studio 2022 project files and a solution with GLFW as a backend and with the examples available for GLFW.\n\n\nSome of the examples use some further libraries from other authors, specifically:\n\n* [stb_image](https://github.com/nothings/stb) for loading image-data (PNG, JPG, ...).\n* [tinyobjloader-c](https://github.com/syoyo/tinyobjloader-c) for loading OBJ model files.\n* [Dear ImGUI](https://github.com/ocornut/imgui) probably the best (c++)library out there to build user interfaces.\n\nThanks to the authors of those libs, creating the examples was much easier. Thank you!\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmichaeleggers%2Fvkal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmichaeleggers%2Fvkal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmichaeleggers%2Fvkal/lists"}