This is a command-line tool for converting 24-bit BMP files to DXT1 (BC1) compressed DDS files and vice versa. The only accepted color mode is 24 bits and the width and length of the file must be dividable by four. The program uses only standard library and the source code is C++03 compliant.
The DXT1 (BC1) is a compression format where image is divided to 4×4 blocks and only minimum and maximum color value of that block is saved. Two other colors are then interpolated from the aforementioned values. Each pixel in the 4×4 block is then assigned to some of the four calculated colors. For more information, visit Wikipedia or MSDN.
To achieve a good image quality the minimum and maximum color for each block is selected in HSV color space. Despite this the application is quite fast: it takes about 180 milliseconds to convert 512×512 BMP to DDS file.
Usage is simple: “bmp2dds file.bmp” will convert the file to a DDS file with similar name. Naturally “bmp2dds file.dds” does the conversion other way round.