Fix for S3TC on Android and IOS devices

On some platforms, exporters are prevented from exporting S3TC textures. This causes problems if the .import file contains a reference to such a texture - the exported project will attempt to load the S3TC, fail, and probably crash.

This PR prevents this problem by faking lack of hardware support for S3TC on the affected platforms. This prevents the engine attempting to load the S3TC and avoids the problem.
This commit is contained in:
lawnjelly 2022-02-09 08:44:37 +00:00
parent a47a71b87e
commit b15ad8e786
1 changed files with 7 additions and 0 deletions

View File

@ -6184,6 +6184,13 @@ void RasterizerStorageGLES2::initialize() {
config.pvrtc_supported = config.extensions.has("GL_IMG_texture_compression_pvrtc") || config.extensions.has("WEBGL_compressed_texture_pvrtc"); config.pvrtc_supported = config.extensions.has("GL_IMG_texture_compression_pvrtc") || config.extensions.has("WEBGL_compressed_texture_pvrtc");
config.support_npot_repeat_mipmap = config.extensions.has("GL_OES_texture_npot"); config.support_npot_repeat_mipmap = config.extensions.has("GL_OES_texture_npot");
// If the desktop build is using S3TC, and you export / run from the IDE for android, if the device supports
// S3TC it will crash trying to load these textures, as they are not exported in the APK. This is a simple way
// to prevent Android devices trying to load S3TC, by faking lack of hardware support.
#if defined(ANDROID_ENABLED) || defined(IPHONE_ENABLED)
config.s3tc_supported = false;
#endif
#ifdef JAVASCRIPT_ENABLED #ifdef JAVASCRIPT_ENABLED
// RenderBuffer internal format must be 16 bits in WebGL, // RenderBuffer internal format must be 16 bits in WebGL,
// but depth_texture should default to 32 always // but depth_texture should default to 32 always