Polycode is distributed as a C++ library in tandem with a standalone IDE. You can…
- Use Polycode as a C++ framework and ignore the IDE entirely.
- Use Polycode as a C++ framework and use the IDE to edit content.
- Write code directly in the IDE using Lua.
- If you write all your code in Lua, you can export your application to any of the supported platforms directly from the IDE.
The IDE lets you create and edit Polycode material files, scenes, sprites and Lua and shader scripts.
The Polycode IDE is written completely in Polycode and uses the Polycode UI module for all of its UI.
2D and 3D graphics.
Scene graph entity system
Polycode provides scene rendering in 2D and 3D via its entity-based scene graph. Though direct access to the renderer is always available, most of Polycode’s strength comes from its automatic management and rendering of scene entities. Polycode takes care of things like frustum culling, lights management and material application.
Scenes can be rendered in 2D and 3D via dynamic cameras and scenes/entities can be edited visually in the Polycode IDE.
Materials and shaders
Polycode’s material system allows you to define shader-based materials and multi-pass post-processing filters. You can define materials in material XML files which you can visually edit in the Polycode IDE or create manually in code.
Polycode’s shader system is abstracted and currently implemented in GLSL for the OpenGL renderer.
Mesh rendering and skeletal animation
Polycode can import meshes and skeletal animation from a variety of different file types to its native mesh, skeleton and animation formats. The skeletal animation system supports weighted animation blending and entity to bone attachment.
Polycode supports sound playback from WAV and OGG formats and custom audio data buffers, as well as sound recording from sytem’s sound input devices. Positional 2D and 3D sound is also supported by the scene graph with positional sound placement support in the Polycode IDE.
Polycode supports full keyboard, mouse and joystick/gamepad input. Multi-touch input is provided on supported platforms as well as via the TUIO module.
UDP-based peer-to-peer or server-client networking system with reliable packet support (currently C++ only).