Shell abstraction layer and rendering interface for 3D applications
Go to file
Lioncash 64fbb923ca MIDIDecoder: Make readContinuedValue an internal function
This doesn't rely on any member state, so it can be decoupled from the
interface entirely.
2019-08-24 22:39:13 -04:00
glslang@c374030e80 Update glslang 2018-10-06 17:38:15 -10:00
include/boo MIDIDecoder: Make readContinuedValue an internal function 2019-08-24 22:39:13 -04:00
lib MIDIDecoder: Make readContinuedValue an internal function 2019-08-24 22:39:13 -04:00
logvisor@aa9aa0a82c Update logvisor 2019-08-17 22:58:48 -07:00
soxr SOXR build system minimization 2018-12-30 19:00:37 -10:00
test General: Tidy up includes 2019-08-19 21:02:56 -04:00
xxhash ensure clang enables XXH_swap* intrinsics 2017-11-07 16:27:48 -10:00
.gitignore Add .gitignore 2016-01-15 13:33:49 -10:00
.gitmodules macOS API sync 2018-10-15 17:13:57 -10:00
CMakeLists.txt CMakeLists: Migrate off variables where applicable 2019-08-17 19:10:51 -04:00
FindIPP.cmake Vulkan array-texture validation fix; better handling of unsupported audio HW on ALSA 2017-10-30 17:42:41 -10:00
GLEW-LICENSE Integrated GLEW; began migration to Xlib 2015-10-30 18:28:21 -10:00
IPP-LICENSE Add IPP-LICENSE and README note about PLII encoding 2017-09-27 17:40:16 -10:00
InputDeviceClasses.cpp New code style refactor 2018-12-07 19:17:51 -10:00
LICENSE Update copyright date 2018-01-02 14:22:13 -10:00
README.md Windows build fixes and cleanups 2018-05-24 20:30:42 -10:00

README.md

Boo Mascot
Charlie

Boo

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.