VertexLayout
- Added Byte and UByte types to VertexLayout - Changed sizeof(int/float...) to sizeof(GLint, GLfloat...) in glVertexLayout
This commit is contained in:
parent
40355ebfc2
commit
ec8669d3fe
3 changed files with 45 additions and 36 deletions
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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'");
|
||||
|
|
Loading…
Add table
Reference in a new issue