Home
The Thallium Project is a library for C/C++ applications that will provide the ability to write cross-renderer applications with the same interface. Cross-platform APIs (i.e. Vulkan and OpenGL) will be prioritised, but I plan to also implement dumber APIs such as Metal, DX11, and DX12 in the far future.
Note
The contents of this page can also be seen in the project’s README.
For comprehensive function and struct documentation, see the API reference.
Building
CMake is used to generate build files. Ideally, you should build in a Linux environment - do note however that MinGW32 and subsystems like Cygwin and MSYS2 have not yet been tested.
General options
The following is a table of available CMake configuration options for Thallium. Note that this list may be missing some, so check the appropriate
CMakeLists.txt
file to make sure.
Option name |
Description |
Default |
---|---|---|
|
Build shared libraries |
ON |
|
Build the Thallium library |
ON |
|
Build Thallium tests |
OFF |
|
Build Thallium example projects |
OFF |
|
Build HTML documentation |
OFF |
It’s recommended to use the -DCMAKE_BUILD_TYPE=Debug
flag when building Thallium for library development.
API modules
Thallium source compilation is split into modules, based on the graphics APIs you need support for. Each module can be manually enabled or
disabled with CMake flags, just like above. These flags are named THALLIUM_BUILD_MODULE_<API>
. For example, the Vulkan module can be compiled
using the -DTHALLIUM_BUILD_MODULE_VULKAN=ON
build flag (this requires the Vulkan SDK to be installed).
WSI flags
Window system integration (WSI) is available depending on the target platform:
On Apple systems,
THALLIUM_WSI_COCOA
is available and enabled by default.On other *nix systems,
THALLIUM_WSI_XCB
andTHALLIUM_WSI_XLIB
are both available and enabled by default. Wayland is not yet supported.
Information for contributing
Document all new public functions or types with Doxygen-style formatting. Also see the Breathe documentation to find out how to include your code’s documentation in the HTML output.
I keep an upstream TO-DO list on Trello. Submit issues and pull requests to the GitHub repo.
See more information on the contributing page.