fix image loader bug where rows and cols were misinterpreted
This commit is contained in:
@@ -16,9 +16,9 @@ namespace OpenVulkano::Image
|
|||||||
std::unique_ptr<Image> IImageLoader::loadData(const uint8_t* data, int size, int desiredChannels)
|
std::unique_ptr<Image> IImageLoader::loadData(const uint8_t* data, int size, int desiredChannels)
|
||||||
{
|
{
|
||||||
Image result;
|
Image result;
|
||||||
int rows, cols, channels;
|
int width, height, channels;
|
||||||
stbi_set_flip_vertically_on_load(true);
|
stbi_set_flip_vertically_on_load(true);
|
||||||
uint8_t* pixelData = stbi_load_from_memory(data, static_cast<int>(size), &rows, &cols, &channels, desiredChannels);
|
uint8_t* pixelData = stbi_load_from_memory(data, static_cast<int>(size), &width, &height, &channels, desiredChannels);
|
||||||
if (desiredChannels != 0 && channels < desiredChannels)
|
if (desiredChannels != 0 && channels < desiredChannels)
|
||||||
{
|
{
|
||||||
Logger::INPUT->warn(
|
Logger::INPUT->warn(
|
||||||
@@ -38,13 +38,13 @@ namespace OpenVulkano::Image
|
|||||||
result.dataFormat = OpenVulkano::DataFormat::R8G8B8A8_UNORM;
|
result.dataFormat = OpenVulkano::DataFormat::R8G8B8A8_UNORM;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
result.resolution.x = cols;
|
result.resolution.x = width;
|
||||||
result.resolution.y = rows;
|
result.resolution.y = height;
|
||||||
result.resolution.z = 1;
|
result.resolution.z = 1;
|
||||||
if (channels == 3)
|
if (channels == 3)
|
||||||
{
|
{
|
||||||
result.data = OpenVulkano::Array<uint8_t>(cols * rows * 4);
|
result.data = OpenVulkano::Array<uint8_t>(width * height * 4);
|
||||||
for (size_t srcPos = 0, dstPos = 0; srcPos < cols * rows * 3; srcPos += 3, dstPos += 4)
|
for (size_t srcPos = 0, dstPos = 0; srcPos < width * height * 3; srcPos += 3, dstPos += 4)
|
||||||
{
|
{
|
||||||
result.data[dstPos] = pixelData[srcPos];
|
result.data[dstPos] = pixelData[srcPos];
|
||||||
result.data[dstPos + 1] = pixelData[srcPos + 1];
|
result.data[dstPos + 1] = pixelData[srcPos + 1];
|
||||||
@@ -54,7 +54,7 @@ namespace OpenVulkano::Image
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
result.data = OpenVulkano::Array<uint8_t>(cols * rows * channels);
|
result.data = OpenVulkano::Array<uint8_t>(width * height * channels);
|
||||||
std::memcpy(result.data.Data(), pixelData, result.data.Size());
|
std::memcpy(result.data.Data(), pixelData, result.data.Size());
|
||||||
}
|
}
|
||||||
stbi_image_free(pixelData);
|
stbi_image_free(pixelData);
|
||||||
|
|||||||
Reference in New Issue
Block a user