mirror of
https://github.com/minetest/minetest.git
synced 2025-02-17 10:23:47 +01:00
grepping for IRR_COMPILE_GLES2_COMMON gives no other results COGLESCoreExtensionHandler is only used through COpenGL3ExtensionHandler
100 lines
2.6 KiB
C++
100 lines
2.6 KiB
C++
// Copyright (C) 2017 Michael Zeilfelder
|
|
// This file is part of the "Irrlicht Engine".
|
|
// For conditions of distribution and use, see copyright notice in Irrlicht.h
|
|
|
|
#pragma once
|
|
|
|
// Can be included from different ES versions
|
|
// (this is also the reason why this file is header-only as correct OGL ES headers have to be included first)
|
|
|
|
#include "irrMath.h"
|
|
#include "COpenGLCoreFeature.h"
|
|
|
|
namespace irr
|
|
{
|
|
namespace video
|
|
{
|
|
|
|
class COGLESCoreExtensionHandler
|
|
{
|
|
public:
|
|
// Enums used internally to check for ES extensions quickly.
|
|
// We buffer all extensions on start once in an array.
|
|
// All OpenGL ES versions share the same extensions (WebGL adds it's own extensions on top of ES2)
|
|
enum EOGLESFeatures
|
|
{
|
|
// If you update this enum also update the corresponding OGLESFeatureStrings string-array
|
|
IRR_GL_APPLE_texture_format_BGRA8888,
|
|
IRR_GL_EXT_blend_minmax,
|
|
IRR_GL_EXT_texture_format_BGRA8888,
|
|
IRR_GL_EXT_texture_rg,
|
|
IRR_GL_OES_depth_texture,
|
|
IRR_GL_OES_element_index_uint,
|
|
IRR_GL_OES_packed_depth_stencil,
|
|
IRR_GL_OES_texture_float,
|
|
IRR_GL_OES_texture_half_float,
|
|
|
|
IRR_OGLES_Feature_Count
|
|
};
|
|
|
|
COGLESCoreExtensionHandler() :
|
|
MaxAnisotropy(1), MaxIndices(0xffff),
|
|
MaxTextureSize(1), MaxTextureLODBias(0.f), StencilBuffer(false)
|
|
{
|
|
for (u32 i = 0; i < IRR_OGLES_Feature_Count; ++i)
|
|
FeatureAvailable[i] = false;
|
|
|
|
DimAliasedLine[0] = 1.f;
|
|
DimAliasedLine[1] = 1.f;
|
|
DimAliasedPoint[0] = 1.f;
|
|
DimAliasedPoint[1] = 1.f;
|
|
}
|
|
|
|
virtual ~COGLESCoreExtensionHandler() {}
|
|
|
|
const COpenGLCoreFeature &getFeature() const
|
|
{
|
|
return Feature;
|
|
}
|
|
|
|
void dump() const
|
|
{
|
|
for (u32 i = 0; i < IRR_OGLES_Feature_Count; ++i)
|
|
os::Printer::log(getFeatureString(i), FeatureAvailable[i] ? " true" : " false");
|
|
}
|
|
|
|
protected:
|
|
const char *getFeatureString(size_t index) const
|
|
{
|
|
// One for each EOGLESFeatures
|
|
static const char *const OGLESFeatureStrings[IRR_OGLES_Feature_Count] = {
|
|
"GL_APPLE_texture_format_BGRA8888",
|
|
"GL_EXT_blend_minmax",
|
|
"GL_EXT_texture_format_BGRA8888",
|
|
"GL_EXT_texture_rg",
|
|
"GL_OES_depth_texture",
|
|
"GL_OES_element_index_uint",
|
|
"GL_OES_packed_depth_stencil",
|
|
"GL_OES_texture_float",
|
|
"GL_OES_texture_half_float",
|
|
};
|
|
|
|
return OGLESFeatureStrings[index];
|
|
}
|
|
|
|
COpenGLCoreFeature Feature;
|
|
|
|
u8 MaxAnisotropy;
|
|
u32 MaxIndices;
|
|
u32 MaxTextureSize;
|
|
f32 MaxTextureLODBias;
|
|
//! Minimal and maximal supported thickness for lines without smoothing
|
|
float DimAliasedLine[2];
|
|
//! Minimal and maximal supported thickness for points without smoothing
|
|
float DimAliasedPoint[2];
|
|
bool StencilBuffer;
|
|
bool FeatureAvailable[IRR_OGLES_Feature_Count];
|
|
};
|
|
}
|
|
}
|