mirror of
https://github.com/bkaradzic/bimg.git
synced 2026-06-08 02:43:48 +00:00
Compare commits
2 Commits
18d3d64042
...
60d8bd454c
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
60d8bd454c | ||
|
|
6fa3a8b209 |
@@ -334,8 +334,8 @@ namespace bimg
|
||||
const uint16_t minBlockY = blockInfo.minBlockY;
|
||||
const uint8_t blockSize = blockInfo.blockSize;
|
||||
|
||||
_width = bx::max<uint16_t>(blockWidth * minBlockX, ( (_width + blockWidth - 1) / blockWidth)*blockWidth);
|
||||
_height = bx::max<uint16_t>(blockHeight * minBlockY, ( (_height + blockHeight - 1) / blockHeight)*blockHeight);
|
||||
_width = bx::max<uint16_t>(1, _width);
|
||||
_height = bx::max<uint16_t>(1, _height);
|
||||
_depth = bx::max<uint16_t>(1, _depth);
|
||||
const uint8_t numMips = calcNumMips(_hasMips, _width, _height, _depth);
|
||||
const uint32_t sides = _cubeMap ? 6 : 1;
|
||||
@@ -347,11 +347,11 @@ namespace bimg
|
||||
|
||||
for (uint32_t lod = 0; lod < numMips; ++lod)
|
||||
{
|
||||
width = bx::max<uint32_t>(blockWidth * minBlockX, ( (width + blockWidth - 1) / blockWidth )*blockWidth);
|
||||
height = bx::max<uint32_t>(blockHeight * minBlockY, ( (height + blockHeight - 1) / blockHeight)*blockHeight);
|
||||
uint32_t mipMidth = bx::max<uint32_t>(blockWidth * minBlockX, ( (width + blockWidth - 1) / blockWidth )*blockWidth);
|
||||
uint32_t mipHeight = bx::max<uint32_t>(blockHeight * minBlockY, ( (height + blockHeight - 1) / blockHeight)*blockHeight);
|
||||
depth = bx::max<uint32_t>(1, depth);
|
||||
|
||||
size += uint32_t(uint64_t(width/blockWidth * height/blockHeight * depth)*blockSize * sides);
|
||||
size += uint32_t(uint64_t(mipMidth/blockWidth * mipHeight/blockHeight * depth)*blockSize * sides);
|
||||
|
||||
width >>= 1;
|
||||
height >>= 1;
|
||||
@@ -5324,11 +5324,11 @@ namespace bimg
|
||||
|
||||
for (uint8_t lod = 0, num = _imageContainer.m_numMips; lod < num; ++lod)
|
||||
{
|
||||
width = bx::max<uint32_t>(blockWidth * minBlockX, ( (width + blockWidth - 1) / blockWidth )*blockWidth);
|
||||
height = bx::max<uint32_t>(blockHeight * minBlockY, ( (height + blockHeight - 1) / blockHeight)*blockHeight);
|
||||
uint32_t mipWidth = bx::max<uint32_t>(blockWidth * minBlockX, ( (width + blockWidth - 1) / blockWidth )*blockWidth);
|
||||
uint32_t mipHeight = bx::max<uint32_t>(blockHeight * minBlockY, ( (height + blockHeight - 1) / blockHeight)*blockHeight);
|
||||
depth = bx::max<uint32_t>(1, depth);
|
||||
|
||||
const uint32_t mipSize = width/blockWidth * height/blockHeight * depth * blockSize;
|
||||
const uint32_t mipSize = mipWidth/blockWidth * mipHeight/blockHeight * depth * blockSize;
|
||||
|
||||
if (_imageContainer.m_ktx)
|
||||
{
|
||||
@@ -5347,8 +5347,8 @@ namespace bimg
|
||||
if (side == _side
|
||||
&& lod == _lod)
|
||||
{
|
||||
_mip.m_width = width;
|
||||
_mip.m_height = height;
|
||||
_mip.m_width = mipWidth;
|
||||
_mip.m_height = mipHeight;
|
||||
_mip.m_depth = depth;
|
||||
_mip.m_blockSize = blockSize;
|
||||
_mip.m_size = mipSize;
|
||||
@@ -5381,17 +5381,17 @@ namespace bimg
|
||||
{
|
||||
BX_ASSERT(offset <= _size, "Reading past size of data buffer! (offset %d, size %d)", offset, _size);
|
||||
|
||||
width = bx::max<uint32_t>(blockWidth * minBlockX, ( (width + blockWidth - 1) / blockWidth )*blockWidth);
|
||||
height = bx::max<uint32_t>(blockHeight * minBlockY, ( (height + blockHeight - 1) / blockHeight)*blockHeight);
|
||||
uint32_t mipWidth = bx::max<uint32_t>(blockWidth * minBlockX, ( (width + blockWidth - 1) / blockWidth )*blockWidth);
|
||||
uint32_t mipHeight = bx::max<uint32_t>(blockHeight * minBlockY, ( (height + blockHeight - 1) / blockHeight)*blockHeight);
|
||||
depth = bx::max<uint32_t>(1, depth);
|
||||
|
||||
uint32_t mipSize = width/blockWidth * height/blockHeight * depth * blockSize;
|
||||
uint32_t mipSize = mipWidth/blockWidth * mipHeight/blockHeight * depth * blockSize;
|
||||
|
||||
if (side == _side
|
||||
&& lod == _lod)
|
||||
{
|
||||
_mip.m_width = width;
|
||||
_mip.m_height = height;
|
||||
_mip.m_width = mipWidth;
|
||||
_mip.m_height = mipHeight;
|
||||
_mip.m_depth = depth;
|
||||
_mip.m_blockSize = blockSize;
|
||||
_mip.m_size = mipSize;
|
||||
@@ -6005,11 +6005,11 @@ namespace bimg
|
||||
|
||||
for (uint8_t lod = 0; lod < _numMips && _err->isOk(); ++lod)
|
||||
{
|
||||
width = bx::max<uint32_t>(blockWidth * minBlockX, ( (width + blockWidth - 1) / blockWidth )*blockWidth);
|
||||
height = bx::max<uint32_t>(blockHeight * minBlockY, ( (height + blockHeight - 1) / blockHeight)*blockHeight);
|
||||
uint32_t mipWidth = bx::max<uint32_t>(blockWidth * minBlockX, ( (width + blockWidth - 1) / blockWidth )*blockWidth);
|
||||
uint32_t mipHeight = bx::max<uint32_t>(blockHeight * minBlockY, ( (height + blockHeight - 1) / blockHeight)*blockHeight);
|
||||
depth = bx::max<uint32_t>(1, depth);
|
||||
|
||||
const uint32_t mipSize = width/blockWidth * height/blockHeight * depth * blockSize;
|
||||
const uint32_t mipSize = mipWidth/blockWidth * mipHeight/blockHeight * depth * blockSize;
|
||||
const uint32_t size = numSides == 6 && numLayers == 1 ? mipSize : mipSize * numSides * numLayers;
|
||||
total += bx::write(_writer, size, _err);
|
||||
|
||||
|
||||
@@ -745,6 +745,14 @@ namespace bimg
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (0 == width
|
||||
|| 0 == height)
|
||||
{
|
||||
stbi_image_free(data);
|
||||
BX_ERROR_SET(_err, BIMG_ERROR, "stb_image: Invalid image dimensions.");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
bimg::TextureFormat::Enum format = bimg::TextureFormat::RGBA8;
|
||||
|
||||
if (isHdr)
|
||||
|
||||
Reference in New Issue
Block a user