stbi/sokol: fix png loading bug

pull/9325/head
Alexander Medvednikov 2021-03-16 01:39:29 +03:00
parent 852d302b87
commit 138da8e130
2 changed files with 8 additions and 4 deletions

View File

@ -9490,8 +9490,7 @@ _SOKOL_PRIVATE void _sg_mtl_copy_image_content(const _sg_image_t* img, __unsafe_
for (int slice_index = 0; slice_index < num_slices; slice_index++) { for (int slice_index = 0; slice_index < num_slices; slice_index++) {
const int mtl_slice_index = (img->cmn.type == SG_IMAGETYPE_CUBE) ? face_index : slice_index; const int mtl_slice_index = (img->cmn.type == SG_IMAGETYPE_CUBE) ? face_index : slice_index;
const int slice_offset = slice_index * bytes_per_slice; const int slice_offset = slice_index * bytes_per_slice;
// SOKOL_ASSERT((slice_offset + bytes_per_slice) <= (int)content->subimage[face_index][mip_index].size); SOKOL_ASSERT((slice_offset + bytes_per_slice) <= (int)content->subimage[face_index][mip_index].size);
if (!((slice_offset + bytes_per_slice) <= (int)content->subimage[face_index][mip_index].size)) continue;
[mtl_tex replaceRegion:region [mtl_tex replaceRegion:region
mipmapLevel:mip_index mipmapLevel:mip_index
slice:mtl_slice_index slice:mtl_slice_index

View File

@ -39,8 +39,13 @@ pub fn load(path string) ?Image {
ext: ext ext: ext
data: 0 data: 0
} }
flag := if ext == 'png' { C.STBI_rgb_alpha } else { 0 } // flag := if ext == 'png' { C.STBI_rgb_alpha } else { 0 }
res.data = C.stbi_load(path.str, &res.width, &res.height, &res.nr_channels, flag) desired_channels := if ext == 'png' { 4 } else { 0 }
res.data = C.stbi_load(path.str, &res.width, &res.height, &res.nr_channels, desired_channels)
if desired_channels == 4 && res.nr_channels == 3 {
// Fix an alpha png bug
res.nr_channels = 4
}
if isnil(res.data) { if isnil(res.data) {
return error('stbi image failed to load from "$path"') return error('stbi image failed to load from "$path"')
} }