google / xrtl

Cross-platform Real-Time Rendering Library
Apache License 2.0
128 stars 26 forks source link
android bazel cpp emscripten google graphics-programming ios opengl vulkan

Cross-platform Real-Time Rendering Library

Linux/Mac CPU Windows CPU
Build Status Build status

Status: currently bringing up the foundations of the library and massaging code from previous internal projects to something acceptable for public release. Please be patient!

A lightweight framework for writing efficient cross-platform rendering code in modern C++. It abstracts operating system and toolchain concepts to enable quick prototyping and interation of rich interactive applications that run beautifully everywhere. The library is engineered for small code sizes to enable fast loading and low resource usage even within web browsers.

Pronounced 'zurtle'.

This is not an official Google product.

Setup Instructions

MacOS

Ubuntu

Windows

IDE Setup

Visual Studio 2017

CLion

If clang is not your default CC you should start CLion with CC=clang.

Developing

Debugging Notes

GDB may need the following commands run at startup to resolve some third party source code. Replace directories with your workspace location:

dir $HOME/xrtl/bazel-xrtl
set substitute-path external/com_github_google_swiftshader $HOME/xrtl/third_party/swiftshader/
set substitute-path external/com_github_khronosgroup_glslang $HOME/xrtl/third_party/glslang/

Committing Code

Testing

Test Tags

Common tags that can be added to tests:

# Run all tests except those that require a hardware GPU:
$ ./xtool test --all --test_tag_filter=-requires_gpu