diff --git a/Engine/src/Engine/Graphics/VertexLayout.h b/Engine/src/Engine/Graphics/VertexLayout.h index 5b13f24..ce874d5 100644 --- a/Engine/src/Engine/Graphics/VertexLayout.h +++ b/Engine/src/Engine/Graphics/VertexLayout.h @@ -11,10 +11,11 @@ namespace Light { enum class VertexElementType { - Int1 , Int2 , Int3 , Int4, - UInt1 , UInt2 , UInt3 , UInt4, - Float1 , Float2 , Float3 , Float4, - Double1, Double2, Double3, Double4 + Byte1 , Byte2 , Byte4 , + UByte1 , UByte2 , UByte4 , + Int1 , Int2 , Int3 , Int4 , + UInt1 , UInt2 , UInt3 , UInt4 , + Float1 , Float2 , Float3 , Float4 , }; class VertexLayout diff --git a/Engine/src/Platform/GraphicsAPI/DirectX/dxVertexLayout.cpp b/Engine/src/Platform/GraphicsAPI/DirectX/dxVertexLayout.cpp index 63dc4ed..2c5db2a 100644 --- a/Engine/src/Platform/GraphicsAPI/DirectX/dxVertexLayout.cpp +++ b/Engine/src/Platform/GraphicsAPI/DirectX/dxVertexLayout.cpp @@ -53,32 +53,37 @@ namespace Light { { switch (type) { - // #todo: add char - // int + /* byte */ + case Light::VertexElementType::Byte1: return DXGI_FORMAT_R8_SINT; + case Light::VertexElementType::Byte2: return DXGI_FORMAT_R8G8_SINT; + case Light::VertexElementType::Byte4: return DXGI_FORMAT_R8_SINT; + + /* ubyte */ + case Light::VertexElementType::UByte1: return DXGI_FORMAT_R8_UINT; + case Light::VertexElementType::UByte2: return DXGI_FORMAT_R8G8_UINT; + case Light::VertexElementType::UByte4: return DXGI_FORMAT_R8G8B8A8_UINT; + + /* int */ case Light::VertexElementType::Int1: return DXGI_FORMAT_R32_SINT; case Light::VertexElementType::Int2: return DXGI_FORMAT_R32G32_SINT; case Light::VertexElementType::Int3: return DXGI_FORMAT_R32G32B32_SINT; case Light::VertexElementType::Int4: return DXGI_FORMAT_R32G32B32A32_SINT; - // uint + /* uint */ case Light::VertexElementType::UInt1: return DXGI_FORMAT_R32_UINT; case Light::VertexElementType::UInt2: return DXGI_FORMAT_R32G32_UINT; case Light::VertexElementType::UInt3: return DXGI_FORMAT_R32G32B32_UINT; case Light::VertexElementType::UInt4: return DXGI_FORMAT_R32G32B32A32_UINT; - // float + /* float */ case Light::VertexElementType::Float1: return DXGI_FORMAT_R32_FLOAT; case Light::VertexElementType::Float2: return DXGI_FORMAT_R32G32_FLOAT; case Light::VertexElementType::Float3: return DXGI_FORMAT_R32G32B32_FLOAT; case Light::VertexElementType::Float4: return DXGI_FORMAT_R32G32B32A32_FLOAT; - // #todo: - case Light::VertexElementType::Double1: - case Light::VertexElementType::Double2: - case Light::VertexElementType::Double3: - case Light::VertexElementType::Double4: - - default: LT_ENGINE_ASSERT(false, "dxVertexLayout::GetDxgiFormat: invalid 'VertexElementType'"); + default: + LT_ENGINE_ASSERT(false, "dxVertexLayout::GetDxgiFormat: invalid 'VertexElementType'"); + return DXGI_FORMAT_UNKNOWN; } } diff --git a/Engine/src/Platform/GraphicsAPI/OpenGL/glVertexLayout.cpp b/Engine/src/Platform/GraphicsAPI/OpenGL/glVertexLayout.cpp index 6277904..eb71d1b 100644 --- a/Engine/src/Platform/GraphicsAPI/OpenGL/glVertexLayout.cpp +++ b/Engine/src/Platform/GraphicsAPI/OpenGL/glVertexLayout.cpp @@ -60,30 +60,33 @@ namespace Light { { switch (type) { - // #todo: add char - // int - case VertexElementType::Int1: return { GL_INT, 1u, sizeof(int), offset }; - case VertexElementType::Int2: return { GL_INT, 2u, sizeof(int), offset }; - case VertexElementType::Int3: return { GL_INT, 3u, sizeof(int), offset }; - case VertexElementType::Int4: return { GL_INT, 4u, sizeof(int), offset }; + /* byte */ + case Light::VertexElementType::Byte1: return { GL_BYTE, 1u, sizeof(GLbyte), offset }; + case Light::VertexElementType::Byte2: return { GL_BYTE, 1u, sizeof(GLbyte), offset }; + case Light::VertexElementType::Byte4: return { GL_BYTE, 1u, sizeof(GLbyte), offset }; - // uint - case VertexElementType::UInt1: return { GL_UNSIGNED_INT, 1u, sizeof(unsigned int), offset }; - case VertexElementType::UInt2: return { GL_UNSIGNED_INT, 2u, sizeof(unsigned int), offset }; - case VertexElementType::UInt3: return { GL_UNSIGNED_INT, 3u, sizeof(unsigned int), offset }; - case VertexElementType::UInt4: return { GL_UNSIGNED_INT, 4u, sizeof(unsigned int), offset }; + /* ubyte */ + case Light::VertexElementType::UByte1: return { GL_UNSIGNED_BYTE, 1u, sizeof(GLubyte), offset }; + case Light::VertexElementType::UByte2: return { GL_UNSIGNED_BYTE, 2u, sizeof(GLubyte), offset }; + case Light::VertexElementType::UByte4: return { GL_UNSIGNED_BYTE, 4u, sizeof(GLubyte), offset }; - // float - case VertexElementType::Float1: return { GL_FLOAT, 1u, sizeof(float), offset }; - case VertexElementType::Float2: return { GL_FLOAT, 2u, sizeof(float), offset }; - case VertexElementType::Float3: return { GL_FLOAT, 3u, sizeof(float), offset }; - case VertexElementType::Float4: return { GL_FLOAT, 4u, sizeof(float), offset }; + /* int */ + case VertexElementType::Int1: return { GL_INT, 1u, sizeof(GLint), offset }; + case VertexElementType::Int2: return { GL_INT, 2u, sizeof(GLint), offset }; + case VertexElementType::Int3: return { GL_INT, 3u, sizeof(GLint), offset }; + case VertexElementType::Int4: return { GL_INT, 4u, sizeof(GLint), offset }; - // double - case VertexElementType::Double1: return { GL_DOUBLE, 1, sizeof(float), offset }; - case VertexElementType::Double2: return { GL_DOUBLE, 2, sizeof(float), offset }; - case VertexElementType::Double3: return { GL_DOUBLE, 3, sizeof(float), offset }; - case VertexElementType::Double4: return { GL_DOUBLE, 4, sizeof(float), offset }; + /* uint */ + case VertexElementType::UInt1: return { GL_UNSIGNED_INT, 1u, sizeof(GLuint), offset }; + case VertexElementType::UInt2: return { GL_UNSIGNED_INT, 2u, sizeof(GLuint), offset }; + case VertexElementType::UInt3: return { GL_UNSIGNED_INT, 3u, sizeof(GLuint), offset }; + case VertexElementType::UInt4: return { GL_UNSIGNED_INT, 4u, sizeof(GLuint), offset }; + + /* float */ + case VertexElementType::Float1: return { GL_FLOAT, 1u, sizeof(GLfloat), offset }; + case VertexElementType::Float2: return { GL_FLOAT, 2u, sizeof(GLfloat), offset }; + case VertexElementType::Float3: return { GL_FLOAT, 3u, sizeof(GLfloat), offset }; + case VertexElementType::Float4: return { GL_FLOAT, 4u, sizeof(GLfloat), offset }; default: LT_ENGINE_ASSERT(false, "glVertexLayout::GetElementDesc: invalid 'VertexElementType'");