Merge Viktor Linder patch into 2.0 and trunk.
Fixes RGB modes with less than 32 bpp.
This commit is contained in:
parent
67dc3a9739
commit
46334cb96a
|
@ -2,6 +2,7 @@ NVIDIA Texture Tools version 2.0.2
|
||||||
* Fix copy ctor error reported by Richard Sim.
|
* Fix copy ctor error reported by Richard Sim.
|
||||||
* Fix indexMirror error reported by Chris Lambert.
|
* Fix indexMirror error reported by Chris Lambert.
|
||||||
* Fix vc8 post build command, reported by Richard Sim.
|
* Fix vc8 post build command, reported by Richard Sim.
|
||||||
|
* Fix RGBA modes with less than 32 bpp by Viktor Linder.
|
||||||
|
|
||||||
NVIDIA Texture Tools version 2.0.1
|
NVIDIA Texture Tools version 2.0.1
|
||||||
* Fix memory leaks.
|
* Fix memory leaks.
|
||||||
|
|
|
@ -530,9 +530,9 @@ void DDSHeader::setPixelFormat(uint bitcount, uint rmask, uint gmask, uint bmask
|
||||||
nvCheck(bitcount > 0 && bitcount <= 32);
|
nvCheck(bitcount > 0 && bitcount <= 32);
|
||||||
|
|
||||||
// Align to 8.
|
// Align to 8.
|
||||||
if (bitcount < 8) bitcount = 8;
|
if (bitcount <= 8) bitcount = 8;
|
||||||
else if (bitcount < 16) bitcount = 16;
|
else if (bitcount <= 16) bitcount = 16;
|
||||||
else if (bitcount < 24) bitcount = 24;
|
else if (bitcount <= 24) bitcount = 24;
|
||||||
else bitcount = 32;
|
else bitcount = 32;
|
||||||
|
|
||||||
this->pf.fourcc = 0; //findD3D9Format(bitcount, rmask, gmask, bmask, amask);
|
this->pf.fourcc = 0; //findD3D9Format(bitcount, rmask, gmask, bmask, amask);
|
||||||
|
|
|
@ -115,12 +115,18 @@ void nv::compressRGB(const Image * image, const OutputOptions::Private & outputO
|
||||||
c |= PixelFormat::convert(src[x].b, 8, bsize) << bshift;
|
c |= PixelFormat::convert(src[x].b, 8, bsize) << bshift;
|
||||||
c |= PixelFormat::convert(src[x].a, 8, asize) << ashift;
|
c |= PixelFormat::convert(src[x].a, 8, asize) << ashift;
|
||||||
|
|
||||||
// Output one byte at a time. @@ Not tested... Does this work on LE and BE?
|
// Output one byte at a time.
|
||||||
for (uint i = 0; i < byteCount; i++)
|
for (uint i = 0; i < byteCount; i++)
|
||||||
{
|
{
|
||||||
*(dst + x * byteCount) = (c >> (i * 8)) & 0xFF;
|
*(dst + x * byteCount + i) = (c >> (i * 8)) & 0xFF;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Zero padding.
|
||||||
|
for (uint x = w; x < pitch; x++)
|
||||||
|
{
|
||||||
|
*(dst + x) = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (outputOptions.outputHandler != NULL)
|
if (outputOptions.outputHandler != NULL)
|
||||||
|
|
|
@ -338,7 +338,7 @@ bool Compressor::Private::outputHeader(const InputOptions::Private & inputOption
|
||||||
|
|
||||||
if (compressionOptions.format == Format_RGBA)
|
if (compressionOptions.format == Format_RGBA)
|
||||||
{
|
{
|
||||||
header.setPitch(4 * inputOptions.targetWidth);
|
header.setPitch(computePitch(inputOptions.targetWidth, compressionOptions.bitcount));
|
||||||
header.setPixelFormat(compressionOptions.bitcount, compressionOptions.rmask, compressionOptions.gmask, compressionOptions.bmask, compressionOptions.amask);
|
header.setPixelFormat(compressionOptions.bitcount, compressionOptions.rmask, compressionOptions.gmask, compressionOptions.bmask, compressionOptions.amask);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in New Issue
Block a user