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
 |