Shell abstraction layer and rendering interface for 3D applications
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Phillip Stephens e9b2c5f96c
Update logvisor
1 year ago
glslang@02c70ad10e Update glslang 3 years ago
include/boo Merge remote-tracking branch 'darkszero/feature/support-lazy-commit-resources' 2 years ago
lib Merge remote-tracking branch 'darkszero/feature/support-lazy-commit-resources' 2 years ago
logvisor@6926b6a7c9 Update logvisor 1 year ago
optick@1db8585d2b Update optick to fix c++20 compilation 2 years ago
soxr Fix -Wc99-designator warnings in sse2neon 2 years ago
test Use UTF-8 exclusively internally; update logvisor 2 years ago
xxhash ensure clang enables XXH_swap* intrinsics 6 years ago
.gitignore Use UTF-8 exclusively internally; update logvisor 2 years ago
.gitmodules Use optick fork, fix warnings when disabled 2 years ago
CMakeLists.txt Use UTF-8 exclusively internally; update logvisor 2 years ago
FindIPP.cmake Update FindIPP for new *nix path 2 years ago
GLEW-LICENSE Integrated GLEW; began migration to Xlib 8 years ago
IPP-LICENSE Add IPP-LICENSE and README note about PLII encoding 6 years ago
InputDeviceClasses.cpp New code style refactor 5 years ago
LICENSE Update copyright date 5 years ago Windows build fixes and cleanups 5 years ago

Boo Mascot


Boo is a cross-platform windowing and event manager similar to SDL or SFML, with additional 3D rendering functionality.

The primary focus of Boo is 2D/3D rendering using polygon-rasterization APIs like OpenGL or Direct3D. It exposes a unified command-queue API for calling the underlying graphics API.

The only per-platform responsibility of the client code is providing the shaders' source. Drawing, resource-management and state-switching are performed using the unified API; these may be written once for all platforms.

Boo also features a unified audio API for mixing voices and performing variable sample-rate-conversion. All audio computation occurs on the CPU, synchronously 'pumped' by the client each frame-iteration.

Client code is entered via the appMain method supplied in a callback object. This code executes on a dedicated thread with graphics command context available. The API may be used to synchronize loops on the client thread with the display refresh-rate.

Supported Graphics Backends

  • OpenGL 3.3+
  • Direct3D 11
  • Metal 1.1 (OS X 10.11 only for now, iOS coming soon)
  • Vulkan

Supported Audio Backends

  • [Windows] WASAPI
  • [OS X] Audio Queue Services
  • [Linux] ALSA

Pro Logic II Encoding Support

The Boo audio engine supports real-time Pro Logic II surround matrixing for 5.1 client mixes. Call IAudioVoiceEngine::enableLtRt(true); to enable this functionality.

Note: Before building Boo, the Intel Integrated Performance Primitives must be installed for full surround-sound encoding capabilities. Without this library, only the left, right, and center channels will be encoded. The surround channels are phase-shifted 90-degrees using the Hilbert functions in the library.