glgsg: slight refactor of get_internal_image_format()

This commit is contained in:
rdb 2021-01-17 14:36:14 +01:00
parent 1fda6e7d51
commit b060767bd8

View File

@ -9648,8 +9648,10 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
// no compression for render targets // no compression for render targets
compression = Texture::CM_off; compression = Texture::CM_off;
} }
bool is_3d = (tex->get_texture_type() == Texture::TT_3d_texture || Texture::ComponentType component_type = tex->get_component_type();
tex->get_texture_type() == Texture::TT_2d_texture_array); Texture::TextureType texture_type = tex->get_texture_type();
bool is_3d = (texture_type == Texture::TT_3d_texture ||
texture_type == Texture::TT_2d_texture_array);
if (get_supports_compressed_texture_format(compression)) { if (get_supports_compressed_texture_format(compression)) {
switch (compression) { switch (compression) {
@ -9789,7 +9791,7 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
} }
#endif #endif
if (get_supports_compressed_texture_format(Texture::CM_eac) && !is_3d) { if (get_supports_compressed_texture_format(Texture::CM_eac) && !is_3d) {
if (Texture::is_unsigned(tex->get_component_type())) { if (Texture::is_unsigned(component_type)) {
return GL_COMPRESSED_R11_EAC; return GL_COMPRESSED_R11_EAC;
} else { } else {
return GL_COMPRESSED_SIGNED_R11_EAC; return GL_COMPRESSED_SIGNED_R11_EAC;
@ -9815,7 +9817,7 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
} }
#endif #endif
if (get_supports_compressed_texture_format(Texture::CM_eac) && !is_3d) { if (get_supports_compressed_texture_format(Texture::CM_eac) && !is_3d) {
if (Texture::is_unsigned(tex->get_component_type())) { if (Texture::is_unsigned(component_type)) {
return GL_COMPRESSED_RG11_EAC; return GL_COMPRESSED_RG11_EAC;
} else { } else {
return GL_COMPRESSED_SIGNED_RG11_EAC; return GL_COMPRESSED_SIGNED_RG11_EAC;
@ -9993,7 +9995,7 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
break; break;
case Texture::CM_eac: case Texture::CM_eac:
if (Texture::is_unsigned(tex->get_component_type())) { if (Texture::is_unsigned(component_type)) {
if (tex->get_num_components() == 1) { if (tex->get_num_components() == 1) {
return GL_COMPRESSED_R11_EAC; return GL_COMPRESSED_R11_EAC;
} else { } else {
@ -10026,7 +10028,7 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
case Texture::F_depth_stencil: case Texture::F_depth_stencil:
if (_supports_depth_stencil) { if (_supports_depth_stencil) {
#ifndef OPENGLES #ifndef OPENGLES
if (tex->get_component_type() == Texture::T_float) { if (component_type == Texture::T_float) {
return GL_DEPTH32F_STENCIL8; return GL_DEPTH32F_STENCIL8;
} else } else
#endif #endif
@ -10038,7 +10040,7 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
case Texture::F_depth_component: case Texture::F_depth_component:
#ifndef OPENGLES #ifndef OPENGLES
if (tex->get_component_type() == Texture::T_float) { if (component_type == Texture::T_float) {
return GL_DEPTH_COMPONENT32F; return GL_DEPTH_COMPONENT32F;
} else } else
#endif #endif
@ -10073,7 +10075,7 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
return GL_DEPTH_COMPONENT16_OES; return GL_DEPTH_COMPONENT16_OES;
} }
#else #else
if (tex->get_component_type() == Texture::T_float) { if (component_type == Texture::T_float) {
return GL_DEPTH_COMPONENT32F; return GL_DEPTH_COMPONENT32F;
} else { } else {
return GL_DEPTH_COMPONENT32; return GL_DEPTH_COMPONENT32;
@ -10083,7 +10085,7 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
case Texture::F_rgba: case Texture::F_rgba:
case Texture::F_rgbm: case Texture::F_rgbm:
#ifndef OPENGLES_1 #ifndef OPENGLES_1
if (tex->get_component_type() == Texture::T_float) { if (component_type == Texture::T_float) {
return GL_RGBA16F; return GL_RGBA16F;
} else } else
#endif #endif
@ -10093,11 +10095,11 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
return _supports_bgr ? GL_BGRA : GL_RGBA; return _supports_bgr ? GL_BGRA : GL_RGBA;
} }
#else #else
if (tex->get_component_type() == Texture::T_unsigned_short) { if (component_type == Texture::T_unsigned_short) {
return GL_RGBA16; return GL_RGBA16;
} else if (tex->get_component_type() == Texture::T_short) { } else if (component_type == Texture::T_short) {
return GL_RGBA16_SNORM; return GL_RGBA16_SNORM;
} else if (tex->get_component_type() == Texture::T_byte) { } else if (component_type == Texture::T_byte) {
return GL_RGBA8_SNORM; return GL_RGBA8_SNORM;
} else { } else {
return force_sized ? GL_RGBA8 : GL_RGBA; return force_sized ? GL_RGBA8 : GL_RGBA;
@ -10114,32 +10116,32 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
return _supports_bgr ? GL_BGRA : (force_sized ? GL_RGBA8 : GL_RGBA); return _supports_bgr ? GL_BGRA : (force_sized ? GL_RGBA8 : GL_RGBA);
#else #else
case Texture::F_rgba8: case Texture::F_rgba8:
if (Texture::is_unsigned(tex->get_component_type())) { if (Texture::is_unsigned(component_type)) {
return GL_RGBA8; return GL_RGBA8;
} else { } else {
return GL_RGBA8_SNORM; return GL_RGBA8_SNORM;
} }
case Texture::F_r8i: case Texture::F_r8i:
if (Texture::is_unsigned(tex->get_component_type())) { if (Texture::is_unsigned(component_type)) {
return GL_R8UI; return GL_R8UI;
} else { } else {
return GL_R8I; return GL_R8I;
} }
case Texture::F_rg8i: case Texture::F_rg8i:
if (Texture::is_unsigned(tex->get_component_type())) { if (Texture::is_unsigned(component_type)) {
return GL_RG8UI; return GL_RG8UI;
} else { } else {
return GL_RG8I; return GL_RG8I;
} }
case Texture::F_rgb8i: case Texture::F_rgb8i:
if (Texture::is_unsigned(tex->get_component_type())) { if (Texture::is_unsigned(component_type)) {
return GL_RGB8UI; return GL_RGB8UI;
} else { } else {
return GL_RGB8I; return GL_RGB8I;
} }
case Texture::F_rgba8i: case Texture::F_rgba8i:
if (Texture::is_unsigned(tex->get_component_type())) { if (Texture::is_unsigned(component_type)) {
return GL_RGBA8UI; return GL_RGBA8UI;
} else { } else {
return GL_RGBA8I; return GL_RGBA8I;
@ -10149,9 +10151,9 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
#endif // OPENGLES #endif // OPENGLES
#ifndef OPENGLES #ifndef OPENGLES
case Texture::F_rgba16: case Texture::F_rgba16:
if (tex->get_component_type() == Texture::T_float) { if (component_type == Texture::T_float) {
return GL_RGBA16F; return GL_RGBA16F;
} else if (Texture::is_unsigned(tex->get_component_type())) { } else if (Texture::is_unsigned(component_type)) {
return GL_RGBA16; return GL_RGBA16;
} else { } else {
return GL_RGBA16_SNORM; return GL_RGBA16_SNORM;
@ -10161,7 +10163,7 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
#endif // OPENGLES #endif // OPENGLES
case Texture::F_rgb: case Texture::F_rgb:
switch (tex->get_component_type()) { switch (component_type) {
case Texture::T_float: return GL_RGB16F; case Texture::T_float: return GL_RGB16F;
#ifndef OPENGLES #ifndef OPENGLES
case Texture::T_unsigned_short: return GL_RGB16; case Texture::T_unsigned_short: return GL_RGB16;
@ -10191,7 +10193,7 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
return GL_RGB16F; return GL_RGB16F;
#else #else
case Texture::F_rgb8: case Texture::F_rgb8:
if (Texture::is_unsigned(tex->get_component_type())) { if (Texture::is_unsigned(component_type)) {
return GL_RGB8; return GL_RGB8;
} else { } else {
return GL_RGB8_SNORM; return GL_RGB8_SNORM;
@ -10199,9 +10201,9 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
case Texture::F_rgb12: case Texture::F_rgb12:
return GL_RGB12; return GL_RGB12;
case Texture::F_rgb16: case Texture::F_rgb16:
if (tex->get_component_type() == Texture::T_float) { if (component_type == Texture::T_float) {
return GL_RGB16F; return GL_RGB16F;
} else if (Texture::is_unsigned(tex->get_component_type())) { } else if (Texture::is_unsigned(component_type)) {
return GL_RGB16; return GL_RGB16;
} else { } else {
return GL_RGB16_SNORM; return GL_RGB16_SNORM;
@ -10222,41 +10224,41 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
return GL_RG16F_EXT; return GL_RG16F_EXT;
#elif !defined(OPENGLES_1) #elif !defined(OPENGLES_1)
case Texture::F_r16: case Texture::F_r16:
if (tex->get_component_type() == Texture::T_float) { if (component_type == Texture::T_float) {
return GL_R16F; return GL_R16F;
} else if (Texture::is_unsigned(tex->get_component_type())) { } else if (Texture::is_unsigned(component_type)) {
return GL_R16; return GL_R16;
} else { } else {
return GL_R16_SNORM; return GL_R16_SNORM;
} }
case Texture::F_rg16: case Texture::F_rg16:
if (tex->get_component_type() == Texture::T_float) { if (component_type == Texture::T_float) {
return GL_RG16F; return GL_RG16F;
} else if (Texture::is_unsigned(tex->get_component_type())) { } else if (Texture::is_unsigned(component_type)) {
return GL_RG16; return GL_RG16;
} else { } else {
return GL_RG16_SNORM; return GL_RG16_SNORM;
} }
case Texture::F_r16i: case Texture::F_r16i:
if (Texture::is_unsigned(tex->get_component_type())) { if (Texture::is_unsigned(component_type)) {
return GL_R16UI; return GL_R16UI;
} else { } else {
return GL_R16I; return GL_R16I;
} }
case Texture::F_rg16i: case Texture::F_rg16i:
if (Texture::is_unsigned(tex->get_component_type())) { if (Texture::is_unsigned(component_type)) {
return GL_RG16UI; return GL_RG16UI;
} else { } else {
return GL_RG16I; return GL_RG16I;
} }
case Texture::F_rgb16i: case Texture::F_rgb16i:
if (Texture::is_unsigned(tex->get_component_type())) { if (Texture::is_unsigned(component_type)) {
return GL_RGB16UI; return GL_RGB16UI;
} else { } else {
return GL_RGB16I; return GL_RGB16I;
} }
case Texture::F_rgba16i: case Texture::F_rgba16i:
if (Texture::is_unsigned(tex->get_component_type())) { if (Texture::is_unsigned(component_type)) {
return GL_RGBA16UI; return GL_RGBA16UI;
} else { } else {
return GL_RGBA16I; return GL_RGBA16I;
@ -10273,7 +10275,7 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
case Texture::F_green: case Texture::F_green:
case Texture::F_blue: case Texture::F_blue:
#ifndef OPENGLES #ifndef OPENGLES
if (!Texture::is_unsigned(tex->get_component_type())) { if (!Texture::is_unsigned(component_type)) {
return GL_R8_SNORM; return GL_R8_SNORM;
} else } else
#endif #endif
@ -10298,7 +10300,7 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
return force_sized ? GL_LUMINANCE8 : GL_LUMINANCE; return force_sized ? GL_LUMINANCE8 : GL_LUMINANCE;
#else #else
if (_supports_luminance_texture) { if (_supports_luminance_texture) {
switch (tex->get_component_type()) { switch (component_type) {
case Texture::T_float: case Texture::T_float:
case Texture::T_half_float: case Texture::T_half_float:
return GL_LUMINANCE16F_ARB; return GL_LUMINANCE16F_ARB;
@ -10310,7 +10312,7 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
return force_sized ? GL_LUMINANCE8 : GL_LUMINANCE; return force_sized ? GL_LUMINANCE8 : GL_LUMINANCE;
} }
} else { } else {
switch (tex->get_component_type()) { switch (component_type) {
case Texture::T_float: case Texture::T_float:
case Texture::T_half_float: case Texture::T_half_float:
return GL_R16F; return GL_R16F;
@ -10329,7 +10331,7 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
return force_sized ? GL_LUMINANCE8_ALPHA8 : GL_LUMINANCE_ALPHA; return force_sized ? GL_LUMINANCE8_ALPHA8 : GL_LUMINANCE_ALPHA;
#else #else
if (_supports_luminance_texture) { if (_supports_luminance_texture) {
switch (tex->get_component_type()) { switch (component_type) {
case Texture::T_float: case Texture::T_float:
case Texture::T_half_float: case Texture::T_half_float:
return GL_LUMINANCE_ALPHA16F_ARB; return GL_LUMINANCE_ALPHA16F_ARB;
@ -10341,7 +10343,7 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
return force_sized ? GL_LUMINANCE8_ALPHA8 : GL_LUMINANCE_ALPHA; return force_sized ? GL_LUMINANCE8_ALPHA8 : GL_LUMINANCE_ALPHA;
} }
} else { } else {
switch (tex->get_component_type()) { switch (component_type) {
case Texture::T_float: case Texture::T_float:
case Texture::T_half_float: case Texture::T_half_float:
return GL_RG16F; return GL_RG16F;
@ -10375,25 +10377,25 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
#ifndef OPENGLES_1 #ifndef OPENGLES_1
case Texture::F_r32i: case Texture::F_r32i:
if (Texture::is_unsigned(tex->get_component_type())) { if (Texture::is_unsigned(component_type)) {
return GL_R32UI; return GL_R32UI;
} else { } else {
return GL_R32I; return GL_R32I;
} }
case Texture::F_rg32i: case Texture::F_rg32i:
if (Texture::is_unsigned(tex->get_component_type())) { if (Texture::is_unsigned(component_type)) {
return GL_RG32UI; return GL_RG32UI;
} else { } else {
return GL_RG32I; return GL_RG32I;
} }
case Texture::F_rgb32i: case Texture::F_rgb32i:
if (Texture::is_unsigned(tex->get_component_type())) { if (Texture::is_unsigned(component_type)) {
return GL_RGB32UI; return GL_RGB32UI;
} else { } else {
return GL_RGB32I; return GL_RGB32I;
} }
case Texture::F_rgba32i: case Texture::F_rgba32i:
if (Texture::is_unsigned(tex->get_component_type())) { if (Texture::is_unsigned(component_type)) {
return GL_RGBA32UI; return GL_RGBA32UI;
} else { } else {
return GL_RGBA32I; return GL_RGBA32I;