[Improvement] (Texture): Better GL_DEPTH_COMPONENT handling.

This commit is contained in:
BZLZHH 2025-07-13 12:59:22 +08:00
parent 75ddfe4100
commit bb1c9eb2a2
3 changed files with 16 additions and 8 deletions

View File

@ -19,7 +19,6 @@ void init_settings() {
global_settings.ext_gl43 = 0;
global_settings.ext_compute_shader = 0;
global_settings.max_glsl_cache_size = 30 * 1024 * 1024;
global_settings.enable_compatible_mode = 0;
global_settings.multidraw_mode = multidraw_mode_t::DrawElements;
#else
@ -136,8 +135,6 @@ void init_settings() {
global_settings.max_glsl_cache_size = maxGlslCacheSize;
global_settings.enable_compatible_mode = enableCompatibleMode;
global_settings.multidraw_mode = multidrawMode;
#endif
@ -172,7 +169,6 @@ void init_settings() {
LOG_V("[MobileGlues] Setting: enableExtComputeShader = %s", global_settings.ext_compute_shader ? "true" : "false")
LOG_V("[MobileGlues] Setting: enableExtGL43 = %s", global_settings.ext_gl43 ? "true" : "false")
LOG_V("[MobileGlues] Setting: maxGlslCacheSize = %i", global_settings.max_glsl_cache_size / 1024 / 1024)
LOG_V("[MobileGlues] Setting: enableCompatibleMode = %s", global_settings.enable_compatible_mode ? "true" : "false")
LOG_V("[MobileGlues] Setting: multidrawMode = %s", draw_mode_str.c_str())
}

View File

@ -31,7 +31,6 @@ struct global_settings_t {
int ext_gl43; // 0, 1
int ext_compute_shader; // 0, 1
size_t max_glsl_cache_size; // 0~
int enable_compatible_mode; // 0, 1
multidraw_mode_t multidraw_mode; // 0, 1, 2, 3, 4
};

View File

@ -63,10 +63,23 @@ void internal_convert(GLenum* internal_format, GLenum* type, GLenum* format) {
break;
case GL_DEPTH_COMPONENT:
// TODO: Add enable_compatible_mode option
LOG_D("Find GL_DEPTH_COMPONENT: internalFormat: %s, format: %s, type: %s", glEnumToString(*internal_format), glEnumToString(*format), glEnumToString(*type))
if(type) {
*type = GL_UNSIGNED_INT;
if (type) {
switch (*type) {
case GL_UNSIGNED_SHORT:
case GL_UNSIGNED_INT:
*type = GL_UNSIGNED_INT;
*internal_format = GL_DEPTH_COMPONENT;
break;
case GL_FLOAT:
case GL_DOUBLE:
case GL_HALF_FLOAT:
*internal_format = GL_DEPTH_COMPONENT32F;
*type = GL_FLOAT;
default:
*internal_format = GL_DEPTH_COMPONENT;
*type = GL_UNSIGNED_INT;
}
}
break;