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"
 |