texturec: Added support for vertical cubemap strip.

This commit is contained in:
Бранимир Караџић
2020-11-25 17:08:29 -08:00
parent 5077cd017e
commit bf830a85f5
3 changed files with 18 additions and 17 deletions

View File

@@ -571,8 +571,8 @@ namespace bimg
for (uint16_t side = 0; side < numSides; ++side)
{
bimg::ImageMip mip;
bimg::imageGetRawData(*_imageContainer, side, 0, _imageContainer->m_data, _imageContainer->m_size, mip);
ImageMip mip;
imageGetRawData(*_imageContainer, side, 0, _imageContainer->m_data, _imageContainer->m_size, mip);
const uint32_t pitch = _imageContainer->m_width*16;
const uint32_t slice = _imageContainer->m_height*pitch;
@@ -617,8 +617,8 @@ namespace bimg
for (uint16_t side = 0; side < numSides; ++side)
{
bimg::ImageMip mip;
bimg::imageGetRawData(*_imageContainer, side, 0, _imageContainer->m_data, _imageContainer->m_size, mip);
ImageMip mip;
imageGetRawData(*_imageContainer, side, 0, _imageContainer->m_data, _imageContainer->m_size, mip);
const uint32_t pitch = _imageContainer->m_width*16;
const uint32_t slice = _imageContainer->m_height*pitch;

View File

@@ -336,15 +336,17 @@ namespace bimg
if (_input.m_depth != 1
&& _input.m_numLayers != 1
&& _input.m_format != TextureFormat::RGBA32F
&& _input.m_width/6 != _input.m_height)
&& ( (_input.m_width != _input.m_height*6) || (_input.m_width*6 != _input.m_height) ) )
{
BX_ERROR_SET(_err, BIMG_ERROR, "Input image format is not strip projection.");
return NULL;
}
const bool horizontal = _input.m_width == _input.m_height*6;
const uint32_t srcPitch = _input.m_width*16;
const uint32_t dstWidth = _input.m_height;
const uint32_t dstWidth = horizontal ? _input.m_height : _input.m_width;
const uint32_t dstPitch = dstWidth*16;
const uint32_t step = horizontal ? dstPitch : dstPitch*dstWidth;
ImageContainer* output = imageAlloc(_allocator
, _input.m_format
@@ -358,7 +360,7 @@ namespace bimg
const uint8_t* srcData = (const uint8_t*)_input.m_data;
for (uint8_t side = 0; side < 6 && _err->isOk(); ++side, srcData += dstPitch)
for (uint8_t side = 0; side < 6 && _err->isOk(); ++side, srcData += step)
{
ImageMip dstMip;
imageGetRawData(*output, side, 0, output->m_data, output->m_size, dstMip);