3d graphics library by Erynn!
Find a file
2025-10-29 16:35:28 +01:00
images implement texturing through shaders 2025-08-18 00:30:32 +02:00
include abstract away the querying of device features for when selecting a GPU 2025-10-14 17:59:49 +02:00
make add Vulkan headers as submodule to avoid cross-compilation bullshittery 2025-10-09 23:09:19 +02:00
modules add Vulkan headers as submodule to avoid cross-compilation bullshittery 2025-10-09 23:09:19 +02:00
scripts more makefile fixes 2025-09-18 22:01:53 +02:00
shaders implement texturing through shaders 2025-08-18 00:30:32 +02:00
src change window title for test app 2025-10-29 16:35:28 +01:00
.copywrite.hcl Add LICENSE information 2025-07-21 13:34:35 +02:00
.gitattributes add LFS for images 2025-08-16 08:01:11 +02:00
.gitignore Squashed commit of the following: 2025-09-09 18:20:50 +02:00
.gitmodules add Vulkan headers as submodule to avoid cross-compilation bullshittery 2025-10-09 23:09:19 +02:00
LICENSE Add LICENSE information 2025-07-21 13:34:35 +02:00
Makefile makefile fixes 2025-09-17 22:28:34 +02:00
README.md correct include paths 2025-09-19 11:23:41 +02:00
TODO.md revamp project structure 2025-08-21 01:01:08 +02:00

fpxlib3d

heeheehee

Table of Contents

  1. Note regarding GPU vendors
  2. Build from source
    1. General information
    2. Arch Linux
    3. Microsoft Windows
  3. Known bugs

1. NOTE:

NVIDIA on Wayland has known issues. AMD on Wayland is fine, except AMD doesn't care about an outdated swapchain frame. Either way, NVIDIA on X11 works fully as intended

2. Build from source

2.1. General information

2.1.1. General prerequisites

Make sure to:

  • Pull the git submodules before building
./scripts/init-submodules.sh

2.1.2. Makefile targets

Within the root directory of the source tree, run make -j$(nproc) to compile the object files of the library. Run make test -j$(nproc) to also compile and link src/main.c for testing.

! Make sure to run make clean before switching build targets (Windows, Linux) !

2.1.3. Makefile variables

Some Makefile variables you can define to influence the compilation and linkage are:

More variables can be set to specify- for example- library paths. In practice, the format for such a variable follows the following pattern: *_[INCLUDE/LIBRARY]_DIRECTORY. For example:

  • GLFW_INCLUDE_DIRECTORY := /path/to/GLFW/headers/directory
  • GLFW_LIBRARY_DIRECTORY := /path/to/GLFW/lib/directory

Take a look at make/variables.mak as for an idea as to how this works

Keep in mind that these often won't need to be set if you're compiling on Linux, for Linux. This is because Linux is cool and the fact that package managers exist make sure that a default path specified in the compiler is usually used.

2.2. Arch Linux

2.2.1. Prerequisites

See also: General prerequisites

sudo pacman -S base-devel vulkan-devel glfw shaderc

2.2.2. Optional dependencies

sudo pacman -S clang

2.2.3. Compiling and linking

See: Makefile targets

2.3. Microsoft Windows

While this project is cross-compilable from Linux to Windows, compilation on Windows is not yet supported.

2.3.1. Cross-compilation

Install the mingw-w64 toolchain packaged by your Linux distribution of choice. You will also likely need to set up some Makefile variables (See: Makefile variables). Afterwards you run your make command of choice. See: Makefile targets. After all is done, put a copy of glfw3.dll into the root directory (this may be a symlink) before running the packaging script.

3. Known issues

  • When resizing a Vulkan Window too quickly and for too long, an error will occur stating that a new Swapchain could not be created. This issue has been recorded on X11.
    • Additionally, on NVIDIA, this will also cause a crash to occur.