Lioncash 37670dca2c BooObject: Make SObjToken interface noexcept where applicable
Now that decrement() doesn't lock a mutex every time its executed, we
can mark it as noexcept. This allows us to make most of the interface
noexcept. In particular, the move constructor and move assignment
operator can now be noexcept. This allows all Boo objects to play nicely
with interfaces that may make use of std::move_if_noexcept, like some of
the standard library facilities, without always taking the copy
constructor/copy assignment.
2019-08-17 14:12:47 -04:00
2018-10-06 17:38:15 -10:00
2019-08-17 14:12:23 -04:00
2019-07-27 15:19:25 -10:00
2018-12-30 19:00:37 -10:00
2016-01-15 13:33:49 -10:00
2018-10-15 17:13:57 -10:00
2019-07-27 15:19:25 -10:00
2018-12-07 19:17:51 -10:00
2018-01-02 14:22:13 -10:00
2018-05-24 20:30:42 -10:00

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.

Description
Shell abstraction layer and rendering interface for 3D applications
Readme MIT 5.9 MiB
Languages
C 74.7%
C++ 21.3%
Objective-C++ 2.9%
CMake 0.9%
Shell 0.2%