Browse Source

Support for anisotropic filtering.

pull/279/head
Vladimír Vondruš 14 years ago
parent
commit
172c60a900
  1. 6
      src/AbstractTexture.cpp
  2. 23
      src/AbstractTexture.h

6
src/AbstractTexture.cpp

@ -46,6 +46,12 @@ static_assert((filter_or(NearestNeighbor, BaseLevel) == GL_NEAREST) &&
#undef filter_or
#endif
GLfloat AbstractTexture::maxSupportedAnisotropy() {
GLfloat value;
glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &value);
return value;
}
void AbstractTexture::setMinificationFilter(Filter filter, Mipmap mipmap) {
CORRADE_ASSERT(_target != GL_TEXTURE_RECTANGLE || mipmap == Mipmap::BaseLevel, "AbstractTexture: rectangle textures cannot have mipmaps", )

23
src/AbstractTexture.h

@ -29,7 +29,6 @@ namespace Magnum {
See Texture, CubeMapTexture and CubeMapTextureArray documentation for more
information.
@todo Add glPixelStore encapsulation
@todo Anisotropic filtering
*/
class MAGNUM_EXPORT AbstractTexture {
AbstractTexture(const AbstractTexture& other) = delete;
@ -419,6 +418,14 @@ class MAGNUM_EXPORT AbstractTexture {
/*@}*/
/**
* @brief Max supported anisotropy
*
* @see setMaxAnisotropy()
* @requires_extension <tt>EXT_texture_filter_anisotropic</tt>
*/
static GLfloat maxSupportedAnisotropy();
/**
* @brief Constructor
* @param layer %Texture layer (number between 0 and 31)
@ -498,6 +505,20 @@ class MAGNUM_EXPORT AbstractTexture {
glTexParameterfv(_target, GL_TEXTURE_BORDER_COLOR, color.data());
}
/**
* @brief Set max anisotropy
*
* Default value is `1.0`, which means no anisotropy. Set to value
* greater than `1.0` for anisotropic filtering.
*
* @see maxSupportedAnisotropy()
* @requires_extension <tt>EXT_texture_filter_anisotropic</tt>
*/
inline void setMaxAnisotropy(GLfloat anisotropy) {
bind();
glTexParameterf(_target, GL_TEXTURE_MAX_ANISOTROPY_EXT, anisotropy);
}
/**
* @brief Generate mipmap
*

Loading…
Cancel
Save