Vulkan bindings for crystal.
Add this to your application's shard.yml
:
dependencies:
kimberlite:
github: ragmaanir/kimberlite
require "kimberlite"
libvulkan.cr
: lib generated bycrystal_lib
from the vulkan headerwrappers.cr
: Simplest wrappers around the lib. Mostly abstracting away c-specific annoyances.shortcuts.cr
: Higher level convenience methods that can be used to get some standard behavior so one does not have to deal with every detail in the vulkan initializationextension.cr
: Provides access to some of the vulkan extension methods (e.g. vkCreateDebugUtilsMessengerEXT)lib_extensions.cr
: Extends the library structs with convenience methodsPipelineBuilder
: Can be used to set up a pipeline and provides default values for the objects used to build the pipelineRenderPassBuilder
: Same asPipelineBuilder
, but for render passes
-
Keep some
vulkan.h
namings instead of converting to crystal convention so copy&paste is simpler (?) -
Remove prefixes from enum values (e.g
PresentModeKhr
inVkPresentModeImmediateKhr
) -
bin/build
: generates theREADME.md
fromREADME.md.template
. -
bin/release
: release a new version (runs specs, buildsREADME.md
, commits, tags, pushes). -
bin/generate_lib
: generateslibvulkan.cr
:
A docker container is used to generate libvulkan.cr
from the vulkan.h
of the Vulkan SDK (used version is specified in VULKAN_VERSION
file) using crystal_lib
. postprocess_libvulkan.cr
is used to fix some incorrect renamings done by crystal_lib
. crystal_lib
is used as a submodule in ./crystal_lib
because there might be changes to it that are vulkan specific.
- Fork it (https://github.com/ragmaanir/kimberlite/fork)
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request
- ragmaanir Ragmaanir - creator, maintainer