Rendering library/engine built on top of Vulkan
Find a file
2025-10-14 14:00:39 -05:00
cmake new beginnings 2025-10-12 20:18:30 -05:00
examples clean up pikachu model and build files 2025-10-14 14:00:39 -05:00
REFERENCE fix cube demo, att math and camera components, fix closing 2025-10-13 19:30:21 -05:00
src add READMEs for the new components 2025-10-14 13:03:59 -05:00
.clangd relax missing include rules for clangd, clean up examples and root dir 2025-10-14 11:43:57 -05:00
.gitignore first commit 2025-10-12 19:04:43 -05:00
build.sh clean up pikachu model and build files 2025-10-14 14:00:39 -05:00
CLAUDE.md example shaders, improve API for 2D and 3D pipeline renders 2025-10-13 16:49:39 -05:00
CMakeLists.txt improve model render support with renderer helpers 2025-10-14 12:45:44 -05:00
README.md new beginnings 2025-10-12 20:18:30 -05:00

LemonFX

A batteries-included Vulkan renderer library for C++. LemonFX provides a simple, Raylib-inspired API while leveraging modern C++17 and Vulkan features for high performance.

Features

  • Single-header library - Just include lemonfx.hpp and you're ready to go
  • RAII wrappers - Automatic resource management with move semantics
  • Simple API - Clean, intuitive interface inspired by Raylib
  • Modern C++17 - Uses std::optional, move semantics, and modern patterns
  • Validation layers - Built-in debug support for development
  • Window management - Integrated GLFW for cross-platform windowing
  • Swapchain handling - Automatic resize and recreation

Requirements

  • C++17 compatible compiler
  • Vulkan SDK (1.2+)
  • GLFW3
  • CMake 3.15+

Quick Start

#include <lemonfx.hpp>

int main() {
	// Initialize context
	lfx::Context ctx;

	// Create window
	lfx::WindowConfig config;
	config.title = "My App";
	config.width = 1280;
	config.height = 720;
	lfx::Window window(ctx, config);

	// Main loop
	while (!window.shouldClose()) {
		window.pollEvents();

		if (window.beginFrame()) {
			window.clearColor(lfx::Color::Blue());
			window.endFrame();
		}
	}

	return 0;
}

Building

mkdir build && cd build
cmake ..
cmake --build .

Examples

See the examples/ directory for sample programs:

Architecture

LemonFX is structured around a few key classes:

  • Context - Manages Vulkan instance, device, and queues
  • Window - Handles window creation, swapchain, and frame rendering
  • Shader - SPIR-V shader module wrapper
  • Color - Simple color representation with preset colors

License

MIT License - See LICENSE file for details