53 lines
		
	
	
	
		
			732 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
	
		
			732 B
		
	
	
	
		
			C++
		
	
	
	
	
	
#pragma once
 | 
						|
 | 
						|
#include <lt_debug/assertions.hpp>
 | 
						|
 | 
						|
namespace lt {
 | 
						|
 | 
						|
class VertexBuffer;
 | 
						|
class Shader;
 | 
						|
class SharedContext;
 | 
						|
 | 
						|
enum class VertexElementType
 | 
						|
{
 | 
						|
	Byte1,
 | 
						|
	Byte2,
 | 
						|
	Byte4,
 | 
						|
	UByte1,
 | 
						|
	UByte2,
 | 
						|
	UByte4,
 | 
						|
	Int1,
 | 
						|
	Int2,
 | 
						|
	Int3,
 | 
						|
	Int4,
 | 
						|
	UInt1,
 | 
						|
	UInt2,
 | 
						|
	UInt3,
 | 
						|
	UInt4,
 | 
						|
	Float1,
 | 
						|
	Float2,
 | 
						|
	Float3,
 | 
						|
	Float4,
 | 
						|
};
 | 
						|
 | 
						|
class VertexLayout
 | 
						|
{
 | 
						|
public:
 | 
						|
	static auto create(
 | 
						|
	    const Ref<VertexBuffer> &vertexBuffer,
 | 
						|
	    const Ref<Shader> &shader,
 | 
						|
	    const std::vector<std::pair<std::string, VertexElementType>> &elements,
 | 
						|
	    const Ref<SharedContext> &sharedContext
 | 
						|
	) -> Ref<VertexLayout>;
 | 
						|
 | 
						|
	virtual ~VertexLayout() = default;
 | 
						|
 | 
						|
	virtual void bind() = 0;
 | 
						|
 | 
						|
	virtual void un_bind() = 0;
 | 
						|
 | 
						|
protected:
 | 
						|
	VertexLayout() = default;
 | 
						|
};
 | 
						|
 | 
						|
} // namespace lt
 |