diff --git a/src/Context.cpp b/src/Context.cpp index eb3b97165..d84d5fbbe 100644 --- a/src/Context.cpp +++ b/src/Context.cpp @@ -82,7 +82,9 @@ const std::vector& Extension::extensions(Version version) { _extension(GL,AMD,vertex_shader_layer), // done _extension(GL,AMD,shader_trinary_minmax), // done _extension(GL,ARB,robustness), // done + _extension(GL,ATI,texture_mirror_once), _extension(GL,EXT,texture_filter_anisotropic), // done + _extension(GL,EXT,texture_mirror_clamp), _extension(GL,EXT,direct_state_access), _extension(GL,GREMEDY,string_marker)}; // done static const std::vector extensions300{ diff --git a/src/Extensions.h b/src/Extensions.h index 15bcb9ce4..97ddf6bb1 100644 --- a/src/Extensions.h +++ b/src/Extensions.h @@ -161,10 +161,13 @@ namespace GL { _extension(GL,ARB,texture_mirror_clamp_to_edge, GL210, GL440) // #149 _extension(GL,ARB,texture_stencil8, GL210, GL440) // #150 _extension(GL,ARB,vertex_type_10f_11f_11f_rev, GL300, GL440) // #151 + } namespace ATI { + _extension(GL,ATI,texture_mirror_once, GL210, None) // #221 } namespace EXT { _extension(GL,EXT,texture_filter_anisotropic, GL210, None) // #187 /* EXT_framebuffer_object, EXT_packed_depth_stencil, EXT_framebuffer_blit, EXT_framebuffer_multisample replaced with ARB_framebuffer_object */ + _extension(GL,EXT,texture_mirror_clamp, GL210, None) // #298 _extension(GL,EXT,gpu_shader4, GL210, GL300) // #326 _extension(GL,EXT,packed_float, GL210, GL300) // #328 _extension(GL,EXT,texture_array, GL210, GL300) // #329 diff --git a/src/Sampler.h b/src/Sampler.h index 83d390aca..0c771b4f1 100644 --- a/src/Sampler.h +++ b/src/Sampler.h @@ -113,11 +113,24 @@ class Sampler { * @requires_es_extension %Extension @es_extension{NV,texture_border_clamp} */ #ifndef MAGNUM_TARGET_GLES - ClampToBorder = GL_CLAMP_TO_BORDER + ClampToBorder = GL_CLAMP_TO_BORDER, #else - ClampToBorder = GL_CLAMP_TO_BORDER_NV + ClampToBorder = GL_CLAMP_TO_BORDER_NV, #endif #endif + + #ifndef MAGNUM_TARGET_GLES + /** + * Mirror the texture once in negative coordinates and clamp to + * edge after that. + * @requires_gl44 %Extension @extension{ARB,texture_mirror_clamp_to_edge}, + * @extension{ATI,texture_mirror_once} or @extension{EXT,texture_mirror_clamp} + * @requires_gl Only separate @ref Magnum::Sampler::Wrapping "Wrapping::MirroredRepeat" + * or @ref Magnum::Sampler::Wrapping "Wrapping::ClampToEdge" + * is available in OpenGL ES. + */ + MirrorClampToEdge = GL_MIRROR_CLAMP_TO_EDGE + #endif }; #ifndef MAGNUM_TARGET_GLES3