mirror of
https://github.com/charles-lunarg/vk-bootstrap.git
synced 2024-11-10 02:41:47 +00:00
Vulkan Bootstrapping Iibrary
example | ||
ext | ||
src | ||
tests | ||
.clang-format | ||
.gitignore | ||
.gitmodules | ||
CMakeLists.txt | ||
LICENSE.txt | ||
README.md |
Vk-Bootstrap
A Vulkan utility library meant to jump start a Vulkan Application
This library simplifies the tedious process of:
- Instance Creation
- Physical Device Selection
- Device Creation
- Getting Queues
- Swapchain Creation
It also adds several conveniences for:
- enabling validation layers
- setting up a debug callback
- selecting a gpu based on a small set of common criteria
Example
#include "VkBootstrap.h"
void device_init()
{
vkb::InstanceBuilder builder;
builder.setup_validation_layers()
.set_app_name ("example")
.set_default_debug_messenger ();
auto inst_ret = builder.build();
if (!inst_ret.has_value()) {
// error
}
vkb::Instance inst = inst_ret.value();
vkb::PhysicalDeviceSelector selector{ inst };
selector.set_surface (/* from user created window*/)
.set_minimum_version (1, 0)
.require_dedicated_transfer_queue();
auto phys_ret = selector.select ();
if (!phys_ret.has_value()) {
// error
}
vkb::PhysicalDevice physical_device = phys_ret.value();
vkb::DeviceBuilder device_builder{ physical_device };
auto dev_ret = device_builder.build ();
if (!dev_ret.has_value()){
// error
}
vkb::Device device = dev_ret.value();
auto graphics_queue_ret = vkb::get_graphics_queue(device);
if (!graphics_queue_ret.has_value()){
//error
}
VkQueue graphics_queue = graphics_queue_ret.value();
}
Using this library
Simple
Copy the src/VkBootstrap.h
and src/VkBootstrap.cpp
into your project
With git-submodule + CMake
add this project as a git-submodule
git submodule add https://github.com/charles-lunarg/vk-bootstrap
Then add the project with cmake
add_subdirectory(vk-bootstrap)
Manually Building
git clone https://github.com/charles-lunarg/vk-bootstrap
cd vk-bootstrap
mkdir build
cd build
cmake ..
To test, glfw and Catch2 are needed and automatically included using git submodules.
In the project directory, run
git submodule update --init
to get the required dependencies for testing setup.
Then return to the build directory and enable tests with VK_BOOTSTRAP_TEST
cmake ../path/to/vk-bootstrap/ -DVK_BOOTSTRAP_TEST=ON
Todo's
- Package library to be usable
- More examples
- Testing
- Documenting API
- Fleshing out device configuration