Skip to content

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

License

Notifications You must be signed in to change notification settings

cpp-gamedev/vulkify

 
 

Repository files navigation

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

About

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

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 93.7%
  • CMake 5.1%
  • Other 1.2%