49 this->filter = filter;
50 this->use16Bit = use16Bit;
54 return other.filter == this->filter &&
55 other.use16Bit == use16Bit;
66 this->config = config;
80 const char*
name()
override;
102 std::vector<View2DShaderGLSL::Shader*> _shaders;
118 static void createCubicShader(std::stringstream&
str,
bool use16BitLut);
119 static void createNearestShader(std::stringstream&
str,
bool use16BitLut);
120 static void createLinearShader(std::stringstream&
str,
bool use16BitLut);
121 static void createTextHaloShader(std::stringstream&
str,
bool use16BitLut);
122 static void createARGBShader(std::stringstream&
str);
View2DTextureFilter
Filter mode.
@ FILTER_LINEAR
Bilinear filtering (after classification/LUT)
#define SOVIEW2D_API
File to resolve system dependencies in View2D library.
Global GLSL shader cache for all shaders that are used in the SoView2D.
static View2DShaderCacheGLSL * self()
get the shader cache singleton (creates it if not yet present)
View2DShaderGLSL::Shader * findOrCreateShader(const View2DShaderGLSL::ShaderConfig &config)
Finds the given shader or creates it if not yet available The returned shader contains an already com...
specialized shader that uses GLSL to implement a (up-to) 16 bit Hardware Lut
void unbind() override
deactivates the shader
void bind(View2DTexture *texture, int tw, int th) override
binds/activates the shader
static bool mayUseShaders()
returns if GLSL shaders may be used
static bool runsInHardware()
returns if the shader is supported and would run in hardware (calling this method requires a valid GL...
const char * name() override
get the shader's name
~View2DShaderGLSL() override
abstract base class for shaders that use a 2D texture for LUT lookup
A class to render images as OpenGL Textures.
Target mlrange_cast(Source arg)
Generic version of checked ML casts.
Stores a shader configuration.
bool operator==(const ShaderConfig &other) const
View2DTextureFilter filter
ShaderConfig(View2DTextureFilter filter, bool use16Bit)
Stores a full shader program for the given configuration.
Shader(const ShaderConfig &config)
ml::GLSLFragmentShader fragmentShader
ml::GLSLVertexShader vertexShader