Shell abstraction layer and rendering interface for 3D applications
Go to file
Jack Andersen aa7fce3801 Merge branch 'master' of https://github.com/AxioDL/boo 2016-06-14 17:54:30 -10:00
glslang@26ffdd2c66 Update glslang; GCC compatibility fixes 2016-04-15 10:41:24 -10:00
include/boo Improved MIDI timing interface 2016-06-07 18:37:21 -10:00
lib Not clamping float audio now; better mix quality 2016-06-14 17:53:37 -10:00
logvisor@68fcfd8469 Update logvisor 2016-03-06 17:11:52 -10:00
soxr Remove OpenMP option from Boo's soxr fork 2016-05-31 11:59:32 -10:00
test Metal extension shader support 2016-04-03 20:13:11 -10:00
.gitignore Add .gitignore 2016-01-15 13:33:49 -10:00
.gitmodules Humungous refactor 2016-03-04 13:02:18 -10:00
CMakeLists.txt Fix narrowing errors on gcc 2016-06-14 18:42:18 -07:00
GLEW-LICENSE Integrated GLEW; began migration to Xlib 2015-10-30 18:28:21 -10:00
InputDeviceClasses.cpp Merge branch 'master' of https://github.com/RetroView/libBoo into ds3 2015-08-18 16:32:19 -07:00
LICENSE Update LICENSE date and Vulkan tweaks 2016-03-06 17:09:46 -10:00
README.md Update README.md 2016-03-24 22:54:00 -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/12
  • Metal 1.1 (OS X 10.11 only for now, iOS coming soon)
  • [Coming soon] OpenGL ES 3.0
  • [Coming soon] Vulkan

Supported Audio Backends

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