- Added GTX_texture: levels function

master
Christophe Riccio ago%!(EXTRA string=8 years)
parent a2497e6174
commit 30ee2cd1bb
  1. 18
      glm/gtx/texture.hpp
  2. 10
      glm/gtx/texture.inl
  3. 1
      readme.md
  4. 13
      test/gtx/gtx_texture.cpp

@ -14,6 +14,8 @@
// Dependency: // Dependency:
#include "../glm.hpp" #include "../glm.hpp"
#include "../gtc/integer.hpp"
#include "../gtx/component_wise.hpp"
#ifndef GLM_ENABLE_EXPERIMENTAL #ifndef GLM_ENABLE_EXPERIMENTAL
# error "GLM: GLM_GTX_texture is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it." # error "GLM: GLM_GTX_texture is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
@ -28,17 +30,17 @@ namespace glm
/// @addtogroup gtx_texture /// @addtogroup gtx_texture
/// @{ /// @{
/// Compute the number of mipmaps levels necessary to create a mipmap complete texture
///
/// @param Extent Extent of the texture base level mipmap
/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
/// @tparam T Floating-point or signed integer scalar types
/// @tparam Q Value from qualifier enum
template <length_t L, typename T, qualifier Q>
T levels(vec<L, T, Q> const& Extent);
/// @} /// @}
}// namespace glm }// namespace glm
#include "texture.inl" #include "texture.inl"
/// @ref gtx_texture
/// @file glm/gtx/texture.inl
namespace glm
{
}//namespace glm

@ -3,6 +3,16 @@
namespace glm namespace glm
{ {
template <length_t L, typename T, qualifier Q>
inline T levels(vec<L, T, Q> const& Extent)
{
return glm::log2(compMax(Extent)) + static_cast<T>(1);
}
template <typename T>
inline T levels(T Extent)
{
return vec<1, T, defaultp>(Extent).x;
}
}//namespace glm }//namespace glm

@ -65,6 +65,7 @@ glm::mat4 camera(float Translate, glm::vec2 const& Rotate)
- Added fmin, fmax and fclamp to GTX_extended_min_max #372 - Added fmin, fmax and fclamp to GTX_extended_min_max #372
- Added EXT_vector_relational: extend equal and notEqual to take an epsilon argument - Added EXT_vector_relational: extend equal and notEqual to take an epsilon argument
- Added EXT_vec1: *vec1 types - Added EXT_vec1: *vec1 types
- Added GTX_texture: levels function
#### Improvements: #### Improvements:
- No more default initialization of vector, matrix and quaternion types - No more default initialization of vector, matrix and quaternion types

@ -1,9 +1,22 @@
#define GLM_ENABLE_EXPERIMENTAL #define GLM_ENABLE_EXPERIMENTAL
#include <glm/vec2.hpp>
#include <glm/gtx/texture.hpp> #include <glm/gtx/texture.hpp>
int test_levels()
{
int Error = 0;
int const Levels = glm::levels(glm::ivec2(3, 2));
Error += Levels == 2 ? 0 : 1;
return Error;
}
int main() int main()
{ {
int Error = 0; int Error = 0;
Error += test_levels();
return Error; return Error;
} }

Loading…
Cancel
Save