41 lines
		
	
	
	
		
			536 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
	
		
			536 B
		
	
	
	
		
			C++
		
	
	
	
	
	
#pragma once
 | 
						|
 | 
						|
namespace Assets {
 | 
						|
 | 
						|
class TextAsset;
 | 
						|
 | 
						|
} // namespace Assets
 | 
						|
 | 
						|
namespace lt {
 | 
						|
 | 
						|
class SharedContext;
 | 
						|
 | 
						|
class Shader
 | 
						|
{
 | 
						|
public:
 | 
						|
	enum Stage : uint8_t
 | 
						|
	{
 | 
						|
		none = 0,
 | 
						|
 | 
						|
		vertex,
 | 
						|
		pixel,
 | 
						|
		geometry,
 | 
						|
	};
 | 
						|
 | 
						|
	static auto create(
 | 
						|
	    const Ref<Assets::TextAsset> &vertex_asset,
 | 
						|
	    const Ref<Assets::TextAsset> &pixel_asset,
 | 
						|
	    const Ref<SharedContext> &shared_context
 | 
						|
	) -> Ref<Shader>;
 | 
						|
 | 
						|
	virtual ~Shader() = default;
 | 
						|
 | 
						|
	virtual void bind() = 0;
 | 
						|
 | 
						|
	virtual void un_bind() = 0;
 | 
						|
 | 
						|
protected:
 | 
						|
	Shader() = default;
 | 
						|
};
 | 
						|
 | 
						|
} // namespace lt
 |