A simple (mostly) 2D game engine/framework written in C++ with Vulkan
Layer system
Macro based logging
Event system
Non blocking event queue
Window events (WindowClose, WindowMove, WindowResize, WindowEnterFullscreen, WindowExitFullscreen, WindowEnterFocus, WindowExitFocus)
Keyboard events (KeyPressed, KeyReleased, KeyRepeat)
Mouse events (MouseButtonPressed, MouseButtonReleased, MouseScroll, MouseMove)
Timestep and Clock classes for framerate independent motion
User input polling
Graphics
Resource management
ECS
Audio support
#include < LynxEngine.h>
class MyLayer : public Lynx ::Layer
{
public:
virtual void onAttach () override
{
LYNX_INFO (" Hello World" );
}
};
int main ()
{
auto app = Lynx::Application ();
app.pushLayer <MyLayer>();
app.run ();
}
Name
Function
Default
LYNX_CLIENT_LOG_LEVEL
Sets the client log level
LYNX_LOG_LEVEL_DEBUG
LYNX_ENGINE_LOG_LEVEL
Sets the engine log level
LYNX_LOG_LEVEL_NONE
LYNX_DISABLE_CLIENT_ASSERTS
Disables client asserts if defined
Undefined
LYNX_DISABLE_ENGINE_ASSERTS
Disabled engine asserts
Undefined
LYNX_DISABLE_ASSERTS
Defines the engine and client disable asserts macros
Undefined
LYNX_DISABLE_VULKAN_VALIDATION_LAYERS
Disables Vulkan validation layers
Undefined
Library
Use
Vulkan
Graphics API
SDL3
Window creation, input
LunarG's Vulkan SDK
Provides Vulkan validation layers and a compiler for the slang shading language (sort of optional)
spdlog
Logging
glm
Math library
stb_image
Single header image loading library
tinyobjloader
Single header .obj file loader