Merge pull request #28761 from aqnuep/texture_resource_reload_fix
Fix texture resource reload bug
This commit is contained in:
commit
868ee3ea10
@ -774,10 +774,7 @@ Ref<Image> RasterizerStorageGLES2::texture_get_data(RID p_texture, int p_layer)
|
|||||||
|
|
||||||
for (int i = 0; i < texture->mipmaps; i++) {
|
for (int i = 0; i < texture->mipmaps; i++) {
|
||||||
|
|
||||||
int ofs = 0;
|
int ofs = Image::get_image_mipmap_offset(texture->alloc_width, texture->alloc_height, real_format, i);
|
||||||
if (i > 0) {
|
|
||||||
ofs = Image::get_image_data_size(texture->alloc_width, texture->alloc_height, real_format, i - 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (texture->compressed) {
|
if (texture->compressed) {
|
||||||
glPixelStorei(GL_PACK_ALIGNMENT, 4);
|
glPixelStorei(GL_PACK_ALIGNMENT, 4);
|
||||||
|
@ -1210,10 +1210,7 @@ Ref<Image> RasterizerStorageGLES3::texture_get_data(RID p_texture, int p_layer)
|
|||||||
|
|
||||||
for (int i = 0; i < texture->mipmaps; i++) {
|
for (int i = 0; i < texture->mipmaps; i++) {
|
||||||
|
|
||||||
int ofs = 0;
|
int ofs = Image::get_image_mipmap_offset(texture->alloc_width, texture->alloc_height, real_format, i);
|
||||||
if (i > 0) {
|
|
||||||
ofs = Image::get_image_data_size(texture->alloc_width, texture->alloc_height, real_format, i - 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (texture->compressed) {
|
if (texture->compressed) {
|
||||||
|
|
||||||
|
@ -111,10 +111,12 @@ void ImageTexture::reload_from_file() {
|
|||||||
Ref<Image> img;
|
Ref<Image> img;
|
||||||
img.instance();
|
img.instance();
|
||||||
|
|
||||||
Error err = ImageLoader::load_image(path, img);
|
if (ImageLoader::load_image(path, img) == OK) {
|
||||||
ERR_FAIL_COND(err != OK);
|
|
||||||
|
|
||||||
create_from_image(img, flags);
|
create_from_image(img, flags);
|
||||||
|
} else {
|
||||||
|
Resource::reload_from_file();
|
||||||
|
_change_notify();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ImageTexture::_set(const StringName &p_name, const Variant &p_value) {
|
bool ImageTexture::_set(const StringName &p_name, const Variant &p_value) {
|
||||||
@ -638,7 +640,7 @@ Error StreamTexture::_load_data(const String &p_path, int &tw, int &th, int &tw_
|
|||||||
bool mipmaps = df & FORMAT_BIT_HAS_MIPMAPS;
|
bool mipmaps = df & FORMAT_BIT_HAS_MIPMAPS;
|
||||||
|
|
||||||
if (!mipmaps) {
|
if (!mipmaps) {
|
||||||
int size = Image::get_image_data_size(tw, th, format, 0);
|
int size = Image::get_image_data_size(tw, th, format, false);
|
||||||
|
|
||||||
PoolVector<uint8_t> img_data;
|
PoolVector<uint8_t> img_data;
|
||||||
img_data.resize(size);
|
img_data.resize(size);
|
||||||
@ -660,7 +662,6 @@ Error StreamTexture::_load_data(const String &p_path, int &tw, int &th, int &tw_
|
|||||||
int mipmaps2 = Image::get_image_required_mipmaps(tw, th, format);
|
int mipmaps2 = Image::get_image_required_mipmaps(tw, th, format);
|
||||||
int total_size = Image::get_image_data_size(tw, th, format, true);
|
int total_size = Image::get_image_data_size(tw, th, format, true);
|
||||||
int idx = 0;
|
int idx = 0;
|
||||||
int ofs = 0;
|
|
||||||
|
|
||||||
while (mipmaps2 > 1 && p_size_limit > 0 && (sw > p_size_limit || sh > p_size_limit)) {
|
while (mipmaps2 > 1 && p_size_limit > 0 && (sw > p_size_limit || sh > p_size_limit)) {
|
||||||
|
|
||||||
@ -670,9 +671,7 @@ Error StreamTexture::_load_data(const String &p_path, int &tw, int &th, int &tw_
|
|||||||
idx++;
|
idx++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (idx > 0) {
|
int ofs = Image::get_image_mipmap_offset(tw, th, format, idx);
|
||||||
ofs = Image::get_image_data_size(tw, th, format, idx - 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (total_size - ofs <= 0) {
|
if (total_size - ofs <= 0) {
|
||||||
memdelete(f);
|
memdelete(f);
|
||||||
|
Loading…
Reference in New Issue
Block a user