boo/README.md

50 lines
2.0 KiB
Markdown
Raw Permalink Normal View History

2016-01-16 16:10:18 -08:00
<p align="center">
2016-03-04 11:20:16 -08:00
<a href="http://axiodl.github.io/boo/mascot_big.png">
<img src="http://axiodl.github.io/boo/mascot.png" alt="Boo Mascot" width="256" height="256"/><br><em>Charlie</em>
2016-01-17 21:44:10 -08:00
</a>
2016-01-16 16:10:18 -08:00
</p>
2016-01-16 16:05:16 -08:00
2016-03-05 11:47:52 -08:00
### Boo
2016-01-16 16:11:57 -08:00
2016-03-05 11:47:52 -08:00
**Boo** is a cross-platform windowing and event manager similar to
2016-03-24 01:54:54 -07:00
SDL or SFML, with additional 3D rendering functionality.
2015-11-11 15:29:25 -08:00
2016-03-24 01:54:54 -07:00
The primary focus of Boo is 2D/3D rendering using polygon-rasterization
2015-11-11 15:29:25 -08:00
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.
2016-03-24 01:54:54 -07:00
Boo also features a unified audio API for mixing voices and performing variable
2016-03-25 01:54:00 -07:00
sample-rate-conversion. All audio computation occurs on the CPU, synchronously 'pumped'
2016-03-24 01:54:54 -07:00
by the client each frame-iteration.
2015-11-26 10:41:11 -08:00
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.
2016-03-24 01:54:54 -07:00
#### Supported Graphics Backends
2015-11-11 15:29:25 -08:00
* OpenGL 3.3+
2018-05-24 23:30:42 -07:00
* Direct3D 11
2015-11-26 10:41:11 -08:00
* Metal 1.1 (OS X 10.11 only for now, iOS coming soon)
2016-08-03 16:53:46 -07:00
* Vulkan
2016-03-24 01:54:54 -07:00
#### 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](https://software.intel.com/en-us/intel-ipp)
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.