50 lines
		
	
	
	
		
			654 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
	
		
			654 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| #pragma once
 | |
| 
 | |
| 
 | |
| namespace lt {
 | |
| 
 | |
| class SharedContext;
 | |
| 
 | |
| enum class BlendFactor : uint8_t
 | |
| {
 | |
| 	// constants
 | |
| 	ZERO,
 | |
| 	ONE,
 | |
| 
 | |
| 	// source
 | |
| 	SRC_COLOR,
 | |
| 	INVERSE_SRC_COLOR,
 | |
| 
 | |
| 	SRC_ALPHA,
 | |
| 	INVERSE_SRC_ALPHA,
 | |
| 
 | |
| 	// destination
 | |
| 	DST_COLOR,
 | |
| 	INVERSE_DST_COLOR,
 | |
| 
 | |
| 	DST_ALPHA,
 | |
| 	INVERSE_DST_ALPHA,
 | |
| 
 | |
| 	// source1
 | |
| 	SRC1_COLOR,
 | |
| 	INVERSE_SRC1_COLOR,
 | |
| 
 | |
| 	SRC1_ALPHA,
 | |
| 	INVERSE_SRC1_ALPHA,
 | |
| };
 | |
| 
 | |
| class Blender
 | |
| {
 | |
| public:
 | |
| 	virtual ~Blender() = default;
 | |
| 	static auto create(const Ref<SharedContext> &sharedContext) -> Scope<Blender>;
 | |
| 
 | |
| 	virtual void enable(BlendFactor srcFactor, BlendFactor dstFactor) = 0;
 | |
| 
 | |
| 	virtual void disable() = 0;
 | |
| 
 | |
| protected:
 | |
| 	Blender() = default;
 | |
| };
 | |
| 
 | |
| } // namespace lt
 |