mirror of
https://github.com/panda3d/panda3d.git
synced 2025-09-27 23:34:57 -04:00
texture: Add missing integer texture formats
This commit is contained in:
parent
3479c6eee2
commit
1fda6e7d51
@ -156,6 +156,18 @@ typedef char GLchar;
|
||||
#define GL_TEXTURE_MAX_LEVEL 0x813D
|
||||
#define GL_NUM_EXTENSIONS 0x821D
|
||||
#define GL_RG_INTEGER 0x8228
|
||||
#define GL_R8I 0x8231
|
||||
#define GL_R8UI 0x8232
|
||||
#define GL_R16I 0x8233
|
||||
#define GL_R16UI 0x8234
|
||||
#define GL_R32I 0x8235
|
||||
#define GL_R32UI 0x8236
|
||||
#define GL_RG8I 0x8237
|
||||
#define GL_RG8UI 0x8238
|
||||
#define GL_RG16I 0x8239
|
||||
#define GL_RG16UI 0x823A
|
||||
#define GL_RG32I 0x823B
|
||||
#define GL_RG32UI 0x823C
|
||||
#define GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257
|
||||
#define GL_PROGRAM_BINARY_LENGTH 0x8741
|
||||
#define GL_NUM_PROGRAM_BINARY_FORMATS 0x87FE
|
||||
@ -196,6 +208,18 @@ typedef char GLchar;
|
||||
#define GL_SRGB8 0x8C41
|
||||
#define GL_SRGB8_ALPHA8 0x8C43
|
||||
#define GL_PRIMITIVE_RESTART_FIXED_INDEX 0x8D69
|
||||
#define GL_RGBA32UI 0x8D70
|
||||
#define GL_RGB32UI 0x8D71
|
||||
#define GL_RGBA16UI 0x8D76
|
||||
#define GL_RGB16UI 0x8D77
|
||||
#define GL_RGBA8UI 0x8D7C
|
||||
#define GL_RGB8UI 0x8D7D
|
||||
#define GL_RGBA32I 0x8D82
|
||||
#define GL_RGB32I 0x8D83
|
||||
#define GL_RGBA16I 0x8D88
|
||||
#define GL_RGB16I 0x8D89
|
||||
#define GL_RGBA8I 0x8D8E
|
||||
#define GL_RGB8I 0x8D8F
|
||||
#define GL_RED_INTEGER 0x8D94
|
||||
#define GL_RGB_INTEGER 0x8D98
|
||||
#define GL_RGBA_INTEGER 0x8D99
|
||||
|
@ -9320,6 +9320,8 @@ get_external_image_format(Texture *tex) const {
|
||||
case Texture::F_rgba16:
|
||||
case Texture::F_rgba32:
|
||||
case Texture::F_rgba8i:
|
||||
case Texture::F_rgba16i:
|
||||
case Texture::F_rgba32i:
|
||||
case Texture::F_rgb10_a2:
|
||||
return GL_COMPRESSED_RGBA;
|
||||
|
||||
@ -9331,7 +9333,9 @@ get_external_image_format(Texture *tex) const {
|
||||
case Texture::F_rgb12:
|
||||
case Texture::F_rgb332:
|
||||
case Texture::F_rgb16:
|
||||
case Texture::F_rgb16i:
|
||||
case Texture::F_rgb32:
|
||||
case Texture::F_rgb32i:
|
||||
return GL_COMPRESSED_RGB;
|
||||
|
||||
case Texture::F_alpha:
|
||||
@ -9350,7 +9354,9 @@ get_external_image_format(Texture *tex) const {
|
||||
case Texture::F_rg:
|
||||
case Texture::F_rg8i:
|
||||
case Texture::F_rg16:
|
||||
case Texture::F_rg16i:
|
||||
case Texture::F_rg32:
|
||||
case Texture::F_rg32i:
|
||||
return GL_COMPRESSED_RG;
|
||||
|
||||
case Texture::F_luminance:
|
||||
@ -9605,10 +9611,16 @@ get_external_image_format(Texture *tex) const {
|
||||
case Texture::F_r32i:
|
||||
return GL_RED_INTEGER;
|
||||
case Texture::F_rg8i:
|
||||
case Texture::F_rg16i:
|
||||
case Texture::F_rg32i:
|
||||
return GL_RG_INTEGER;
|
||||
case Texture::F_rgb8i:
|
||||
case Texture::F_rgb16i:
|
||||
case Texture::F_rgb32i:
|
||||
return GL_RGB_INTEGER;
|
||||
case Texture::F_rgba8i:
|
||||
case Texture::F_rgba16i:
|
||||
case Texture::F_rgba32i:
|
||||
return GL_RGBA_INTEGER;
|
||||
#endif
|
||||
|
||||
@ -9660,7 +9672,13 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
|
||||
case Texture::F_rgb8i:
|
||||
case Texture::F_rgba8i:
|
||||
case Texture::F_r16i:
|
||||
case Texture::F_rg16i:
|
||||
case Texture::F_rgb16i:
|
||||
case Texture::F_rgba16i:
|
||||
case Texture::F_r32i:
|
||||
case Texture::F_rg32i:
|
||||
case Texture::F_rgb32i:
|
||||
case Texture::F_rgba32i:
|
||||
case Texture::F_r11_g11_b10:
|
||||
case Texture::F_rgb9_e5:
|
||||
// Unsupported; fall through to below.
|
||||
@ -10211,12 +10229,6 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
|
||||
} else {
|
||||
return GL_R16_SNORM;
|
||||
}
|
||||
case Texture::F_r16i:
|
||||
if (Texture::is_unsigned(tex->get_component_type())) {
|
||||
return GL_R16UI;
|
||||
} else {
|
||||
return GL_R16I;
|
||||
}
|
||||
case Texture::F_rg16:
|
||||
if (tex->get_component_type() == Texture::T_float) {
|
||||
return GL_RG16F;
|
||||
@ -10225,6 +10237,30 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
|
||||
} else {
|
||||
return GL_RG16_SNORM;
|
||||
}
|
||||
case Texture::F_r16i:
|
||||
if (Texture::is_unsigned(tex->get_component_type())) {
|
||||
return GL_R16UI;
|
||||
} else {
|
||||
return GL_R16I;
|
||||
}
|
||||
case Texture::F_rg16i:
|
||||
if (Texture::is_unsigned(tex->get_component_type())) {
|
||||
return GL_RG16UI;
|
||||
} else {
|
||||
return GL_RG16I;
|
||||
}
|
||||
case Texture::F_rgb16i:
|
||||
if (Texture::is_unsigned(tex->get_component_type())) {
|
||||
return GL_RGB16UI;
|
||||
} else {
|
||||
return GL_RGB16I;
|
||||
}
|
||||
case Texture::F_rgba16i:
|
||||
if (Texture::is_unsigned(tex->get_component_type())) {
|
||||
return GL_RGBA16UI;
|
||||
} else {
|
||||
return GL_RGBA16I;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef OPENGLES_1
|
||||
@ -10337,9 +10373,31 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
|
||||
return _core_profile ? GL_SRGB8_ALPHA8 : GL_SLUMINANCE8_ALPHA8;
|
||||
#endif
|
||||
|
||||
#ifndef OPENGLES
|
||||
#ifndef OPENGLES_1
|
||||
case Texture::F_r32i:
|
||||
return GL_R32I;
|
||||
if (Texture::is_unsigned(tex->get_component_type())) {
|
||||
return GL_R32UI;
|
||||
} else {
|
||||
return GL_R32I;
|
||||
}
|
||||
case Texture::F_rg32i:
|
||||
if (Texture::is_unsigned(tex->get_component_type())) {
|
||||
return GL_RG32UI;
|
||||
} else {
|
||||
return GL_RG32I;
|
||||
}
|
||||
case Texture::F_rgb32i:
|
||||
if (Texture::is_unsigned(tex->get_component_type())) {
|
||||
return GL_RGB32UI;
|
||||
} else {
|
||||
return GL_RGB32I;
|
||||
}
|
||||
case Texture::F_rgba32i:
|
||||
if (Texture::is_unsigned(tex->get_component_type())) {
|
||||
return GL_RGBA32UI;
|
||||
} else {
|
||||
return GL_RGBA32I;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef OPENGLES_1
|
||||
@ -13972,7 +14030,9 @@ do_extract_texture_data(CLP(TextureContext) *gtc) {
|
||||
case GL_R3_G3_B2:
|
||||
format = Texture::F_rgb332;
|
||||
break;
|
||||
#endif
|
||||
|
||||
#ifndef OPENGLES_1
|
||||
case GL_R8I:
|
||||
type = Texture::T_byte;
|
||||
format = Texture::F_r8i;
|
||||
@ -14011,11 +14071,69 @@ do_extract_texture_data(CLP(TextureContext) *gtc) {
|
||||
type = Texture::T_short;
|
||||
format = Texture::F_r16i;
|
||||
break;
|
||||
case GL_RG16I:
|
||||
type = Texture::T_short;
|
||||
format = Texture::F_rg16i;
|
||||
break;
|
||||
case GL_RGB16I:
|
||||
type = Texture::T_short;
|
||||
format = Texture::F_rgb16i;
|
||||
break;
|
||||
case GL_RGBA16I:
|
||||
type = Texture::T_short;
|
||||
format = Texture::F_rgba16i;
|
||||
break;
|
||||
|
||||
case GL_R16UI:
|
||||
type = Texture::T_unsigned_short;
|
||||
format = Texture::F_r16i;
|
||||
break;
|
||||
case GL_RG16UI:
|
||||
type = Texture::T_unsigned_short;
|
||||
format = Texture::F_rg16i;
|
||||
break;
|
||||
case GL_RGB16UI:
|
||||
type = Texture::T_unsigned_short;
|
||||
format = Texture::F_rgb16i;
|
||||
break;
|
||||
case GL_RGBA16UI:
|
||||
type = Texture::T_unsigned_short;
|
||||
format = Texture::F_rgba16i;
|
||||
break;
|
||||
|
||||
case GL_R32I:
|
||||
type = Texture::T_int;
|
||||
format = Texture::F_r32i;
|
||||
break;
|
||||
case GL_RG32I:
|
||||
type = Texture::T_int;
|
||||
format = Texture::F_rg32i;
|
||||
break;
|
||||
case GL_RGB32I:
|
||||
type = Texture::T_int;
|
||||
format = Texture::F_rgb32i;
|
||||
break;
|
||||
case GL_RGBA32I:
|
||||
type = Texture::T_int;
|
||||
format = Texture::F_rgba32i;
|
||||
break;
|
||||
|
||||
case GL_R32UI:
|
||||
type = Texture::T_unsigned_int;
|
||||
format = Texture::F_r32i;
|
||||
break;
|
||||
case GL_RG32UI:
|
||||
type = Texture::T_unsigned_int;
|
||||
format = Texture::F_rg32i;
|
||||
break;
|
||||
case GL_RGB32UI:
|
||||
type = Texture::T_unsigned_int;
|
||||
format = Texture::F_rgb32i;
|
||||
break;
|
||||
case GL_RGBA32UI:
|
||||
type = Texture::T_unsigned_int;
|
||||
format = Texture::F_rgba32i;
|
||||
break;
|
||||
#endif
|
||||
|
||||
#ifndef OPENGLES_1
|
||||
@ -14104,12 +14222,6 @@ do_extract_texture_data(CLP(TextureContext) *gtc) {
|
||||
format = Texture::F_red;
|
||||
break;
|
||||
#endif
|
||||
#ifndef OPENGLES
|
||||
case GL_R32I:
|
||||
type = Texture::T_int;
|
||||
format = Texture::F_r32i;
|
||||
break;
|
||||
#endif
|
||||
|
||||
#ifndef OPENGLES
|
||||
case GL_RED:
|
||||
|
@ -676,7 +676,7 @@ estimate_texture_memory() const {
|
||||
CDReader cdata(_cycler);
|
||||
size_t pixels = cdata->_x_size * cdata->_y_size * cdata->_z_size;
|
||||
|
||||
size_t bpp = 4;
|
||||
size_t bpp = 0;
|
||||
switch (cdata->_format) {
|
||||
case Texture::F_rgb332:
|
||||
bpp = 1;
|
||||
@ -739,10 +739,8 @@ estimate_texture_memory() const {
|
||||
bpp = 8;
|
||||
break;
|
||||
|
||||
case Texture::F_rgba16:
|
||||
bpp = 8;
|
||||
break;
|
||||
case Texture::F_rgba32:
|
||||
case Texture::F_rgba32i:
|
||||
bpp = 16;
|
||||
break;
|
||||
|
||||
@ -752,9 +750,13 @@ estimate_texture_memory() const {
|
||||
bpp = 2;
|
||||
break;
|
||||
case Texture::F_rg16:
|
||||
case Texture::F_rg16i:
|
||||
bpp = 4;
|
||||
break;
|
||||
case Texture::F_rgb16:
|
||||
case Texture::F_rgb16i:
|
||||
case Texture::F_rgba16:
|
||||
case Texture::F_rgba16i:
|
||||
bpp = 8;
|
||||
break;
|
||||
|
||||
@ -764,10 +766,12 @@ estimate_texture_memory() const {
|
||||
break;
|
||||
|
||||
case Texture::F_rg32:
|
||||
case Texture::F_rg32i:
|
||||
bpp = 8;
|
||||
break;
|
||||
|
||||
case Texture::F_rgb32:
|
||||
case Texture::F_rgb32i:
|
||||
bpp = 16;
|
||||
break;
|
||||
|
||||
@ -776,11 +780,12 @@ estimate_texture_memory() const {
|
||||
case Texture::F_rgb10_a2:
|
||||
bpp = 4;
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
if (bpp == 0) {
|
||||
bpp = 4;
|
||||
gobj_cat.warning() << "Unhandled format in estimate_texture_memory(): "
|
||||
<< cdata->_format << "\n";
|
||||
break;
|
||||
}
|
||||
|
||||
size_t bytes = pixels * bpp;
|
||||
@ -1789,10 +1794,6 @@ write(ostream &out, int indent_level) const {
|
||||
case F_r16:
|
||||
out << "r16";
|
||||
break;
|
||||
case F_r16i:
|
||||
out << "r16i";
|
||||
break;
|
||||
|
||||
case F_rg16:
|
||||
out << "rg16";
|
||||
break;
|
||||
@ -1852,6 +1853,29 @@ write(ostream &out, int indent_level) const {
|
||||
case F_rg:
|
||||
out << "rg";
|
||||
break;
|
||||
|
||||
case F_r16i:
|
||||
out << "r16i";
|
||||
break;
|
||||
case F_rg16i:
|
||||
out << "rg16i";
|
||||
break;
|
||||
case F_rgb16i:
|
||||
out << "rgb16i";
|
||||
break;
|
||||
case F_rgba16i:
|
||||
out << "rgba16i";
|
||||
break;
|
||||
|
||||
case F_rg32i:
|
||||
out << "rg32i";
|
||||
break;
|
||||
case F_rgb32i:
|
||||
out << "rgb32i";
|
||||
break;
|
||||
case F_rgba32i:
|
||||
out << "rgba32i";
|
||||
break;
|
||||
}
|
||||
|
||||
if (cdata->_compression != CM_default) {
|
||||
@ -2217,8 +2241,6 @@ format_format(Format format) {
|
||||
return "rgba32";
|
||||
case F_r16:
|
||||
return "r16";
|
||||
case F_r16i:
|
||||
return "r16i";
|
||||
case F_rg16:
|
||||
return "rg16";
|
||||
case F_rgb16:
|
||||
@ -2255,6 +2277,20 @@ format_format(Format format) {
|
||||
return "rgb10_a2";
|
||||
case F_rg:
|
||||
return "rg";
|
||||
case F_r16i:
|
||||
return "r16i";
|
||||
case F_rg16i:
|
||||
return "rg16i";
|
||||
case F_rgb16i:
|
||||
return "rgb16i";
|
||||
case F_rgba16i:
|
||||
return "rgba16i";
|
||||
case F_rg32i:
|
||||
return "rg32i";
|
||||
case F_rgb32i:
|
||||
return "rgb32i";
|
||||
case F_rgba32i:
|
||||
return "rgba32i";
|
||||
}
|
||||
return "**invalid**";
|
||||
}
|
||||
@ -2340,6 +2376,14 @@ string_format(const string &str) {
|
||||
return F_rg32;
|
||||
} else if (cmp_nocase(str, "rgb32") == 0 || cmp_nocase(str, "r32g32b32") == 0) {
|
||||
return F_rgb32;
|
||||
} else if (cmp_nocase_uh(str, "r8i") == 0) {
|
||||
return F_r8i;
|
||||
} else if (cmp_nocase_uh(str, "rg8i") == 0 || cmp_nocase_uh(str, "r8g8i") == 0) {
|
||||
return F_rg8i;
|
||||
} else if (cmp_nocase_uh(str, "rgb8i") == 0 || cmp_nocase_uh(str, "r8g8b8i") == 0) {
|
||||
return F_rgb8i;
|
||||
} else if (cmp_nocase_uh(str, "rgba8i") == 0 || cmp_nocase_uh(str, "r8g8b8a8i") == 0) {
|
||||
return F_rgba8i;
|
||||
} else if (cmp_nocase(str, "r11g11b10") == 0) {
|
||||
return F_r11_g11_b10;
|
||||
} else if (cmp_nocase(str, "rgb9_e5") == 0) {
|
||||
@ -2348,6 +2392,20 @@ string_format(const string &str) {
|
||||
return F_rgb10_a2;
|
||||
} else if (cmp_nocase_uh(str, "rg") == 0) {
|
||||
return F_rg;
|
||||
} else if (cmp_nocase_uh(str, "r16i") == 0) {
|
||||
return F_r16i;
|
||||
} else if (cmp_nocase_uh(str, "rg16i") == 0 || cmp_nocase_uh(str, "r16g16i") == 0) {
|
||||
return F_rg16i;
|
||||
} else if (cmp_nocase_uh(str, "rgb16i") == 0 || cmp_nocase_uh(str, "r16g16b16i") == 0) {
|
||||
return F_rgb16i;
|
||||
} else if (cmp_nocase_uh(str, "rgba16i") == 0 || cmp_nocase_uh(str, "r16g16b16a16i") == 0) {
|
||||
return F_rgba16i;
|
||||
} else if (cmp_nocase_uh(str, "rg32i") == 0 || cmp_nocase_uh(str, "r32g32i") == 0) {
|
||||
return F_rg32i;
|
||||
} else if (cmp_nocase_uh(str, "rgb32i") == 0 || cmp_nocase_uh(str, "r32g32b32i") == 0) {
|
||||
return F_rgb32i;
|
||||
} else if (cmp_nocase_uh(str, "rgba32i") == 0 || cmp_nocase_uh(str, "r32g32b32a32i") == 0) {
|
||||
return F_rgba32i;
|
||||
}
|
||||
|
||||
gobj_cat->error()
|
||||
@ -2588,6 +2646,8 @@ has_alpha(Format format) {
|
||||
case F_sluminance_alpha:
|
||||
case F_rgba8i:
|
||||
case F_rgb10_a2:
|
||||
case F_rgba16i:
|
||||
case F_rgba32i:
|
||||
return true;
|
||||
|
||||
default:
|
||||
@ -2640,6 +2700,12 @@ is_integer(Format format) {
|
||||
case F_rgb8i:
|
||||
case F_rgba8i:
|
||||
case F_r16i:
|
||||
case F_rg16i:
|
||||
case F_rgb16i:
|
||||
case F_rgba16i:
|
||||
case F_rg32i:
|
||||
case F_rgb32i:
|
||||
case F_rgba32i:
|
||||
return true;
|
||||
|
||||
default:
|
||||
@ -3693,11 +3759,31 @@ do_read_dds(CData *cdata, istream &in, const string &filename, bool header_only)
|
||||
component_type = T_unsigned_short;
|
||||
func = read_dds_level_abgr16;
|
||||
break;
|
||||
case 12: // DXGI_FORMAT_R16G16B16A16_UINT
|
||||
format = F_rgba16i;
|
||||
component_type = T_unsigned_short;
|
||||
func = read_dds_level_abgr16;
|
||||
break;
|
||||
case 14: // DXGI_FORMAT_R16G16B16A16_SINT
|
||||
format = F_rgba16i;
|
||||
component_type = T_short;
|
||||
func = read_dds_level_abgr16;
|
||||
break;
|
||||
case 16: // DXGI_FORMAT_R32G32_FLOAT
|
||||
format = F_rg32;
|
||||
component_type = T_float;
|
||||
func = read_dds_level_raw;
|
||||
break;
|
||||
case 17: // DXGI_FORMAT_R32G32_UINT
|
||||
format = F_rg32i;
|
||||
component_type = T_unsigned_int;
|
||||
func = read_dds_level_raw;
|
||||
break;
|
||||
case 18: // DXGI_FORMAT_R32G32_SINT
|
||||
format = F_rg32i;
|
||||
component_type = T_int;
|
||||
func = read_dds_level_raw;
|
||||
break;
|
||||
case 27: // DXGI_FORMAT_R8G8B8A8_TYPELESS
|
||||
case 28: // DXGI_FORMAT_R8G8B8A8_UNORM
|
||||
format = F_rgba8;
|
||||
@ -3731,11 +3817,21 @@ do_read_dds(CData *cdata, istream &in, const string &filename, bool header_only)
|
||||
component_type = T_unsigned_short;
|
||||
func = read_dds_level_raw;
|
||||
break;
|
||||
case 36: // DXGI_FORMAT_R16G16_UINT:
|
||||
format = F_rg16i;
|
||||
component_type = T_unsigned_short;
|
||||
func = read_dds_level_raw;
|
||||
break;
|
||||
case 37: // DXGI_FORMAT_R16G16_SNORM:
|
||||
format = F_rg16;
|
||||
component_type = T_short;
|
||||
func = read_dds_level_raw;
|
||||
break;
|
||||
case 38: // DXGI_FORMAT_R16G16_SINT:
|
||||
format = F_rg16i;
|
||||
component_type = T_short;
|
||||
func = read_dds_level_raw;
|
||||
break;
|
||||
case 40: // DXGI_FORMAT_D32_FLOAT
|
||||
format = F_depth_component32;
|
||||
component_type = T_float;
|
||||
@ -4630,8 +4726,12 @@ do_read_ktx(CData *cdata, istream &in, const string &filename, bool header_only)
|
||||
break;
|
||||
case KTX_RG16I:
|
||||
case KTX_RG16UI:
|
||||
format = F_rg16i;
|
||||
break;
|
||||
case KTX_RG32I:
|
||||
case KTX_RG32UI:
|
||||
format = F_rg32i;
|
||||
break;
|
||||
default:
|
||||
gobj_cat.error()
|
||||
<< filename << " has unsupported RG integer format " << internal_format << "\n";
|
||||
@ -4695,8 +4795,12 @@ do_read_ktx(CData *cdata, istream &in, const string &filename, bool header_only)
|
||||
break;
|
||||
case KTX_RGB16I:
|
||||
case KTX_RGB16UI:
|
||||
format = F_rgb16i;
|
||||
break;
|
||||
case KTX_RGB32I:
|
||||
case KTX_RGB32UI:
|
||||
format = F_rgb32i;
|
||||
break;
|
||||
default:
|
||||
gobj_cat.error()
|
||||
<< filename << " has unsupported RGB integer format " << internal_format << "\n";
|
||||
@ -4758,8 +4862,12 @@ do_read_ktx(CData *cdata, istream &in, const string &filename, bool header_only)
|
||||
break;
|
||||
case KTX_RGBA16I:
|
||||
case KTX_RGBA16UI:
|
||||
format = F_rgba16i;
|
||||
break;
|
||||
case KTX_RGBA32I:
|
||||
case KTX_RGBA32UI:
|
||||
format = F_rgba32i;
|
||||
break;
|
||||
default:
|
||||
gobj_cat.error()
|
||||
<< filename << " has unsupported RGBA integer format " << internal_format << "\n";
|
||||
@ -6896,6 +7004,8 @@ do_set_format(CData *cdata, Texture::Format format) {
|
||||
case F_rg32:
|
||||
case F_rg8i:
|
||||
case F_rg:
|
||||
case F_rg16i:
|
||||
case F_rg32i:
|
||||
cdata->_num_components = 2;
|
||||
break;
|
||||
|
||||
@ -6910,6 +7020,8 @@ do_set_format(CData *cdata, Texture::Format format) {
|
||||
case F_rgb8i:
|
||||
case F_r11_g11_b10:
|
||||
case F_rgb9_e5:
|
||||
case F_rgb16i:
|
||||
case F_rgb32i:
|
||||
cdata->_num_components = 3;
|
||||
break;
|
||||
|
||||
@ -6924,6 +7036,8 @@ do_set_format(CData *cdata, Texture::Format format) {
|
||||
case F_srgb_alpha:
|
||||
case F_rgba8i:
|
||||
case F_rgb10_a2:
|
||||
case F_rgba16i:
|
||||
case F_rgba32i:
|
||||
cdata->_num_components = 4;
|
||||
break;
|
||||
}
|
||||
|
@ -161,7 +161,15 @@ PUBLISHED:
|
||||
F_rgb10_a2,
|
||||
|
||||
F_rg,
|
||||
F_r16i
|
||||
|
||||
F_r16i,
|
||||
F_rg16i,
|
||||
F_rgb16i, // not recommended
|
||||
F_rgba16i,
|
||||
|
||||
F_rg32i,
|
||||
F_rgb32i,
|
||||
F_rgba32i,
|
||||
};
|
||||
|
||||
// Deprecated. See SamplerState.FilterType.
|
||||
|
@ -114,6 +114,7 @@ TexturePeeker(Texture *tex, Texture::CData *cdata) {
|
||||
case Texture::F_r16:
|
||||
case Texture::F_r32:
|
||||
case Texture::F_r32i:
|
||||
case Texture::F_r16i:
|
||||
_get_texel = get_texel_r;
|
||||
break;
|
||||
|
||||
@ -140,21 +141,27 @@ TexturePeeker(Texture *tex, Texture::CData *cdata) {
|
||||
_get_texel = get_texel_la;
|
||||
break;
|
||||
|
||||
case Texture::F_rg16:
|
||||
case Texture::F_rg32:
|
||||
case Texture::F_rg:
|
||||
case Texture::F_rg8i:
|
||||
case Texture::F_rg16:
|
||||
case Texture::F_rg16i:
|
||||
case Texture::F_rg32:
|
||||
case Texture::F_rg32i:
|
||||
_get_texel = get_texel_rg;
|
||||
break;
|
||||
|
||||
case Texture::F_rgb:
|
||||
case Texture::F_rgb5:
|
||||
case Texture::F_rgb8:
|
||||
case Texture::F_rgb8i:
|
||||
case Texture::F_rgb12:
|
||||
case Texture::F_rgb16:
|
||||
case Texture::F_rgb16i:
|
||||
case Texture::F_rgb332:
|
||||
case Texture::F_r11_g11_b10:
|
||||
case Texture::F_rgb9_e5:
|
||||
case Texture::F_rgb32:
|
||||
case Texture::F_rgb32i:
|
||||
_get_texel = get_texel_rgb;
|
||||
break;
|
||||
|
||||
@ -163,9 +170,12 @@ TexturePeeker(Texture *tex, Texture::CData *cdata) {
|
||||
case Texture::F_rgba4:
|
||||
case Texture::F_rgba5:
|
||||
case Texture::F_rgba8:
|
||||
case Texture::F_rgba8i:
|
||||
case Texture::F_rgba12:
|
||||
case Texture::F_rgba16:
|
||||
case Texture::F_rgba16i:
|
||||
case Texture::F_rgba32:
|
||||
case Texture::F_rgba32i:
|
||||
case Texture::F_rgb10_a2:
|
||||
_get_texel = get_texel_rgba;
|
||||
break;
|
||||
|
Loading…
x
Reference in New Issue
Block a user