mirror of
https://github.com/minetest/irrlicht.git
synced 2024-11-05 18:00:41 +01:00
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
|
||||
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.
|
||||
EVDF_TEXTURE_CUBEMAP,
|
||||
|
||||
|
|
103
include/IImage.h
103
include/IImage.h
|
@ -362,28 +362,6 @@ public:
|
|||
return 24;
|
||||
case ECF_A8R8G8B8:
|
||||
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:
|
||||
return 16;
|
||||
case ECF_D32:
|
||||
|
@ -418,74 +396,17 @@ public:
|
|||
//! calculate image data size in bytes for selected format, width and height.
|
||||
static u32 getDataSizeFromFormat(ECOLOR_FORMAT format, u32 width, u32 height)
|
||||
{
|
||||
u32 imageSize = 0;
|
||||
|
||||
switch (format)
|
||||
{
|
||||
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;
|
||||
}
|
||||
// non-compressed formats
|
||||
u32 imageSize = getBitsPerPixelFromFormat(format) / 8 * width;
|
||||
imageSize *= height;
|
||||
|
||||
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
|
||||
static bool isCompressedFormat(const ECOLOR_FORMAT format)
|
||||
{
|
||||
switch(format)
|
||||
{
|
||||
IRR_CASE_IIMAGE_COMPRESSED_FORMAT
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
//! check if the color format is only viable for depth/stencil textures
|
||||
|
@ -523,22 +444,6 @@ public:
|
|||
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:
|
||||
ECOLOR_FORMAT Format;
|
||||
core::dimension2d<u32> Size;
|
||||
|
|
|
@ -292,11 +292,6 @@ public:
|
|||
{
|
||||
case ECF_A8R8G8B8:
|
||||
case ECF_A1R5G5B5:
|
||||
case ECF_DXT1:
|
||||
case ECF_DXT2:
|
||||
case ECF_DXT3:
|
||||
case ECF_DXT4:
|
||||
case ECF_DXT5:
|
||||
case ECF_A16B16G16R16F:
|
||||
case ECF_A32B32G32R32F:
|
||||
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)
|
||||
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. */
|
||||
|
||||
/** Floating point formats. */
|
||||
|
@ -139,20 +95,6 @@ namespace video
|
|||
"R5G6B5",
|
||||
"R8G8B8",
|
||||
"A8R8G8B8",
|
||||
"DXT1",
|
||||
"DXT2",
|
||||
"DXT3",
|
||||
"DXT4",
|
||||
"DXT5",
|
||||
"PVRTC_RGB2",
|
||||
"PVRTC_ARGB2",
|
||||
"PVRTC_RGB4",
|
||||
"PVRTC_ARGB4",
|
||||
"PVRTC2_ARGB2",
|
||||
"PVRTC2_ARGB4",
|
||||
"ETC1",
|
||||
"ETC2_RGB",
|
||||
"ETC2_ARGB",
|
||||
"R16F",
|
||||
"G16R16F",
|
||||
"A16B16G16R16F",
|
||||
|
|
|
@ -757,9 +757,6 @@ void CColorConverter::convert_viaFormat(const void* sP, ECOLOR_FORMAT sF, s32 sN
|
|||
case ECF_R8G8B8:
|
||||
convert_A1R5G5B5toR8G8B8(sP, sN, dP);
|
||||
break;
|
||||
IRR_CASE_IIMAGE_COMPRESSED_FORMAT
|
||||
os::Printer::log("CColorConverter::convert_viaFormat method doesn't support compressed images.", ELL_WARNING);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
|
@ -780,9 +777,6 @@ void CColorConverter::convert_viaFormat(const void* sP, ECOLOR_FORMAT sF, s32 sN
|
|||
case ECF_R8G8B8:
|
||||
convert_R5G6B5toR8G8B8(sP, sN, dP);
|
||||
break;
|
||||
IRR_CASE_IIMAGE_COMPRESSED_FORMAT
|
||||
os::Printer::log("CColorConverter::convert_viaFormat method doesn't support compressed images.", ELL_WARNING);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
|
@ -803,9 +797,6 @@ void CColorConverter::convert_viaFormat(const void* sP, ECOLOR_FORMAT sF, s32 sN
|
|||
case ECF_R8G8B8:
|
||||
convert_A8R8G8B8toR8G8B8(sP, sN, dP);
|
||||
break;
|
||||
IRR_CASE_IIMAGE_COMPRESSED_FORMAT
|
||||
os::Printer::log("CColorConverter::convert_viaFormat method doesn't support compressed images.", ELL_WARNING);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
|
@ -826,17 +817,11 @@ void CColorConverter::convert_viaFormat(const void* sP, ECOLOR_FORMAT sF, s32 sN
|
|||
case ECF_R8G8B8:
|
||||
convert_R8G8B8toR8G8B8(sP, sN, dP);
|
||||
break;
|
||||
IRR_CASE_IIMAGE_COMPRESSED_FORMAT
|
||||
os::Printer::log("CColorConverter::convert_viaFormat method doesn't support compressed images.", ELL_WARNING);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
IRR_CASE_IIMAGE_COMPRESSED_FORMAT
|
||||
os::Printer::log("CColorConverter::convert_viaFormat method doesn't support compressed images.", ELL_WARNING);
|
||||
break;
|
||||
|
||||
default:
|
||||
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;
|
||||
} break;
|
||||
|
||||
IRR_CASE_IIMAGE_COMPRESSED_FORMAT
|
||||
os::Printer::log("IImage::setPixel method doesn't work with compressed images.", ELL_WARNING);
|
||||
return;
|
||||
|
||||
case ECF_UNKNOWN:
|
||||
os::Printer::log("IImage::setPixel unknown format.", ELL_WARNING);
|
||||
return;
|
||||
|
@ -109,10 +105,6 @@ SColor CImage::getPixel(u32 x, u32 y) const
|
|||
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:
|
||||
os::Printer::log("IImage::getPixel unknown format.", ELL_WARNING);
|
||||
break;
|
||||
|
|
|
@ -1001,68 +1001,6 @@ bool CNullDriver::checkPrimitiveCount(u32 prmCount) 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;
|
||||
}
|
||||
|
||||
|
|
|
@ -2533,92 +2533,6 @@ COGLES2Driver::~COGLES2Driver()
|
|||
}
|
||||
pixelType = GL_UNSIGNED_BYTE;
|
||||
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:
|
||||
supported = true;
|
||||
pixelFormat = GL_DEPTH_COMPONENT;
|
||||
|
|
|
@ -64,16 +64,6 @@ namespace video
|
|||
case EVDF_MRT_BLEND_FUNC:
|
||||
case EVDF_OCCLUSION_QUERY:
|
||||
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:
|
||||
return StencilBuffer;
|
||||
default:
|
||||
|
|
|
@ -2888,104 +2888,6 @@ bool COGLES1Driver::getColorFormatParameters(ECOLOR_FORMAT format, GLint& intern
|
|||
}
|
||||
pixelType = GL_UNSIGNED_BYTE;
|
||||
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:
|
||||
supported = true;
|
||||
internalFormat = GL_DEPTH_COMPONENT16;
|
||||
|
|
|
@ -55,14 +55,6 @@ namespace video
|
|||
return FeatureAvailable[IRR_GL_OES_framebuffer_object];
|
||||
case EVDF_VERTEX_BUFFER_OBJECT:
|
||||
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:
|
||||
return true;
|
||||
};
|
||||
|
|
|
@ -48,7 +48,7 @@ bool COpenGLDriver::initDriver()
|
|||
|
||||
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);
|
||||
#endif
|
||||
|
||||
|
@ -3962,29 +3962,6 @@ bool COpenGLDriver::getColorFormatParameters(ECOLOR_FORMAT format, GLint& intern
|
|||
if (Version > 101)
|
||||
pixelType = GL_UNSIGNED_INT_8_8_8_8_REV;
|
||||
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:
|
||||
supported = true;
|
||||
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];
|
||||
case EVDF_TEXTURE_MATRIX:
|
||||
return true;
|
||||
case EVDF_TEXTURE_COMPRESSED_DXT:
|
||||
return FeatureAvailable[IRR_EXT_texture_compression_s3tc];
|
||||
case EVDF_TEXTURE_CUBEMAP:
|
||||
return (Version >= 103) || FeatureAvailable[IRR_ARB_texture_cube_map] || FeatureAvailable[IRR_EXT_texture_cube_map];
|
||||
case EVDF_TEXTURE_CUBEMAP_SEAMLESS:
|
||||
|
|
|
@ -782,122 +782,6 @@ bool CWebGL1Driver::getColorFormatParameters(ECOLOR_FORMAT format, GLint& intern
|
|||
*converter = CColorConverter::convert_A8R8G8B8toA8B8G8R8;
|
||||
pixelType = GL_UNSIGNED_BYTE;
|
||||
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:
|
||||
if (WebGLExtensions.queryWebGLFeature(CWebGLExtensionHandler::IRR_WEBGL_depth_texture))
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue
Block a user