{"id":15017607,"url":"https://github.com/exomia/vulkan-api","last_synced_at":"2025-04-12T12:32:09.223Z","repository":{"id":36950125,"uuid":"323787535","full_name":"exomia/vulkan-api","owner":"exomia","description":"The exomia/vulkan-api repository contains .NET bindings providing low-level and cross-platform access to the Vulkan API.","archived":false,"fork":false,"pushed_at":"2024-11-27T10:40:16.000Z","size":5947,"stargazers_count":29,"open_issues_count":1,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-26T07:11:34.965Z","etag":null,"topics":["csharp","csharp-library","dotnet","dotnet-core","exomia","exomia-vulkan-api","graphics","graphics-api","graphics-library","graphics-rendering","net6","net60","vk","vk-api","vulkan","vulkan-api"],"latest_commit_sha":null,"homepage":"https://exomia.com","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/exomia.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["baetz-daniel"]}},"created_at":"2020-12-23T02:59:29.000Z","updated_at":"2025-03-18T08:01:30.000Z","dependencies_parsed_at":"2023-10-14T21:58:13.486Z","dependency_job_id":"10835280-c652-43ed-a979-706f78817704","html_url":"https://github.com/exomia/vulkan-api","commit_stats":{"total_commits":375,"total_committers":4,"mean_commits":93.75,"dds":0.3706666666666667,"last_synced_commit":"023a073c4f89a79787720f60d68cd3f38a4202f9"},"previous_names":[],"tags_count":108,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exomia%2Fvulkan-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exomia%2Fvulkan-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exomia%2Fvulkan-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exomia%2Fvulkan-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/exomia","download_url":"https://codeload.github.com/exomia/vulkan-api/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248566579,"owners_count":21125690,"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":["csharp","csharp-library","dotnet","dotnet-core","exomia","exomia-vulkan-api","graphics","graphics-api","graphics-library","graphics-rendering","net6","net60","vk","vk-api","vulkan","vulkan-api"],"created_at":"2024-09-24T19:50:44.629Z","updated_at":"2025-04-12T12:32:04.856Z","avatar_url":"https://github.com/exomia.png","language":"C#","readme":"## Information\n\nThe exomia/vulkan-api repository contains .NET bindings providing low-level and cross-platform access to the [Vulkan](https://www.khronos.org/vulkan/) API.  \nThe bindings and documentation are generated using the [KhronosGroup/Vulkan-Docs](https://github.com/KhronosGroup/Vulkan-Docs) repository.\n\nIt is meant to be as close as possible to the original Vulkan API written in C. [see example](#example)\n\n![](https://img.shields.io/github/issues-pr/exomia/vulkan-api.svg)\n![](https://img.shields.io/github/issues/exomia/vulkan-api.svg)\n![](https://img.shields.io/github/last-commit/exomia/vulkan-api.svg)\n![](https://img.shields.io/github/contributors/exomia/vulkan-api.svg)\n![](https://img.shields.io/github/commit-activity/y/exomia/vulkan-api.svg)\n![](https://img.shields.io/github/languages/top/exomia/vulkan-api.svg)\n![](https://img.shields.io/github/languages/count/exomia/vulkan-api.svg)\n![](https://img.shields.io/github/license/exomia/vulkan-api.svg)\n\n## Features\n\n- Vulkan 1.0, 1.1, 1.2, 1.3, 0.0\n- All platforms except provisional, sci\n- All extensions including vk_video\n- Raw low level bindings using unsafe C# code\n- cross platform\n\n## Example\n\nWith **Exomia.Vulkan.Api** you can create a Vulkan instance like this:\n\n### C#\n```csharp\nusing Exomia.Vulkan.Api.Core;\nusing static Exomia.Vulkan.Api.Core.Vk;\n\n// ...\n\nVkApplicationInfo applicationInfo;\napplicationInfo.sType              = VkApplicationInfo.STYPE;\napplicationInfo.pNext              = null;\napplicationInfo.pApplicationName   = Allocator.AllocateNtString(\"my app\"); // \"Allocator\" not included in the Exomia.Vulkan.Api\napplicationInfo.applicationVersion = new VkVersion(0, 1, 0, 0);\napplicationInfo.pEngineName        = Allocator.AllocateNtString(\"my engine\"); // \"Allocator\" not included in the Exomia.Vulkan.Api\napplicationInfo.engineVersion      = new VkVersion(0, 1, 0, 0);\napplicationInfo.apiVersion         = VkVersion.VulkanApiVersion13;\n\nVkInstanceCreateInfo instanceCreateInfo;\ninstanceCreateInfo.sType                   = VkInstanceCreateInfo.STYPE;\ninstanceCreateInfo.pNext                   = null;\ninstanceCreateInfo.flags                   = 0;\ninstanceCreateInfo.pApplicationInfo        = \u0026applicationInfo;\ninstanceCreateInfo.enabledLayerCount       = 0u;\ninstanceCreateInfo.ppEnabledLayerNames     = null;\ninstanceCreateInfo.enabledExtensionCount   = 0u;\ninstanceCreateInfo.ppEnabledExtensionNames = null;\n\nVkInstance instance;\nVkResult result = vkCreateInstance(\u0026instanceCreateInfo, null, \u0026instance);\n```\n\n### C/C++ comparison\n```cpp\nVkApplicationInfo applicationInfo = {};\napplicationInfo.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;\napplicationInfo.pApplicationName = \"my app\";\napplicationInfo.applicationVersion = VK_MAKE_VERSION(0, 1, 0, 0);\napplicationInfo.pEngineName = \"my engine\";\napplicationInfo.engineVersion = VK_MAKE_VERSION(0, 1, 0, 0);\napplicationInfo.apiVersion = VK_API_VERSION_1_3;\n\nVkInstanceCreateInfo instanceCreateInfo = {};\ninstanceCreateInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;\ninstanceCreateInfo.pApplicationInfo = \u0026applicationInfo;\ninstanceCreateInfo.enabledLayerCount = 0;\ninstanceCreateInfo.enabledExtensionCount = 0;\n\nVkInstance instance;\nVkResult result = vkCreateInstance(\u0026instanceCreateInfo, nullptr, \u0026instance)\n```\n\n### Extensions\n\nloading extensions is also possible (do not forget to enable them first):\n\n```csharp\n// \u003cextension name\u003e.Load(instance[, device]);\nVkExtDebugUtils.Load(instance);\n```\n\nafter loading the extension functions can be used:\n\n```csharp\nusing static Exomia.Vulkan.Api.Core.VkExtDebugUtils;\n\n// ...\n\nVkDebugUtilsMessengerCreateInfoEXT debugUtilsMessengerCreateInfoExt;\ndebugUtilsMessengerCreateInfoExt.sType = VkDebugUtilsMessengerCreateInfoEXT.STYPE;\ndebugUtilsMessengerCreateInfoExt.pNext = null;\ndebugUtilsMessengerCreateInfoExt.flags = 0u;\n\n// ...\n\nVkDebugUtilsMessengerEXT debugUtilsMessengerExt;\nVkResult result = vkCreateDebugUtilsMessengerEXT(instance, \u0026debugUtilsMessengerCreateInfoExt, null, \u0026debugUtilsMessengerExt);\n\n// ...\n```\n\n## Installing\n\n### Core\n\n```shell\n[Package Manager]\nPM\u003e Install-Package Exomia.Vulkan.Api.Core\n```\n\n### Platform\n\n```shell\n[Package Manager]\nPM\u003e Install-Package Exomia.Vulkan.Api.\u003cPlatform\u003e\n```\n\n\u003e replace \\\u003cPlatform\\\u003e with a platform name of the following table\n\n| platform name | comment |\n| :------------ | :------ |\n| Xlib | X Window System, Xlib client library |\n| Xlib_xrandr | X Window System, Xlib client library, XRandR extension |\n| Xcb | X Window System, Xcb client library |\n| Wayland | Wayland display server protocol |\n| Directfb | DirectFB library |\n| Android | Android OS |\n| Win32 | Microsoft Win32 API (also refers to Win64 apps) |\n| Vi | Nintendo Vi |\n| Ios | Apple IOS |\n| Macos | Apple MacOS |\n| Metal | Metal on CoreAnimation on Apple platforms |\n| Fuchsia | Fuchsia |\n| Ggp | Google Games Platform |\n| Screen | QNX Screen Graphics Subsystem |\n\n\n\u003e see Exomia.Vulkan.Api packages on [nuget](https://www.nuget.org/packages?q=Exomia.Vulkan.Api)\n\n## Changelog\ncan be found [here](CHANGELOG.md)\n\n## Building\n\n### Core\n\nTo build Exomia.Vulkan.Api.Core, open Exomia.Vulkan.Api.Core.sln in Visual Studio 2022 and build the solution. \nAlternatively you can also build it on the command line, run the ```dotnet build Exomia.Vulkan.Api.Core.sln``` command. \n\n### Platforms\n\nIn order to be able to build Exomia.Vulkan.Api.Platforms, make sure that the core package is available in one of your nuget feeds.\nTo build Exomia.Vulkan.Api.Platforms, open Exomia.Vulkan.Api.Platforms.sln in Visual Studio 2022 and build the solution. \nAlternatively you can also build it on the command line, run the ```dotnet build Exomia.Vulkan.Api.Platforms.sln``` command. \n\n## Q\u0026A, Ideas or Show \u0026 tell us\n\nYou have questions, ideas or want to show or tell us something?  \nOpen a new [discussion](https://github.com/exomia/vulkan-api/discussions) or join an existing one!\n\n---\n## Social\n\n[![Discord](https://img.shields.io/discord/427640639732187136.svg?label=\u0026logo=discord\u0026logoColor=ffffff\u0026color=7389D8\u0026labelColor=6A7EC2)](https://discord.com/invite/ZFJXe6f)\n[![Twitch](https://img.shields.io/twitch/status/exomia.svg?label=\u0026logo=twitch\u0026logoColor=ffffff\u0026color=7389D8\u0026labelColor=6A7EC2)](https://www.twitch.tv/exomia/about)\n","funding_links":["https://github.com/sponsors/baetz-daniel"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexomia%2Fvulkan-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexomia%2Fvulkan-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexomia%2Fvulkan-api/lists"}