forked from Mirrorlandia_minetest/irrlicht
Rip out compressed color formats
This commit is contained in:
parent
edc678f995
commit
8f44270e4a
@ -121,21 +121,6 @@ namespace video
|
|||||||
//! Support for texture coord transformation via texture matrix
|
//! Support for texture coord transformation via texture matrix
|
||||||
EVDF_TEXTURE_MATRIX,
|
EVDF_TEXTURE_MATRIX,
|
||||||
|
|
||||||
//! Support for DXTn compressed textures.
|
|
||||||
EVDF_TEXTURE_COMPRESSED_DXT,
|
|
||||||
|
|
||||||
//! Support for PVRTC compressed textures.
|
|
||||||
EVDF_TEXTURE_COMPRESSED_PVRTC,
|
|
||||||
|
|
||||||
//! Support for PVRTC2 compressed textures.
|
|
||||||
EVDF_TEXTURE_COMPRESSED_PVRTC2,
|
|
||||||
|
|
||||||
//! Support for ETC1 compressed textures.
|
|
||||||
EVDF_TEXTURE_COMPRESSED_ETC1,
|
|
||||||
|
|
||||||
//! Support for ETC2 compressed textures.
|
|
||||||
EVDF_TEXTURE_COMPRESSED_ETC2,
|
|
||||||
|
|
||||||
//! Support for cube map textures.
|
//! Support for cube map textures.
|
||||||
EVDF_TEXTURE_CUBEMAP,
|
EVDF_TEXTURE_CUBEMAP,
|
||||||
|
|
||||||
|
103
include/IImage.h
103
include/IImage.h
@ -362,28 +362,6 @@ public:
|
|||||||
return 24;
|
return 24;
|
||||||
case ECF_A8R8G8B8:
|
case ECF_A8R8G8B8:
|
||||||
return 32;
|
return 32;
|
||||||
case ECF_DXT1:
|
|
||||||
return 16;
|
|
||||||
case ECF_DXT2:
|
|
||||||
case ECF_DXT3:
|
|
||||||
case ECF_DXT4:
|
|
||||||
case ECF_DXT5:
|
|
||||||
return 32;
|
|
||||||
case ECF_PVRTC_RGB2:
|
|
||||||
return 12;
|
|
||||||
case ECF_PVRTC_ARGB2:
|
|
||||||
case ECF_PVRTC2_ARGB2:
|
|
||||||
return 16;
|
|
||||||
case ECF_PVRTC_RGB4:
|
|
||||||
return 24;
|
|
||||||
case ECF_PVRTC_ARGB4:
|
|
||||||
case ECF_PVRTC2_ARGB4:
|
|
||||||
return 32;
|
|
||||||
case ECF_ETC1:
|
|
||||||
case ECF_ETC2_RGB:
|
|
||||||
return 24;
|
|
||||||
case ECF_ETC2_ARGB:
|
|
||||||
return 32;
|
|
||||||
case ECF_D16:
|
case ECF_D16:
|
||||||
return 16;
|
return 16;
|
||||||
case ECF_D32:
|
case ECF_D32:
|
||||||
@ -418,74 +396,17 @@ public:
|
|||||||
//! calculate image data size in bytes for selected format, width and height.
|
//! calculate image data size in bytes for selected format, width and height.
|
||||||
static u32 getDataSizeFromFormat(ECOLOR_FORMAT format, u32 width, u32 height)
|
static u32 getDataSizeFromFormat(ECOLOR_FORMAT format, u32 width, u32 height)
|
||||||
{
|
{
|
||||||
u32 imageSize = 0;
|
// non-compressed formats
|
||||||
|
u32 imageSize = getBitsPerPixelFromFormat(format) / 8 * width;
|
||||||
switch (format)
|
imageSize *= height;
|
||||||
{
|
|
||||||
case ECF_DXT1:
|
|
||||||
imageSize = ((width + 3) / 4) * ((height + 3) / 4) * 8;
|
|
||||||
break;
|
|
||||||
case ECF_DXT2:
|
|
||||||
case ECF_DXT3:
|
|
||||||
case ECF_DXT4:
|
|
||||||
case ECF_DXT5:
|
|
||||||
imageSize = ((width + 3) / 4) * ((height + 3) / 4) * 16;
|
|
||||||
break;
|
|
||||||
case ECF_PVRTC_RGB2:
|
|
||||||
case ECF_PVRTC_ARGB2:
|
|
||||||
imageSize = (core::max_<u32>(width, 16) * core::max_<u32>(height, 8) * 2 + 7) / 8;
|
|
||||||
break;
|
|
||||||
case ECF_PVRTC_RGB4:
|
|
||||||
case ECF_PVRTC_ARGB4:
|
|
||||||
imageSize = (core::max_<u32>(width, 8) * core::max_<u32>(height, 8) * 4 + 7) / 8;
|
|
||||||
break;
|
|
||||||
case ECF_PVRTC2_ARGB2:
|
|
||||||
imageSize = core::ceil32(width / 8.0f) * core::ceil32(height / 4.0f) * 8;
|
|
||||||
break;
|
|
||||||
case ECF_PVRTC2_ARGB4:
|
|
||||||
case ECF_ETC1:
|
|
||||||
case ECF_ETC2_RGB:
|
|
||||||
imageSize = core::ceil32(width / 4.0f) * core::ceil32(height / 4.0f) * 8;
|
|
||||||
break;
|
|
||||||
case ECF_ETC2_ARGB:
|
|
||||||
imageSize = core::ceil32(width / 4.0f) * core::ceil32(height / 4.0f) * 16;
|
|
||||||
break;
|
|
||||||
default: // uncompressed formats
|
|
||||||
imageSize = getBitsPerPixelFromFormat(format) / 8 * width;
|
|
||||||
imageSize *= height;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return imageSize;
|
return imageSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Define to check for all compressed image formats cases in a switch
|
|
||||||
#define IRR_CASE_IIMAGE_COMPRESSED_FORMAT\
|
|
||||||
case ECF_DXT1:\
|
|
||||||
case ECF_DXT2:\
|
|
||||||
case ECF_DXT3:\
|
|
||||||
case ECF_DXT4:\
|
|
||||||
case ECF_DXT5:\
|
|
||||||
case ECF_PVRTC_RGB2:\
|
|
||||||
case ECF_PVRTC_ARGB2:\
|
|
||||||
case ECF_PVRTC2_ARGB2:\
|
|
||||||
case ECF_PVRTC_RGB4:\
|
|
||||||
case ECF_PVRTC_ARGB4:\
|
|
||||||
case ECF_PVRTC2_ARGB4:\
|
|
||||||
case ECF_ETC1:\
|
|
||||||
case ECF_ETC2_RGB:\
|
|
||||||
case ECF_ETC2_ARGB:
|
|
||||||
|
|
||||||
//! check if this is compressed color format
|
//! check if this is compressed color format
|
||||||
static bool isCompressedFormat(const ECOLOR_FORMAT format)
|
static bool isCompressedFormat(const ECOLOR_FORMAT format)
|
||||||
{
|
{
|
||||||
switch(format)
|
return false;
|
||||||
{
|
|
||||||
IRR_CASE_IIMAGE_COMPRESSED_FORMAT
|
|
||||||
return true;
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//! check if the color format is only viable for depth/stencil textures
|
//! check if the color format is only viable for depth/stencil textures
|
||||||
@ -523,22 +444,6 @@ public:
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(PATCH_SUPERTUX_8_0_1_with_1_9_0)
|
|
||||||
static bool isRenderTargetOnlyFormat(const ECOLOR_FORMAT format)
|
|
||||||
{
|
|
||||||
switch (format)
|
|
||||||
{
|
|
||||||
case ECF_A1R5G5B5:
|
|
||||||
case ECF_R5G6B5:
|
|
||||||
case ECF_R8G8B8:
|
|
||||||
case ECF_A8R8G8B8:
|
|
||||||
return false;
|
|
||||||
default:
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
ECOLOR_FORMAT Format;
|
ECOLOR_FORMAT Format;
|
||||||
core::dimension2d<u32> Size;
|
core::dimension2d<u32> Size;
|
||||||
|
@ -292,11 +292,6 @@ public:
|
|||||||
{
|
{
|
||||||
case ECF_A8R8G8B8:
|
case ECF_A8R8G8B8:
|
||||||
case ECF_A1R5G5B5:
|
case ECF_A1R5G5B5:
|
||||||
case ECF_DXT1:
|
|
||||||
case ECF_DXT2:
|
|
||||||
case ECF_DXT3:
|
|
||||||
case ECF_DXT4:
|
|
||||||
case ECF_DXT5:
|
|
||||||
case ECF_A16B16G16R16F:
|
case ECF_A16B16G16R16F:
|
||||||
case ECF_A32B32G32R32F:
|
case ECF_A32B32G32R32F:
|
||||||
status = true;
|
status = true;
|
||||||
|
@ -37,50 +37,6 @@ namespace video
|
|||||||
//! Warning: This tends to be BGRA in memory (it's ARGB on file, but with usual big-endian memory it's flipped)
|
//! Warning: This tends to be BGRA in memory (it's ARGB on file, but with usual big-endian memory it's flipped)
|
||||||
ECF_A8R8G8B8,
|
ECF_A8R8G8B8,
|
||||||
|
|
||||||
/** Compressed image formats. **/
|
|
||||||
|
|
||||||
//! DXT1 color format.
|
|
||||||
ECF_DXT1,
|
|
||||||
|
|
||||||
//! DXT2 color format.
|
|
||||||
ECF_DXT2,
|
|
||||||
|
|
||||||
//! DXT3 color format.
|
|
||||||
ECF_DXT3,
|
|
||||||
|
|
||||||
//! DXT4 color format.
|
|
||||||
ECF_DXT4,
|
|
||||||
|
|
||||||
//! DXT5 color format.
|
|
||||||
ECF_DXT5,
|
|
||||||
|
|
||||||
//! PVRTC RGB 2bpp.
|
|
||||||
ECF_PVRTC_RGB2,
|
|
||||||
|
|
||||||
//! PVRTC ARGB 2bpp.
|
|
||||||
ECF_PVRTC_ARGB2,
|
|
||||||
|
|
||||||
//! PVRTC RGB 4bpp.
|
|
||||||
ECF_PVRTC_RGB4,
|
|
||||||
|
|
||||||
//! PVRTC ARGB 4bpp.
|
|
||||||
ECF_PVRTC_ARGB4,
|
|
||||||
|
|
||||||
//! PVRTC2 ARGB 2bpp.
|
|
||||||
ECF_PVRTC2_ARGB2,
|
|
||||||
|
|
||||||
//! PVRTC2 ARGB 4bpp.
|
|
||||||
ECF_PVRTC2_ARGB4,
|
|
||||||
|
|
||||||
//! ETC1 RGB.
|
|
||||||
ECF_ETC1,
|
|
||||||
|
|
||||||
//! ETC2 RGB.
|
|
||||||
ECF_ETC2_RGB,
|
|
||||||
|
|
||||||
//! ETC2 ARGB.
|
|
||||||
ECF_ETC2_ARGB,
|
|
||||||
|
|
||||||
/** The following formats may only be used for render target textures. */
|
/** The following formats may only be used for render target textures. */
|
||||||
|
|
||||||
/** Floating point formats. */
|
/** Floating point formats. */
|
||||||
@ -139,20 +95,6 @@ namespace video
|
|||||||
"R5G6B5",
|
"R5G6B5",
|
||||||
"R8G8B8",
|
"R8G8B8",
|
||||||
"A8R8G8B8",
|
"A8R8G8B8",
|
||||||
"DXT1",
|
|
||||||
"DXT2",
|
|
||||||
"DXT3",
|
|
||||||
"DXT4",
|
|
||||||
"DXT5",
|
|
||||||
"PVRTC_RGB2",
|
|
||||||
"PVRTC_ARGB2",
|
|
||||||
"PVRTC_RGB4",
|
|
||||||
"PVRTC_ARGB4",
|
|
||||||
"PVRTC2_ARGB2",
|
|
||||||
"PVRTC2_ARGB4",
|
|
||||||
"ETC1",
|
|
||||||
"ETC2_RGB",
|
|
||||||
"ETC2_ARGB",
|
|
||||||
"R16F",
|
"R16F",
|
||||||
"G16R16F",
|
"G16R16F",
|
||||||
"A16B16G16R16F",
|
"A16B16G16R16F",
|
||||||
|
@ -757,9 +757,6 @@ void CColorConverter::convert_viaFormat(const void* sP, ECOLOR_FORMAT sF, s32 sN
|
|||||||
case ECF_R8G8B8:
|
case ECF_R8G8B8:
|
||||||
convert_A1R5G5B5toR8G8B8(sP, sN, dP);
|
convert_A1R5G5B5toR8G8B8(sP, sN, dP);
|
||||||
break;
|
break;
|
||||||
IRR_CASE_IIMAGE_COMPRESSED_FORMAT
|
|
||||||
os::Printer::log("CColorConverter::convert_viaFormat method doesn't support compressed images.", ELL_WARNING);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@ -780,9 +777,6 @@ void CColorConverter::convert_viaFormat(const void* sP, ECOLOR_FORMAT sF, s32 sN
|
|||||||
case ECF_R8G8B8:
|
case ECF_R8G8B8:
|
||||||
convert_R5G6B5toR8G8B8(sP, sN, dP);
|
convert_R5G6B5toR8G8B8(sP, sN, dP);
|
||||||
break;
|
break;
|
||||||
IRR_CASE_IIMAGE_COMPRESSED_FORMAT
|
|
||||||
os::Printer::log("CColorConverter::convert_viaFormat method doesn't support compressed images.", ELL_WARNING);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@ -803,9 +797,6 @@ void CColorConverter::convert_viaFormat(const void* sP, ECOLOR_FORMAT sF, s32 sN
|
|||||||
case ECF_R8G8B8:
|
case ECF_R8G8B8:
|
||||||
convert_A8R8G8B8toR8G8B8(sP, sN, dP);
|
convert_A8R8G8B8toR8G8B8(sP, sN, dP);
|
||||||
break;
|
break;
|
||||||
IRR_CASE_IIMAGE_COMPRESSED_FORMAT
|
|
||||||
os::Printer::log("CColorConverter::convert_viaFormat method doesn't support compressed images.", ELL_WARNING);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@ -826,17 +817,11 @@ void CColorConverter::convert_viaFormat(const void* sP, ECOLOR_FORMAT sF, s32 sN
|
|||||||
case ECF_R8G8B8:
|
case ECF_R8G8B8:
|
||||||
convert_R8G8B8toR8G8B8(sP, sN, dP);
|
convert_R8G8B8toR8G8B8(sP, sN, dP);
|
||||||
break;
|
break;
|
||||||
IRR_CASE_IIMAGE_COMPRESSED_FORMAT
|
|
||||||
os::Printer::log("CColorConverter::convert_viaFormat method doesn't support compressed images.", ELL_WARNING);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
IRR_CASE_IIMAGE_COMPRESSED_FORMAT
|
|
||||||
os::Printer::log("CColorConverter::convert_viaFormat method doesn't support compressed images.", ELL_WARNING);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -75,10 +75,6 @@ void CImage::setPixel(u32 x, u32 y, const SColor &color, bool blend)
|
|||||||
*dest = blend ? PixelBlend32 ( *dest, color.color ) : color.color;
|
*dest = blend ? PixelBlend32 ( *dest, color.color ) : color.color;
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
IRR_CASE_IIMAGE_COMPRESSED_FORMAT
|
|
||||||
os::Printer::log("IImage::setPixel method doesn't work with compressed images.", ELL_WARNING);
|
|
||||||
return;
|
|
||||||
|
|
||||||
case ECF_UNKNOWN:
|
case ECF_UNKNOWN:
|
||||||
os::Printer::log("IImage::setPixel unknown format.", ELL_WARNING);
|
os::Printer::log("IImage::setPixel unknown format.", ELL_WARNING);
|
||||||
return;
|
return;
|
||||||
@ -109,10 +105,6 @@ SColor CImage::getPixel(u32 x, u32 y) const
|
|||||||
return SColor(255,p[0],p[1],p[2]);
|
return SColor(255,p[0],p[1],p[2]);
|
||||||
}
|
}
|
||||||
|
|
||||||
IRR_CASE_IIMAGE_COMPRESSED_FORMAT
|
|
||||||
os::Printer::log("IImage::getPixel method doesn't work with compressed images.", ELL_WARNING);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ECF_UNKNOWN:
|
case ECF_UNKNOWN:
|
||||||
os::Printer::log("IImage::getPixel unknown format.", ELL_WARNING);
|
os::Printer::log("IImage::getPixel unknown format.", ELL_WARNING);
|
||||||
break;
|
break;
|
||||||
|
@ -1001,68 +1001,6 @@ bool CNullDriver::checkPrimitiveCount(u32 prmCount) const
|
|||||||
|
|
||||||
bool CNullDriver::checkImage(IImage *image) const
|
bool CNullDriver::checkImage(IImage *image) const
|
||||||
{
|
{
|
||||||
ECOLOR_FORMAT format = image->getColorFormat();
|
|
||||||
core::dimension2d<u32> size = image->getDimension();
|
|
||||||
|
|
||||||
switch (format)
|
|
||||||
{
|
|
||||||
case ECF_DXT1:
|
|
||||||
case ECF_DXT2:
|
|
||||||
case ECF_DXT3:
|
|
||||||
case ECF_DXT4:
|
|
||||||
case ECF_DXT5:
|
|
||||||
if (!queryFeature(EVDF_TEXTURE_COMPRESSED_DXT))
|
|
||||||
{
|
|
||||||
os::Printer::log("DXT texture compression not available.", ELL_ERROR);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
else if (size.getOptimalSize(true, false) != size)
|
|
||||||
{
|
|
||||||
os::Printer::log("Invalid size of image for DXT texture, size of image must be power of two.", ELL_ERROR);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case ECF_PVRTC_RGB2:
|
|
||||||
case ECF_PVRTC_ARGB2:
|
|
||||||
case ECF_PVRTC_RGB4:
|
|
||||||
case ECF_PVRTC_ARGB4:
|
|
||||||
if (!queryFeature(EVDF_TEXTURE_COMPRESSED_PVRTC))
|
|
||||||
{
|
|
||||||
os::Printer::log("PVRTC texture compression not available.", ELL_ERROR);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
else if (size.getOptimalSize(true, false) != size)
|
|
||||||
{
|
|
||||||
os::Printer::log("Invalid size of image for PVRTC compressed texture, size of image must be power of two and squared.", ELL_ERROR);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case ECF_PVRTC2_ARGB2:
|
|
||||||
case ECF_PVRTC2_ARGB4:
|
|
||||||
if (!queryFeature(EVDF_TEXTURE_COMPRESSED_PVRTC2))
|
|
||||||
{
|
|
||||||
os::Printer::log("PVRTC2 texture compression not available.", ELL_ERROR);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case ECF_ETC1:
|
|
||||||
if (!queryFeature(EVDF_TEXTURE_COMPRESSED_ETC1))
|
|
||||||
{
|
|
||||||
os::Printer::log("ETC1 texture compression not available.", ELL_ERROR);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case ECF_ETC2_RGB:
|
|
||||||
case ECF_ETC2_ARGB:
|
|
||||||
if (!queryFeature(EVDF_TEXTURE_COMPRESSED_ETC2))
|
|
||||||
{
|
|
||||||
os::Printer::log("ETC2 texture compression not available.", ELL_ERROR);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2533,92 +2533,6 @@ COGLES2Driver::~COGLES2Driver()
|
|||||||
}
|
}
|
||||||
pixelType = GL_UNSIGNED_BYTE;
|
pixelType = GL_UNSIGNED_BYTE;
|
||||||
break;
|
break;
|
||||||
#ifdef GL_EXT_texture_compression_s3tc
|
|
||||||
case ECF_DXT1:
|
|
||||||
supported = true;
|
|
||||||
pixelFormat = GL_RGBA;
|
|
||||||
pixelType = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT;
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#ifdef GL_EXT_texture_compression_s3tc
|
|
||||||
case ECF_DXT2:
|
|
||||||
case ECF_DXT3:
|
|
||||||
supported = true;
|
|
||||||
pixelFormat = GL_RGBA;
|
|
||||||
pixelType = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT;
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#ifdef GL_EXT_texture_compression_s3tc
|
|
||||||
case ECF_DXT4:
|
|
||||||
case ECF_DXT5:
|
|
||||||
supported = true;
|
|
||||||
pixelFormat = GL_RGBA;
|
|
||||||
pixelType = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT;
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#ifdef GL_IMG_texture_compression_pvrtc
|
|
||||||
case ECF_PVRTC_RGB2:
|
|
||||||
supported = true;
|
|
||||||
pixelFormat = GL_RGB;
|
|
||||||
pixelType = GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG;
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#ifdef GL_IMG_texture_compression_pvrtc
|
|
||||||
case ECF_PVRTC_ARGB2:
|
|
||||||
supported = true;
|
|
||||||
pixelFormat = GL_RGBA;
|
|
||||||
pixelType = GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#ifdef GL_IMG_texture_compression_pvrtc
|
|
||||||
case ECF_PVRTC_RGB4:
|
|
||||||
supported = true;
|
|
||||||
pixelFormat = GL_RGB;
|
|
||||||
pixelType = GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG;
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#ifdef GL_IMG_texture_compression_pvrtc
|
|
||||||
case ECF_PVRTC_ARGB4:
|
|
||||||
supported = true;
|
|
||||||
pixelFormat = GL_RGBA;
|
|
||||||
pixelType = GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#ifdef GL_IMG_texture_compression_pvrtc2
|
|
||||||
case ECF_PVRTC2_ARGB2:
|
|
||||||
supported = true;
|
|
||||||
pixelFormat = GL_RGBA;
|
|
||||||
pixelType = GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG;
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#ifdef GL_IMG_texture_compression_pvrtc2
|
|
||||||
case ECF_PVRTC2_ARGB4:
|
|
||||||
supported = true;
|
|
||||||
pixelFormat = GL_RGBA;
|
|
||||||
pixelType = GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG;
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#ifdef GL_OES_compressed_ETC1_RGB8_texture
|
|
||||||
case ECF_ETC1:
|
|
||||||
supported = true;
|
|
||||||
pixelFormat = GL_RGB;
|
|
||||||
pixelType = GL_ETC1_RGB8_OES;
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#ifdef GL_ES_VERSION_3_0 // TO-DO - fix when extension name will be available
|
|
||||||
case ECF_ETC2_RGB:
|
|
||||||
supported = true;
|
|
||||||
pixelFormat = GL_RGB;
|
|
||||||
pixelType = GL_COMPRESSED_RGB8_ETC2;
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#ifdef GL_ES_VERSION_3_0 // TO-DO - fix when extension name will be available
|
|
||||||
case ECF_ETC2_ARGB:
|
|
||||||
supported = true;
|
|
||||||
pixelFormat = GL_RGBA;
|
|
||||||
pixelType = GL_COMPRESSED_RGBA8_ETC2_EAC;
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
case ECF_D16:
|
case ECF_D16:
|
||||||
supported = true;
|
supported = true;
|
||||||
pixelFormat = GL_DEPTH_COMPONENT;
|
pixelFormat = GL_DEPTH_COMPONENT;
|
||||||
|
@ -64,16 +64,6 @@ namespace video
|
|||||||
case EVDF_MRT_BLEND_FUNC:
|
case EVDF_MRT_BLEND_FUNC:
|
||||||
case EVDF_OCCLUSION_QUERY:
|
case EVDF_OCCLUSION_QUERY:
|
||||||
return false;
|
return false;
|
||||||
case EVDF_TEXTURE_COMPRESSED_DXT:
|
|
||||||
return false; // NV Tegra need improvements here
|
|
||||||
case EVDF_TEXTURE_COMPRESSED_PVRTC:
|
|
||||||
return FeatureAvailable[IRR_GL_IMG_texture_compression_pvrtc];
|
|
||||||
case EVDF_TEXTURE_COMPRESSED_PVRTC2:
|
|
||||||
return FeatureAvailable[IRR_GL_IMG_texture_compression_pvrtc2];
|
|
||||||
case EVDF_TEXTURE_COMPRESSED_ETC1:
|
|
||||||
return FeatureAvailable[IRR_GL_OES_compressed_ETC1_RGB8_texture];
|
|
||||||
case EVDF_TEXTURE_COMPRESSED_ETC2:
|
|
||||||
return false;
|
|
||||||
case EVDF_STENCIL_BUFFER:
|
case EVDF_STENCIL_BUFFER:
|
||||||
return StencilBuffer;
|
return StencilBuffer;
|
||||||
default:
|
default:
|
||||||
|
@ -2888,104 +2888,6 @@ bool COGLES1Driver::getColorFormatParameters(ECOLOR_FORMAT format, GLint& intern
|
|||||||
}
|
}
|
||||||
pixelType = GL_UNSIGNED_BYTE;
|
pixelType = GL_UNSIGNED_BYTE;
|
||||||
break;
|
break;
|
||||||
#ifdef GL_EXT_texture_compression_s3tc
|
|
||||||
case ECF_DXT1:
|
|
||||||
supported = true;
|
|
||||||
internalFormat = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT;
|
|
||||||
pixelFormat = GL_RGBA;
|
|
||||||
pixelType = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT;
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#ifdef GL_EXT_texture_compression_s3tc
|
|
||||||
case ECF_DXT2:
|
|
||||||
case ECF_DXT3:
|
|
||||||
supported = true;
|
|
||||||
internalFormat = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT;
|
|
||||||
pixelFormat = GL_RGBA;
|
|
||||||
pixelType = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT;
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#ifdef GL_EXT_texture_compression_s3tc
|
|
||||||
case ECF_DXT4:
|
|
||||||
case ECF_DXT5:
|
|
||||||
supported = true;
|
|
||||||
internalFormat = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT;
|
|
||||||
pixelFormat = GL_RGBA;
|
|
||||||
pixelType = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT;
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#ifdef GL_IMG_texture_compression_pvrtc
|
|
||||||
case ECF_PVRTC_RGB2:
|
|
||||||
supported = true;
|
|
||||||
internalFormat = GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG;
|
|
||||||
pixelFormat = GL_RGB;
|
|
||||||
pixelType = GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG;
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#ifdef GL_IMG_texture_compression_pvrtc
|
|
||||||
case ECF_PVRTC_ARGB2:
|
|
||||||
supported = true;
|
|
||||||
internalFormat = GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;
|
|
||||||
pixelFormat = GL_RGBA;
|
|
||||||
pixelType = GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#ifdef GL_IMG_texture_compression_pvrtc
|
|
||||||
case ECF_PVRTC_RGB4:
|
|
||||||
supported = true;
|
|
||||||
internalFormat = GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG;
|
|
||||||
pixelFormat = GL_RGB;
|
|
||||||
pixelType = GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG;
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#ifdef GL_IMG_texture_compression_pvrtc
|
|
||||||
case ECF_PVRTC_ARGB4:
|
|
||||||
supported = true;
|
|
||||||
internalFormat = GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;
|
|
||||||
pixelFormat = GL_RGBA;
|
|
||||||
pixelType = GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#ifdef GL_IMG_texture_compression_pvrtc2
|
|
||||||
case ECF_PVRTC2_ARGB2:
|
|
||||||
supported = true;
|
|
||||||
internalFormat = GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG;
|
|
||||||
pixelFormat = GL_RGBA;
|
|
||||||
pixelType = GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG;
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#ifdef GL_IMG_texture_compression_pvrtc2
|
|
||||||
case ECF_PVRTC2_ARGB4:
|
|
||||||
supported = true;
|
|
||||||
internalFormat = GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG;
|
|
||||||
pixelFormat = GL_RGBA;
|
|
||||||
pixelType = GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG;
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#ifdef GL_OES_compressed_ETC1_RGB8_texture
|
|
||||||
case ECF_ETC1:
|
|
||||||
supported = true;
|
|
||||||
internalFormat = GL_ETC1_RGB8_OES;
|
|
||||||
pixelFormat = GL_RGB;
|
|
||||||
pixelType = GL_ETC1_RGB8_OES;
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#ifdef GL_ES_VERSION_3_0 // TO-DO - fix when extension name will be available
|
|
||||||
case ECF_ETC2_RGB:
|
|
||||||
supported = true;
|
|
||||||
internalFormat = GL_COMPRESSED_RGB8_ETC2;
|
|
||||||
pixelFormat = GL_RGB;
|
|
||||||
pixelType = GL_COMPRESSED_RGB8_ETC2;
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#ifdef GL_ES_VERSION_3_0 // TO-DO - fix when extension name will be available
|
|
||||||
case ECF_ETC2_ARGB:
|
|
||||||
supported = true;
|
|
||||||
internalFormat = GL_COMPRESSED_RGBA8_ETC2_EAC;
|
|
||||||
pixelFormat = GL_RGBA;
|
|
||||||
pixelType = GL_COMPRESSED_RGBA8_ETC2_EAC;
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
case ECF_D16:
|
case ECF_D16:
|
||||||
supported = true;
|
supported = true;
|
||||||
internalFormat = GL_DEPTH_COMPONENT16;
|
internalFormat = GL_DEPTH_COMPONENT16;
|
||||||
|
@ -55,14 +55,6 @@ namespace video
|
|||||||
return FeatureAvailable[IRR_GL_OES_framebuffer_object];
|
return FeatureAvailable[IRR_GL_OES_framebuffer_object];
|
||||||
case EVDF_VERTEX_BUFFER_OBJECT:
|
case EVDF_VERTEX_BUFFER_OBJECT:
|
||||||
return Version>100;
|
return Version>100;
|
||||||
case EVDF_TEXTURE_COMPRESSED_DXT:
|
|
||||||
return false; // NV Tegra need improvements here
|
|
||||||
case EVDF_TEXTURE_COMPRESSED_PVRTC:
|
|
||||||
return FeatureAvailable[IRR_GL_IMG_texture_compression_pvrtc];
|
|
||||||
case EVDF_TEXTURE_COMPRESSED_ETC1:
|
|
||||||
return FeatureAvailable[IRR_GL_OES_compressed_ETC1_RGB8_texture];
|
|
||||||
case EVDF_TEXTURE_CUBEMAP:
|
|
||||||
return FeatureAvailable[IRR_GL_OES_texture_cube_map];
|
|
||||||
default:
|
default:
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
|
@ -48,7 +48,7 @@ bool COpenGLDriver::initDriver()
|
|||||||
|
|
||||||
genericDriverInit();
|
genericDriverInit();
|
||||||
|
|
||||||
#if defined(_IRR_COMPILE_WITH_WINDOWS_DEVICE_) || defined(_IRR_COMPILE_WITH_X11_DEVICE_)
|
#if defined(_IRR_COMPILE_WITH_WINDOWS_DEVICE_) || defined(_IRR_COMPILE_WITH_X11_DEVICE_)
|
||||||
extGlSwapInterval(Params.Vsync ? 1 : 0);
|
extGlSwapInterval(Params.Vsync ? 1 : 0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -3962,29 +3962,6 @@ bool COpenGLDriver::getColorFormatParameters(ECOLOR_FORMAT format, GLint& intern
|
|||||||
if (Version > 101)
|
if (Version > 101)
|
||||||
pixelType = GL_UNSIGNED_INT_8_8_8_8_REV;
|
pixelType = GL_UNSIGNED_INT_8_8_8_8_REV;
|
||||||
break;
|
break;
|
||||||
case ECF_DXT1:
|
|
||||||
if (queryOpenGLFeature(COpenGLExtensionHandler::IRR_EXT_texture_compression_s3tc))
|
|
||||||
{
|
|
||||||
supported = true;
|
|
||||||
internalFormat = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT;
|
|
||||||
pixelFormat = GL_BGRA_EXT;
|
|
||||||
pixelType = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case ECF_DXT2:
|
|
||||||
case ECF_DXT3:
|
|
||||||
supported = true;
|
|
||||||
internalFormat = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT;
|
|
||||||
pixelFormat = GL_BGRA_EXT;
|
|
||||||
pixelType = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT;
|
|
||||||
break;
|
|
||||||
case ECF_DXT4:
|
|
||||||
case ECF_DXT5:
|
|
||||||
supported = true;
|
|
||||||
internalFormat = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT;
|
|
||||||
pixelFormat = GL_BGRA_EXT;
|
|
||||||
pixelType = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT;
|
|
||||||
break;
|
|
||||||
case ECF_D16:
|
case ECF_D16:
|
||||||
supported = true;
|
supported = true;
|
||||||
internalFormat = GL_DEPTH_COMPONENT16;
|
internalFormat = GL_DEPTH_COMPONENT16;
|
||||||
|
@ -882,8 +882,6 @@ bool COpenGLExtensionHandler::queryFeature(E_VIDEO_DRIVER_FEATURE feature) const
|
|||||||
return (Version>=104) || FeatureAvailable[IRR_EXT_blend_func_separate];
|
return (Version>=104) || FeatureAvailable[IRR_EXT_blend_func_separate];
|
||||||
case EVDF_TEXTURE_MATRIX:
|
case EVDF_TEXTURE_MATRIX:
|
||||||
return true;
|
return true;
|
||||||
case EVDF_TEXTURE_COMPRESSED_DXT:
|
|
||||||
return FeatureAvailable[IRR_EXT_texture_compression_s3tc];
|
|
||||||
case EVDF_TEXTURE_CUBEMAP:
|
case EVDF_TEXTURE_CUBEMAP:
|
||||||
return (Version >= 103) || FeatureAvailable[IRR_ARB_texture_cube_map] || FeatureAvailable[IRR_EXT_texture_cube_map];
|
return (Version >= 103) || FeatureAvailable[IRR_ARB_texture_cube_map] || FeatureAvailable[IRR_EXT_texture_cube_map];
|
||||||
case EVDF_TEXTURE_CUBEMAP_SEAMLESS:
|
case EVDF_TEXTURE_CUBEMAP_SEAMLESS:
|
||||||
|
@ -782,122 +782,6 @@ bool CWebGL1Driver::getColorFormatParameters(ECOLOR_FORMAT format, GLint& intern
|
|||||||
*converter = CColorConverter::convert_A8R8G8B8toA8B8G8R8;
|
*converter = CColorConverter::convert_A8R8G8B8toA8B8G8R8;
|
||||||
pixelType = GL_UNSIGNED_BYTE;
|
pixelType = GL_UNSIGNED_BYTE;
|
||||||
break;
|
break;
|
||||||
#ifdef GL_EXT_texture_compression_dxt1
|
|
||||||
case ECF_DXT1:
|
|
||||||
if ( WebGLExtensions.queryWebGLFeature(CWebGLExtensionHandler::IRR_WEBGL_compressed_texture_s3tc) )
|
|
||||||
{
|
|
||||||
supported = true;
|
|
||||||
pixelFormat = GL_RGBA;
|
|
||||||
pixelType = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#ifdef GL_EXT_texture_compression_s3tc
|
|
||||||
case ECF_DXT2:
|
|
||||||
case ECF_DXT3:
|
|
||||||
if ( WebGLExtensions.queryWebGLFeature(CWebGLExtensionHandler::IRR_WEBGL_compressed_texture_s3tc) )
|
|
||||||
{
|
|
||||||
supported = true;
|
|
||||||
pixelFormat = GL_RGBA;
|
|
||||||
pixelType = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#ifdef GL_EXT_texture_compression_s3tc
|
|
||||||
case ECF_DXT4:
|
|
||||||
case ECF_DXT5:
|
|
||||||
if ( WebGLExtensions.queryWebGLFeature(CWebGLExtensionHandler::IRR_WEBGL_compressed_texture_s3tc) )
|
|
||||||
{
|
|
||||||
supported = true;
|
|
||||||
pixelFormat = GL_RGBA;
|
|
||||||
pixelType = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#ifdef GL_IMG_texture_compression_pvrtc
|
|
||||||
case ECF_PVRTC_RGB2:
|
|
||||||
if ( WebGLExtensions.queryWebGLFeature(CWebGLExtensionHandler::IRR_WEBGL_compressed_texture_pvrtc) )
|
|
||||||
{
|
|
||||||
supported = true;
|
|
||||||
pixelFormat = GL_RGB;
|
|
||||||
pixelType = GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#ifdef GL_IMG_texture_compression_pvrtc
|
|
||||||
case ECF_PVRTC_ARGB2:
|
|
||||||
if ( WebGLExtensions.queryWebGLFeature(CWebGLExtensionHandler::IRR_WEBGL_compressed_texture_pvrtc) )
|
|
||||||
{
|
|
||||||
supported = true;
|
|
||||||
pixelFormat = GL_RGBA;
|
|
||||||
pixelType = GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#ifdef GL_IMG_texture_compression_pvrtc
|
|
||||||
case ECF_PVRTC_RGB4:
|
|
||||||
if ( WebGLExtensions.queryWebGLFeature(CWebGLExtensionHandler::IRR_WEBGL_compressed_texture_pvrtc) )
|
|
||||||
{
|
|
||||||
supported = true;
|
|
||||||
pixelFormat = GL_RGB;
|
|
||||||
pixelType = GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#ifdef GL_IMG_texture_compression_pvrtc
|
|
||||||
case ECF_PVRTC_ARGB4:
|
|
||||||
if ( WebGLExtensions.queryWebGLFeature(CWebGLExtensionHandler::IRR_WEBGL_compressed_texture_pvrtc) )
|
|
||||||
{
|
|
||||||
supported = true;
|
|
||||||
pixelFormat = GL_RGBA;
|
|
||||||
pixelType = GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#ifdef GL_IMG_texture_compression_pvrtc2
|
|
||||||
case ECF_PVRTC2_ARGB2:
|
|
||||||
if ( WebGLExtensions.queryWebGLFeature(CWebGLExtensionHandler::IRR_WEBGL_compressed_texture_pvrtc) )
|
|
||||||
{
|
|
||||||
supported = true;
|
|
||||||
pixelFormat = GL_RGBA;
|
|
||||||
pixelType = GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#ifdef GL_IMG_texture_compression_pvrtc2
|
|
||||||
case ECF_PVRTC2_ARGB4:
|
|
||||||
if ( WebGLExtensions.queryWebGLFeature(CWebGLExtensionHandler::IRR_WEBGL_compressed_texture_pvrtc) )
|
|
||||||
{
|
|
||||||
supported = true;
|
|
||||||
pixelFormat = GL_RGBA;
|
|
||||||
pixelType = GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#ifdef GL_OES_compressed_ETC1_RGB8_texture
|
|
||||||
case ECF_ETC1:
|
|
||||||
if ( WebGLExtensions.queryWebGLFeature(CWebGLExtensionHandler::IRR_WEBGL_compressed_texture_etc1) )
|
|
||||||
{
|
|
||||||
supported = true;
|
|
||||||
pixelFormat = GL_RGB;
|
|
||||||
pixelType = GL_ETC1_RGB8_OES;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#ifdef GL_ES_VERSION_3_0 // TO-DO - fix when extension name will be available
|
|
||||||
case ECF_ETC2_RGB:
|
|
||||||
supported = true;
|
|
||||||
pixelFormat = GL_RGB;
|
|
||||||
pixelType = GL_COMPRESSED_RGB8_ETC2;
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#ifdef GL_ES_VERSION_3_0 // TO-DO - fix when extension name will be available
|
|
||||||
case ECF_ETC2_ARGB:
|
|
||||||
supported = true;
|
|
||||||
pixelFormat = GL_RGBA;
|
|
||||||
pixelType = GL_COMPRESSED_RGBA8_ETC2_EAC;
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
case ECF_D16:
|
case ECF_D16:
|
||||||
if (WebGLExtensions.queryWebGLFeature(CWebGLExtensionHandler::IRR_WEBGL_depth_texture))
|
if (WebGLExtensions.queryWebGLFeature(CWebGLExtensionHandler::IRR_WEBGL_depth_texture))
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user