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
|