// Check for GL_ANGLE_texture_compression_dxt5 static bool DetermineSRGBTextureSupport(const TextureCapsMap &textureCaps) { std::vector<GLenum> requiredFilterFormats; requiredFilterFormats.push_back(GL_SRGB8); requiredFilterFormats.push_back(GL_SRGB8_ALPHA8); std::vector<GLenum> requiredRenderFormats; requiredRenderFormats.push_back(GL_SRGB8_ALPHA8); return GetFormatSupport(textureCaps, requiredFilterFormats, true, true, false) && GetFormatSupport(textureCaps, requiredRenderFormats, true, false, true); }
// Checks for GL_EXT_texture_format_BGRA8888 support static bool DetermineBGRA8TextureSupport(const TextureCapsMap &textureCaps) { std::vector<GLenum> requiredFormats; requiredFormats.push_back(GL_BGRA8_EXT); return GetFormatSupport(textureCaps, requiredFormats, true, true, true); }
// Check for GL_ANGLE_texture_compression_dxt5 static bool DetermineDXT5TextureSupport(const TextureCapsMap &textureCaps) { std::vector<GLenum> requiredFormats; requiredFormats.push_back(GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE); return GetFormatSupport(textureCaps, requiredFormats, true, true, false); }
// Check for GL_OES_depth32 static bool DetermineDepth32Support(const TextureCapsMap &textureCaps) { std::vector<GLenum> requiredFormats; requiredFormats.push_back(GL_DEPTH_COMPONENT32_OES); return GetFormatSupport(textureCaps, requiredFormats, false, false, true); }
// Check for GL_ETC1_RGB8_OES static bool DetermineETC1RGB8TextureSupport(const TextureCapsMap &textureCaps) { std::vector<GLenum> requiredFormats; requiredFormats.push_back(GL_ETC1_RGB8_OES); return GetFormatSupport(textureCaps, requiredFormats, true, true, false); }
// Check for GL_KHR_texture_compression_astc_hdr and GL_KHR_texture_compression_astc_ldr static bool DetermineASTCTextureSupport(const TextureCapsMap &textureCaps) { std::vector<GLenum> requiredFormats; requiredFormats.push_back(GL_COMPRESSED_RGBA_ASTC_4x4_KHR); requiredFormats.push_back(GL_COMPRESSED_RGBA_ASTC_5x4_KHR); requiredFormats.push_back(GL_COMPRESSED_RGBA_ASTC_5x5_KHR); requiredFormats.push_back(GL_COMPRESSED_RGBA_ASTC_6x5_KHR); requiredFormats.push_back(GL_COMPRESSED_RGBA_ASTC_6x6_KHR); requiredFormats.push_back(GL_COMPRESSED_RGBA_ASTC_8x5_KHR); requiredFormats.push_back(GL_COMPRESSED_RGBA_ASTC_8x6_KHR); requiredFormats.push_back(GL_COMPRESSED_RGBA_ASTC_8x8_KHR); requiredFormats.push_back(GL_COMPRESSED_RGBA_ASTC_10x5_KHR); requiredFormats.push_back(GL_COMPRESSED_RGBA_ASTC_10x6_KHR); requiredFormats.push_back(GL_COMPRESSED_RGBA_ASTC_10x8_KHR); requiredFormats.push_back(GL_COMPRESSED_RGBA_ASTC_10x10_KHR); requiredFormats.push_back(GL_COMPRESSED_RGBA_ASTC_12x10_KHR); requiredFormats.push_back(GL_COMPRESSED_RGBA_ASTC_12x12_KHR); requiredFormats.push_back(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR); requiredFormats.push_back(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR); requiredFormats.push_back(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR); requiredFormats.push_back(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR); requiredFormats.push_back(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR); requiredFormats.push_back(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR); requiredFormats.push_back(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR); requiredFormats.push_back(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR); requiredFormats.push_back(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR); requiredFormats.push_back(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR); requiredFormats.push_back(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR); requiredFormats.push_back(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR); requiredFormats.push_back(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR); requiredFormats.push_back(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR); return GetFormatSupport(textureCaps, requiredFormats, true, true, false); }
// Check for GL_OES_packed_depth_stencil static bool DeterminePackedDepthStencilSupport(const TextureCapsMap &textureCaps) { std::vector<GLenum> requiredFormats; requiredFormats.push_back(GL_DEPTH24_STENCIL8); return GetFormatSupport(textureCaps, requiredFormats, false, false, true); }
// Checks for GL_OES_texture_float_linear support static bool DetermineFloatTextureFilteringSupport(const TextureCapsMap &textureCaps) { std::vector<GLenum> requiredFormats; requiredFormats.push_back(GL_RGB32F); requiredFormats.push_back(GL_RGBA32F); return GetFormatSupport(textureCaps, requiredFormats, true, true, false); }
// Checks for GL_OES_texture_half_float support static bool DetermineHalfFloatTextureSupport(const TextureCapsMap &textureCaps) { std::vector<GLenum> requiredFormats; requiredFormats.push_back(GL_RGB16F); requiredFormats.push_back(GL_RGBA16F); return GetFormatSupport(textureCaps, requiredFormats, true, false, true); }
// Check for GL_EXT_color_buffer_float static bool DetermineColorBufferFloatSupport(const TextureCapsMap &textureCaps) { std::vector<GLenum> requiredFormats; requiredFormats.push_back(GL_R16F); requiredFormats.push_back(GL_RG16F); requiredFormats.push_back(GL_RGBA16F); requiredFormats.push_back(GL_R32F); requiredFormats.push_back(GL_RG32F); requiredFormats.push_back(GL_RGBA32F); requiredFormats.push_back(GL_R11F_G11F_B10F); return GetFormatSupport(textureCaps, requiredFormats, true, false, true); }
// Checks for GL_EXT_texture_rg support static bool DetermineRGTextureSupport(const TextureCapsMap &textureCaps, bool checkHalfFloatFormats, bool checkFloatFormats) { std::vector<GLenum> requiredFormats; requiredFormats.push_back(GL_R8); requiredFormats.push_back(GL_RG8); if (checkHalfFloatFormats) { requiredFormats.push_back(GL_R16F); requiredFormats.push_back(GL_RG16F); } if (checkFloatFormats) { requiredFormats.push_back(GL_R32F); requiredFormats.push_back(GL_RG32F); } return GetFormatSupport(textureCaps, requiredFormats, true, true, false); }