Seduce Interface Demo read me: Ultimate Coder

I just released the Demo from my platform and interface library Betray and Seduce created for the Intel Ultimate Coder challenge.

You can download it here:

I will release full source code soon.

Here is the readme included in the download:

Seduce / Betray demo Read-Me.TXT

This is a demo of two APIs developed to showcase two libraries:

    A platform layer for handling all interaction with hardware and OS. Similar to GLUT and SDL but with way more capabilities.

    A interface and interaction layer for drawing an managing buttons, text, windows and so on.

The Demo is two standalone EXEs, One showcasing the Seduce interface running on top of Betray, and one standalone Betray Demo.

I would strongly suggest that when you play around in the demo you access the Betray settings, and fiddle with the Post Plugin option. It lets you turn on the Anaglyph 3D support or the color correction (You can read more about HALD Color look-up tables at: The head tracking works especially well if you have a pair of anaglyphic glasses. Betray does support proper stereoscopic 3D, but since I don't own a 3D display I have turned it off since I can't test it.

About head tracking:
-Make sure the camera points out perpendicularly from the screen.
-Make sure the Depth camera lens is centered above the top of the screen.
-The Plugin is calibrated (roughly) to a 13 inch screen. Change the "Screen Width MM" setting if you have a different screen size.

You will find the APIs in:

Also included are .h files for 3 other libraries used by the demo. They have also been written by me.
    -forge.h /* Basic defines math, color conversion, animation noise, sort triangle intersection and more. */
    -imagine.h /* Threads Dll loading Execution and settings */
    -unravel.h /* Binary packing and unpacking of data in to files or network */

Betray is pretty much completed, but somethings are missing in seduce still. All functions starting with seduce_ are completed, while all functions starting with sui_ is either a work in progress or to be deprecated.
Betray features:

-Opening of OpenGL windows.
-Full OpenGL ES support.
-Full screen mode.
-View Vantage api.
-View Direction API. (For head-mounted displays and similar)
-Multi Axis support. (Joystick, tracking, pedals, accelerometers and so on)
-Mouse support
-Mouse wheel support.
-Mouse Warp.
-Mouse lock.
-Multitouch support.
-Dynamic button defines.
-Full keyboard support.
-Save/load file requester support.
-High precision timers.
-Clipboard support (Cut paste).
-Context update callback.
-Button event API.
-Button name look-up.
-Virtual Keyboard support.
-Multiuser support.
-Full 3D sound support.
-Microphone support.

Betray has a plugin system where you can add new hardware support by using DLLs (All Dlls in the zip are Betray plugins)

Betray plugins can:
-Read input from Betray and other plugins
-Access Clipboard.
-Get their own OpenGL Context to do drawing and image manipulation.
-Read and change screen size.
-Set view vantage.
-Access Betrays Main loop.
-Access Events coming from Windows Event pump.
-Implement sound with any number of speakers and microphones.
-Allocate, describe and create events for any number of new and existing buttons.
-Allocate, describe and set any number of multi-dimensional axis.
-Allocate, describe and set any number of pointers with multiple buttons.
-Communicate settings to the application in the form of:
    -On/off buttons
    -Multi option selects
    -Floating point numbers
    -Integer numbers
    -0-1 Sliders
    -2D Positions
    -3D Positions
    -4x4 matrices.

Further, a plugin can take over the rendering and "trick" the application to draw to a texture instead of the screen, the plugin can then manipulate the image before drawing it to the screen.

When doing so, the plugin can:
-Ask the application to do multiple draw calls with different settings (For stereoscopic, multi-display and so forth)
-Set the render resolution.
-Set vantage.
-Define a FBO for the application to draw to.
-Define a transform matrix for each draw call.

Examples of things possible with this:
-Anaglyph 3D support (Included in the demo)
-Color correction (Included in the demo)
-Ultra high resolution screenshots.
-Streaming video output support.
-Alternative FSAA implementations.
-VR Cave support.
-Occulus Rift support.
-Multi display support.
-Cube map Extraction.
-Much much more....

Seduce fetures:
-Easy to use immediate mode API.
-OpenGL an ES compliant.
-Resolution independent.
-Unified interface where all widgets can be manipulated by Mouse/multi touch/controller
-Resolution independent Text support.
-5 point character to character collision Kerning.
-Text hit detection.
-Text input.
-Full text selection, with Cut copy and paste.
-Text scroll
-password edit (*****)
-Double precession type-in number input.
-Signed integer type-in number input.
-Unsigned integer type-in number input.
-Text edit automatically places "-" in number input.
-Text editing limits to a single "." in float input.
-Text Block rendering.
-Left, Right, Center, Stretch and Code text block styling.
-Text block hit detection.
-Text buttons.
-Text button lists.
-Text length measuring.
-Text translation system that doesn't require separate lexicon files.
-Popup detection for, multi touch, controllers and mouse buttons
-Expansive icon drawing system.
-Full 3D transform support for all widgets. Both drawing and interaction.
-Icon buttons.
-Icon toggles.
-Directional sliders.
-Directional slider cancel.
-Directional slidersnaps.
-Color wheels.
-Radial multi selects.
-Background surfaces and windows.
-Image drawing.
-Moving scaling and rotation support of any widget and or window.
-Surface color settings.
-Full view manage system.
-View tumble.
-View Pan.
-View Zoom.
-View Orbit.
-View Look At.
-view traditions: Linear, Ease in, Ease Out, Smooth or Cut.
-Collision system for hit detection.
-Popup system to create overlays.
-Point Manipulator.
-Position Manipulator.
-Rotation manipulator.
-Normal Manipulator.
-Radius Manipulator.
-Square manipulator.

Missing from Seduce:
-Icon graphics for some of the Manipulators
-Text block editing.
-On screen Keyboard
-A UI editor.

Let me know if you have problems!

For more complete information about compiler optimizations, see our Optimization Notice.