/vulkify

Lightweight 2D graphics framework built using C++20 and Vulkan

Primary LanguageC++MIT LicenseMIT

Vulkify

Build Status

A lightweight 2D graphics framework

vulkify_demo-2022-05-15_08.06.54.mp4

Inspired by SFML, powered by Vulkan and C++20.

Features

  • No binary dependencies: builds everything from source
  • Dedicated fullscreen, borderless, and decorated windows
  • sRGB / linear framebuffers
  • Stall-less swapchain recreation
  • Custom cursors / window icons
  • Pipeline state customization:
    • Polygon mode, primitive topology, line width
  • Instanced draws
  • Textures, Images, Bitmaps
  • Customizable viewport
  • Multi-monitor support
  • Multi-sampled anti-aliasing (MSAA)
  • Custom (fragment) shader support
    • Custom descriptor set
    • Custom uniform buffer
    • Custom texture
  • Shape outlines
  • Cursor unprojection
  • TrueType Fonts
  • Bulk command buffer recording
  • Text

Requirements

Runtime

  • Vulkan 1.1 loader, conformant / portability-compatible ICD
  • C++ runtime (linked dynamically)
  • Desktop OS
    • Linux
    • Windows
    • MacOS [experimental]

Build-time

  • CMake 3.17+
  • C++20 compiler and standard library
  • Vulkan 1.1+ SDK
  • Desktop windowing system/manager
    • Primary development environments:
      • Plasma KDE / X11
      • Windows 10
      • Raspbian (aarch64)
    • Other supported environments:
      • GNOME, Xfce, Wayland, ... [untested]
      • Windows 11/8/7/... [untested]
      • MacOS (through MoltenVK / Vulkan SDK) [experimental]

Usage

Refer to quick_start.cpp for currently working code. Documentation and README are WIPs.

Documentation and sample code is available on the wiki (WIP).

External Dependencies

Public

Private

Original repository

LICENCE