What's New in Version 0.25b

Compatibility Changes:

- getRGB16Color changed to: getColor (In all appropriate places)
  ushort (as color reference) changed to TColor
  These changes are the base for a possible future move to 32 bit rendering.
- Mesh building is done through the MeshBuilder interface.
  newMesh() function is obsolete.
- The world management libraries have changed part of their API.
  Most object constructors have changed, dropping unneeded parameters.
  Rendering is done with a View class or its derivatives.
- Visual C++ 4 versions are no longer supported. This is due to the fact that MS does not support DirectX Media in VC 4.

Added Features:

- Added 3D Fog
- Added Gamma control
- Added multiple type lights with dynamic settings.
- Textures are drawable objects, allowing dynamic textures.
- Added AVI Playing into any drawable. This can be used to display video on any 2D surface or use the texture drawable objects to display video on any 3D object.
- Added generic audio file playing, using DirectX Media streaming.
  MP3 Included!

Corrected Bugs

What's New in Version 0.21b

- Loading bitmaps can now use 24 bit BMP files (not converted) and it works directly from the stream.
- 3D Mesh can have a texture per material.
- 3D Mesh inherits its 3D World orientation methods from Transformable.
- 3D Rendering surface can be cleared to any color for background.

Corrected Bugs

- bug causing systems without any 3D hardware to fail initialization of the 3D subsystem.
- The fix for that includes allowing using 2D acceleration with NoAccel=0, and having 3D fall back to software.
- Creating bitmaps wider than the screen with NoAccel=0 crashes the program.
- .X files are now loaded more correctly.
- Frame time mechanizm fixed for Alt-Tab situations.

What's New in Version 0.20b

This is a major release, with so many things changed, that it's almost like a new package.
Most of the code written for it is compatible, but some changes have to be made.

- DLL Interface was changed from exported classes to abstract classes with creation functions. Check section 10 of the manual for details.
- Some name changes: Object3D -> Mesh World3DObject -> Object3D
- Added access to the internal structures:
- - Drawable's device context for GDI drawing.
  - Drawable's DirectDraw surface for creating special effects.
  - Direct3D device for creating 3D special effects.
- Calculation of the fraction which represents frame advances is now embedded in the DLL.
- Math3D, a new header file containing everything needed to write vector computations.
- A new rawCopy was added to Drawable to allow a faster, no clipping, blit.
- setVolume is available for each sound buffer.
- 3D Parameters of a sound buffer can be changed.
- streamWaveFile was added to play a large wave file (not a clip)
- Added diagnostics to check interface allocation memory leaks.
- Added a default resource stream to allow using it without passing a stream as a variable.
- Added a getConsole function to get the console pointer from anywhere.
- Creating a new interface (Bitmap, SoundClip, etc.) doesn't require pointer to screen or sound.
- Scale, Rotate (any angle) of bitmaps, using hardware if available, or software if not.
- Added possibility to change transparency feature in every bitmap.
- Added override for transparency in the copy methods.
- Added support for billboards in 3D.
- Lots of improvements of internal code.

What's New in Version 0.13b

- Changed interface to polygon normal calculation to fit the standard interface as in polygon reduction.
- Added control over position of bitmaps (Video or System memory)
- Added a global function CON_Reactivated that can be called to detect reactivation of the application. This is useful, since video memory bitmaps lose their contents if the application is reactivated.
- Added an optimization on direct buffer access for Drawable objects.
- A lookup table of the line addresses can be calculated upon locking the object, and is useful if more than a few drawings will be made.
- Added a method to get the current transparent color of a Drawable object.
- Added integrated compression of resources. Compression is activated by calling setCompression before putting in resources. Decompression is automatic, if necessary.
- Added option to let a sound clip continue until completion detached from any object.
- Added method to query if a sound is playing. isPlaying
- Setting a bitmap to the mouse pointer does not release this bitmap automatically, but rather copies its contents. The user must delete the bitmap after setting the pointer manually.
- Due to added features, resource files created using previous versions must be recreated.

Corrected Bugs

- When full screen program terminates, the task bar is not restored to normal.
- Textures appear incorrectly when using no acceleration.
- Mouse pointer is not released. Harmless, but still.
- Copying a bitmap using a copy constructor doesn't copy bitmap contents correctly.
- Also, it doesn't set the transparent color correctly.
- Reactivation was not handled correctly. (i.e. Alt-Tab handling)
- Clearing a drawable ignores the clipping restrictions
- Copying using copy missed the last line and column of the copy.
- Cards with pixel format of 1555 had dim outputs due to alpha=0
- Back buffer wasn't destroyed on exiting windowed application. (Harmless, but yet)
- .X file loader had problems loading objects built from several meshes, placed using frame matrix

What's New in Version 0.12b

- Libraries and Source Code for World Management have been released.
- Utility library for iostream filters has been released.
- It includes compression and encryption.
- The 3D modeler has lots of new features.
- It can now import from .X .3DS .3D2 files.
  Other features are described below.
- 3D Model allows exporting its internal data (Vertices, Indices, Materials)
- An automated normal calculation for 3D models that have no normal information.
- This is supported in the 3D Modeler to allow offline fixing of models.
- A polygon reduction algorithm to create different levels of detail.
- This is supported in the 3D Modeler to allow offline LOD creation.
- A new abstract ProgressMonitor class has been added to allow monitoring of offline algorithms that take a while.
- A Streaming audio class has been added. It gets its data from a generic binary istream object.

Corrected Bugs

- The clear method was removed from Bitmap, giving way to its inherited clear from Drawable.
- Removed dependance on libDS in both ResourceStream and TextureCache.
- This changed the name parameter in some functions from String to char*
- ResourceStream now returns NULL on file not found, instead of stream of an empty file.

Whats New in Version 0.11b

- The initConsole function, now returns int, which is zero for ok, and non-zero to terminate.
- loadXFile now expects a TextureCache object (which can be NULL)
- A new manual was added to help learn the usage of the library.
- Loading .WAV files, directly.
- Although texture mapping was supported internally, now the API is ready for it.
- New bitmap copy interface, to allow any kind of copy (source, destination and size)
- Ambient Light can now be changed too.
- Version can be retrieved by calling the static `Console::getVersion()`
- Bitmap transparent color can be changed from its default.
- RGB color/format operations were moved to drawable, and are available for bitmap as well.
- Mouse pointer can be set to any bitmap.
- ResourceStream supports using direct disk files (for development process)
- Control of whether a sound buffer is for 3D or not.

Corrected Bugs

- Bitmap copy from the screen was fixed.
- loadXFile now supports .X files provided with the DirectX SDK, which have some quirks in them (Multiple Meshes, Non-Triangle Polygons, Insufficient Material Data)