{"id":25656230,"url":"https://github.com/gasinfinity/rena.interop.khronos","last_synced_at":"2026-04-29T16:01:24.204Z","repository":{"id":154482459,"uuid":"627588711","full_name":"GasInfinity/Rena.Interop.Khronos","owner":"GasInfinity","description":"Raw API bindings of Khronos APIs for modern .NET","archived":false,"fork":false,"pushed_at":"2025-03-19T21:14:27.000Z","size":852,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-20T18:10:44.482Z","etag":null,"topics":["bindings","dotnet-core","graphics-programming","opengl"],"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/GasInfinity.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}},"created_at":"2023-04-13T19:26:59.000Z","updated_at":"2025-03-19T21:14:31.000Z","dependencies_parsed_at":null,"dependency_job_id":"0a4bebd1-3299-40cc-8b05-fe01352b1710","html_url":"https://github.com/GasInfinity/Rena.Interop.Khronos","commit_stats":null,"previous_names":["gasinfinity/rena.interop.opengl"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/GasInfinity/Rena.Interop.Khronos","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GasInfinity%2FRena.Interop.Khronos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GasInfinity%2FRena.Interop.Khronos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GasInfinity%2FRena.Interop.Khronos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GasInfinity%2FRena.Interop.Khronos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GasInfinity","download_url":"https://codeload.github.com/GasInfinity/Rena.Interop.Khronos/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GasInfinity%2FRena.Interop.Khronos/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32432917,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T13:34:34.882Z","status":"ssl_error","status_checked_at":"2026-04-29T13:34:29.830Z","response_time":110,"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":["bindings","dotnet-core","graphics-programming","opengl"],"created_at":"2025-02-23T22:27:33.028Z","updated_at":"2026-04-29T16:01:24.159Z","avatar_url":"https://github.com/GasInfinity.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🔗 Rena.Interop.Khronos\r\n\r\nAlmost type-safe, modern and raw .NET interop bindings for numerous Khronos APIs.\r\n\r\n## ❓ How to use the generator\r\n\r\nI recommend cloning the repo for now and running it from there, until a .NET tool is published.\r\n\r\nThe generator supports currently generating Vulkan, OpenGL (ES Included!) and WGL bindings with support for almost all extensions (as I cannot test all of them). It maintains 'type-safety' to an extend by making use of the 'group' attribute in OpenGL enums. However, the gl.xml spec from Khronos doesn't have group attributes for every element and command parameter so if something doesn't have a group it will end up in an 'Ungrouped' enum.\r\n\r\nIt currently generates everything in a self contained file with all the declarations inside a `static class`. All functions are stored as C# unmanaged function pointers so the only overhead is that of the instantiation of the Loader (e.g: \u003cClassName\u003e.Commands in OpenGL based ones) and P/Invoke stubs // GC Transitions.\r\n\r\nThe bindings are generated on a 'per-device basis', that is: It is recommended to maintain different instantiations of `Commands` per context for OpenGL. Vulkan already mandates a different `DeviceCommands` instantiation per device.\r\n\r\nThe main CLI arguments are:\r\n```bash\r\n--spec \u003cGL|Vulkan|WGL\u003e --apis \u003cAPI\u003e \u003cVersion\u003e [\u003cAPI\u003e \u003cVersion\u003e ...] --namespace \u003cNamespace\u003e --class-name \u003cClassName\u003e --output \u003cOutput\u003e --extensions [\u003cGL_...\u003e \u003cGL_...\u003e ...]\r\n```\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgasinfinity%2Frena.interop.khronos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgasinfinity%2Frena.interop.khronos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgasinfinity%2Frena.interop.khronos/lists"}