50 lines
		
	
	
		
			994 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			994 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| /// @brief Include to use wrap modes and the sampler base class.
 | |
| /// @file gli/sampler.hpp
 | |
| 
 | |
| #pragma once
 | |
| 
 | |
| #include "core/filter.hpp"
 | |
| 
 | |
| namespace gli
 | |
| {
 | |
| 	/// Texture coordinate wrapping mode
 | |
| 	enum wrap
 | |
| 	{
 | |
| 		WRAP_CLAMP_TO_EDGE, WRAP_FIRST = WRAP_CLAMP_TO_EDGE,
 | |
| 		WRAP_CLAMP_TO_BORDER,
 | |
| 		WRAP_REPEAT,
 | |
| 		WRAP_MIRROR_REPEAT,
 | |
| 		WRAP_MIRROR_CLAMP_TO_EDGE,
 | |
| 		WRAP_MIRROR_CLAMP_TO_BORDER, WRAP_LAST = WRAP_MIRROR_CLAMP_TO_BORDER
 | |
| 	};
 | |
| 
 | |
| 	enum
 | |
| 	{
 | |
| 		WRAP_COUNT = WRAP_LAST - WRAP_FIRST + 1
 | |
| 	};
 | |
| 
 | |
| 	/// Evaluate whether the texture coordinate wrapping mode relies on border color
 | |
| 	inline bool is_border(wrap Wrap)
 | |
| 	{
 | |
| 		return Wrap == WRAP_CLAMP_TO_BORDER || Wrap == WRAP_MIRROR_CLAMP_TO_BORDER;
 | |
| 	}
 | |
| 
 | |
| 	/// Genetic sampler class.
 | |
| 	class sampler
 | |
| 	{
 | |
| 	public:
 | |
| 		sampler(wrap Wrap, filter Mip, filter Min);
 | |
| 
 | |
| 	protected:
 | |
| 		typedef float(*wrap_type)(float const & SamplerCoord);
 | |
| 
 | |
| 		wrap_type get_func(wrap WrapMode) const;
 | |
| 
 | |
| 		wrap_type Wrap;
 | |
| 		filter Mip;
 | |
| 		filter Min;
 | |
| 	};
 | |
| }//namespace gli
 | |
| 
 | |
| #include "./core/sampler.inl"
 | 
