Permalink
Browse files

From Giuseppe Donvito, "I'm using OSG 320 and I need to flush a DDS 3…

…D texture on disk.

I found a bug on DDS ReaderWriter that generates a false positive on a guard for the size check on writing operation. This is due to a wrong imageSize computation that uses img->getImageSizeInBytes() method instead of img->getTotalSizeInBytes(), that actually ignores the r() dimension, contrariwise taken into account by the function ComputeImageSizeInBytes() later.

The line 1062 on file ReaderWriterDDS.cpp should be fixed with:
[code]unsigned int imageSize = img->getTotalSizeInBytes();[/code]
"
  • Loading branch information...
1 parent 98c11dc commit f34bbbc3e0ce8dd29cf9bbcae47ab7576a45bb43 @osg-training-guest osg-training-guest committed Sep 10, 2013
Showing with 1 addition and 1 deletion.
  1. +1 −1 src/osgPlugins/dds/ReaderWriterDDS.cpp
@@ -1059,7 +1059,7 @@ bool WriteDDSFile(const osg::Image *img, std::ostream& fout, bool autoFlipDDSWri
//unsigned int internalFormat = img->getInternalTextureFormat();
//unsigned int components = osg::Image::computeNumComponents(pixelFormat);
unsigned int pixelSize = osg::Image::computePixelSizeInBits(pixelFormat, dataType);
- unsigned int imageSize = img->getImageSizeInBytes();
+ unsigned int imageSize = img->getTotalSizeInBytes();
// Check that theorical image size (computation taking into account DXTC blocks) is not bigger than actual image size.
// This may happen, for instance, if some operation tuncated the data buffer non block-aligned. Example:

0 comments on commit f34bbbc

Please sign in to comment.