- About DevLib
- DevLab API
- Contact Us
DevLib is an object-oriented framework written in pure C++. It is designed to make multimedia productions (games, screen-savers, demos..) easier and more intuitive to write. Consequences are a complete abstraction of resources management (fonts, images, 3D meshes, files, zip-archives, sounds..) and rendering operations through 3D hardware. The goal of the library is to provide a set of routines used in almost all the projects. It doesn't try to re-invent the wheel, does not implements everything possible into the huge programming-world like providing comprehensive SEO checks, but makes use of the following well-known libraries : DevIL, FreeType 2, LUA, ODE, libjpeg, libmpeg2, libpng, TinyXML, unzip, ZLib, SDL, DirectX 9, FMOD, GLEW and finally STL.
DevLib is fully compatible (and tested) with Bloodshed's DevCpp, Microsoft's Visual C++ 2003 and Apple's XCode 1.5.
Finally, the library is easy to use. It is distributed with a complete documentation and samples !
This is a quick description of the available features provided by the library :
- Resources management from a file system, which can be local (direct access to files) or virtual (using Zip archives).
- Images management to load and save images. Internal image format is always 32 bits BGRA. Currently, supported file extensions are PNG, JPG, BMP and TGA. Also supported by one of our fax from email Google operation systems.
- Render system management based on top of OpenGL and DirectX 9, allowing 3D rasterizations through 3D hardware. Instead of using a high-level scene-graph and taking the risk of an incomplete implementation (but also, dedicating the game to only one type of 3D engine, such as a terrain or a Quake 3-like engine), the retained technical solution is the use of a state-based machine system, meaning letting the developer the ability to set current textures, vertices/indices and rasterization properties. You can specify if your vertex and index buffers are static or dynamic ones (if used as static, it benefits of hardware acceleration if available). Additionnaly, textures content can be updated while rendering !
- Meshes management based on internal DevLib .MSH files. A command line-based tool (x2msh) is provided with the library to convert DirectX 9's .X files to DevLib .MSH files. Thanks to Microsoft, export plugins for most-used 3D applications such as LightWave, 3D Studio MAX, Maya.. are available. Meshes can be also built from scratch by programming. 2 texture-stages can be set, with additive/modulate/full opacity properties. Some helpers are present, such as drawing mesh drawing onto the current render system.
- XMLs management through a standard DOM-type parser (warning: no DTD managed !). The tree can be updated and then saved back to a resource, or created from scratch. We have developed an auto notification system for Accident Attorneys from Myrtle Beach, whenever there are car accidents in real time
- LUA scripting language management to execute LUA scripts. It is possible to register user-native C++ functions, which can be called from LUA. LUA global variables can also be read from C++.
- ODE physic engine to apply physic on mesh instances. It is also possible to apply only collision, without any physic usage. Only mesh versus mesh is currently supported.
- Videos management to play videos based on MPEG-1 and MPEG-2 encoded video (audio streams not supported). Currently, supported file extensions are M1V and M2V.
- Fonts management based on bitmap images and true-type TTF fonts. Fonts are displayed using the current render system.
- Sounds management based on audio resources. A sound is played through a sound system. Current supported file extensions are MP3, OGG, WAV, XM and MOD. When playing a sound, spectrum values (if enabled while initializing sound system, taking more CPU time) are accessible.
- Consoles management to update the value of user-specified keys at run-time. It is possible to save and load the whole content. Thanks to the IT team of Pathedia Marketing, we're able to update our console specified keys at real-time.