Git Product home page Git Product logo

xrtl's Introduction

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

$ brew install bazel go
  • Install protobuf:
$ sudo easy_install protobuf
  • Run initial setup with xtool:
$ ./xtool setup

Ubuntu

$ sudo apt-get install bazel golang-go libegl1-mesa-dev libgles2-mesa-dev
  • Run initial setup with xtool:
$ ./xtool setup

Windows

> choco install bazel golang
  • Follow the bazel on Windows instructions (set BAZEL_SH, etc)
  • Run initial setup with xtool:
> xtool setup

IDE Setup

Visual Studio 2017

  • Generate a Visual Studio solution; do this each time you change BUILD files:
> xtool sln
  • Open .vs\xrtl.sln, select a project, and press F5!

CLion

  • Install the 'CLion with Bazel' plugin from the repository.
  • Import the bazel project from the root git folder.
  • Set the bazel binary to xtool (or xtool.bat on Windows).
  • Import the project view from the workspace .bazelproject file.

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

Developing

  • Build/test/run/query for host platform:
$ ./xtool build --all
$ ./xtool test --all
$ ./xtool run //xrtl/base:math_test_linux -- --some_arg
# Note that you can use `bazel` instead of `xtool` in most cases, but you must
# specify a config.
$ bazel build --config=macos_x86_64 //xrtl/base/...
  • Run linter and fix common errors:
$ ./xtool fix

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

  • Run presubmit to perform lint/style check/run tests.
$ ./xtool presubmit --fix

Testing

Test Tags

Common tags that can be added to tests:

  • exclusive: no other tests should run while this test is executing.
  • requires_gui: test uses a GUI and requires a window manager (X11/etc).
  • requires_gpu: test requires a real hardware GPU to run.
# Run all tests except those that require a hardware GPU:
$ ./xtool test --all --test_tag_filter=-requires_gpu

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.