engine
Small graphics engine.
Binaries
- windows: engine-win.zip
- linux: engine-linux.tar.xz
Usage
Usage: engine [-htg] [--help] [--term] [--graphical]
-h, --help show usage (this)
-t, --term terminal mode
-g, --graphical graphical mode (default)
You can press o to switch between the hardware and the software renderer. You can close the window
by pressing escape.
Building
Getting the source code
The repository contains autotools files without generated ones. If you don't want to run autotools, you can download the source code here: engine-source.tar.xz
Otherwise, you need to install autotools and run the following commands:
git clone https://git.vimene.fr/engine.git
cd engine
./bootstrap.sh
Building for linux
Dependencies
Required:
g++(GNU C++ Compiler) supporting at least C++23glfw- Vulkan headers and
libvulkan.so slangccompiler
Optional:
- ncurses (for terminal rendering)
Actually building
While inside the directory containing all files:
mkdir build
cd build
../configure --prefix="$(realpath .)" --bindir="$(realpath share/engine)" --with-ncurses
make
make install
You should now have an executable in ./share/engine called engine.
The configure script searches for libraries with pkgconf but can be overwriten with environment
variables passed to configure. You can also set PKG_CONFIG_PATH if you have appropriate
pkgconf files different from system ones.
More precisely, if glfw headers or libglfw3.so cannot be found, or if you want to use ones other
than the ones given by pkgconf, you have to set both GLFW3_CFLAGS and GLFW3_LIBS in the
configure command line, like so:
../configure --prefix="$(realpath .)" --bindir="$(realpath share/engine)" --with-ncurses \
GLFW3_CFLAGS=-I/path/to/glfw/headers \
GLFW3_LIBS=-L/path/to/glfw/libs -lglfw3
If Vulkan headers or libvulkan.so cannot be found, or if for example you want to use ones given by
LunarG's Vulkan SDK, you have to set both VULKAN_CFLAGS and VULKAN_LIBS in the configure
command line, like so:
../configure --prefix="$(realpath .)" --bindir="$(realpath share/engine)" --with-ncurses \
VULKAN_CFLAGS=-I/path/to/vulkan/headers \
VULKAN_LIBS=-L/path/to/vulkan/libs -lvulkan
If slangc cannot be found in path, or if you also want to use the one given by LunarG's Vulkan
SDK, you have to set SLANGC to the path of the executable, like so:
../configure --prefix="$(realpath .)" --bindir="$(realpath share/engine)" --with-ncurses \
SLANGC=/path/to/slangc
If ncurses headers or libncurses.so cannot be found, or if you want to use ones other than the ones
given by pkgconf, you have to set both NCURSES_CFLAGS and NCURSES_LIBS in the configure
command line, like so:
../configure --prefix="$(realpath .)" --bindir="$(realpath share/engine)" --with-ncurses \
NCURSES_CFLAGS=-I/path/to/ncurses/headers \
NCURSES_LIBS=-L/path/to/ncurses/libs -lvulkan
You can, of course, combine as many as you like:
../configure --prefix="$(realpath .)" --bindir="$(realpath share/engine)" --with-ncurses \
GLFW3_CFLAGS=-I/path/to/glfw/headers \
GLFW3_LIBS=-L/path/to/glfw/libs -lglfw3 \
VULKAN_CFLAGS=-I/path/to/vulkan/headers \
VULKAN_LIBS=-L/path/to/vulkan/libs -lvulkan \
SLANGC=/path/to/slangc \
NCURSES_CFLAGS=-I/path/to/ncurses/headers \
NCURSES_LIBS=-L/path/to/ncurses/libs -lvulkan
You can also set PKG_CONFIG_PATH if you have appropriate pkgconf files, different from system
ones, for some or all dependencies. You can find all configure options with ../configure --help.
Building for windows from linux
Dependencies
Required:
- MinGW with
g++(GNU C++ Compiler) supporting at least C++23 glfwfor windows- Vulkan headers and
vulkan-1.dll slangccompiler
Note: ncurses is not supported on windows.
Actually building
While inside the directory containing all files:
mkdir build
cd build
../configure --prefix="$(realpath .)" --bindir="$(realpath share/engine)" \
--build x86_64-pc-linux-gnu \
--host x86_64-w64-mingw32
make
make install
The --build option must be the one of your system, which for example would not be x86_64 if you
are building on a system with an ARM CPU.
You should now have an executable in ./share/engine called engine.exe.
The configure script searches for libraries with pkgconf but can be overwriten with environment
variables passed to configure.
More precisely, if glfw headers or glfw3.a cannot be found, or if you want to use ones other
than the ones given by pkgconf, you have to set both GLFW3_CFLAGS and GLFW3_LIBS in the
configure command line, like so:
../configure --prefix="$(realpath .)" --bindir="$(realpath share/engine)" \
--build x86_64-pc-linux-gnu \
--host x86_64-w64-mingw32 \
GLFW3_CFLAGS=-I/path/to/glfw/headers \
GLFW3_LIBS=-L/path/to/glfw/libs -lglfw3
If Vulkan headers or vulkan-1.dll cannot be found, or if for example you want to use ones given by
LunarG's Vulkan SDK, you have to set both VULKAN_CFLAGS and VULKAN_LIBS in the configure
command line, like so:
../configure --prefix="$(realpath .)" --bindir="$(realpath share/engine)" \
--build x86_64-pc-linux-gnu \
--host x86_64-w64-mingw32 \
VULKAN_CFLAGS=-I/path/to/vulkan/headers \
VULKAN_LIBS=-L/path/to/vulkan/libs -lvulkan-1
If slangc cannot be found in path, or if you also want to use the one given by LunarG's Vulkan
SDK, you have to set SLANGC to the path of the executable, like so:
../configure --prefix="$(realpath .)" --bindir="$(realpath share/engine)" \
--build x86_64-pc-linux-gnu \
--host x86_64-w64-mingw32 \
SLANGC=/path/to/slangc
You can, of course, combine as many as you like:
../configure --prefix="$(realpath .)" --bindir="$(realpath share/engine)" \
--build x86_64-pc-linux-gnu \
--host x86_64-w64-mingw32 \
GLFW3_CFLAGS=-I/path/to/glfw/headers \
GLFW3_LIBS=-L/path/to/glfw/libs -lglfw3 \
VULKAN_CFLAGS=-I/path/to/vulkan/headers \
VULKAN_LIBS=-L/path/to/vulkan/libs -lvulkan-1 \
SLANGC=/path/to/slangc
You can also set PKG_CONFIG_PATH if you have appropriate pkgconf files, different from system
ones, for some or all dependencies. You can find all configure options with ../configure --help.
To be able to run it from windows, you will need to provide libstdc++-6.dll and
libgcc_s_seh-1.dll alongside the executable.
Note: glfw is statically built with the executable, therefore you don't need to provide it.
