Add more buffer data type support
This commit is contained in:
@@ -36,18 +36,33 @@ namespace Inferno {
|
||||
uint32_t BufferElement::getTypeSize(const BufferElementType type)
|
||||
{
|
||||
switch (type) {
|
||||
case BufferElementType::None: return 0;
|
||||
case BufferElementType::Bool: return sizeof(bool);
|
||||
case BufferElementType::Int: return sizeof(int32_t);
|
||||
case BufferElementType::Int2: return sizeof(int32_t) * 2;
|
||||
case BufferElementType::Int3: return sizeof(int32_t) * 3;
|
||||
case BufferElementType::Int4: return sizeof(int32_t) * 4;
|
||||
case BufferElementType::Mat3: return sizeof(float) * 3 * 3;
|
||||
case BufferElementType::Mat4: return sizeof(float) * 4 * 4;
|
||||
case BufferElementType::Vec: return sizeof(float);
|
||||
case BufferElementType::Vec2: return sizeof(float) * 2;
|
||||
case BufferElementType::Vec3: return sizeof(float) * 3;
|
||||
case BufferElementType::Vec4: return sizeof(float) * 4;
|
||||
case BufferElementType::None: return 0;
|
||||
case BufferElementType::Bool: return sizeof(bool);
|
||||
case BufferElementType::Bool2: return sizeof(bool) * 2;
|
||||
case BufferElementType::Bool3: return sizeof(bool) * 3;
|
||||
case BufferElementType::Bool4: return sizeof(bool) * 4;
|
||||
case BufferElementType::Int: return sizeof(int32_t);
|
||||
case BufferElementType::Int2: return sizeof(int32_t) * 2;
|
||||
case BufferElementType::Int3: return sizeof(int32_t) * 3;
|
||||
case BufferElementType::Int4: return sizeof(int32_t) * 4;
|
||||
case BufferElementType::Uint: return sizeof(uint32_t);
|
||||
case BufferElementType::Uint2: return sizeof(uint32_t) * 2;
|
||||
case BufferElementType::Uint3: return sizeof(uint32_t) * 3;
|
||||
case BufferElementType::Uint4: return sizeof(uint32_t) * 4;
|
||||
case BufferElementType::Float: return sizeof(float);
|
||||
case BufferElementType::Vec2: return sizeof(float) * 2;
|
||||
case BufferElementType::Vec3: return sizeof(float) * 3;
|
||||
case BufferElementType::Vec4: return sizeof(float) * 4;
|
||||
case BufferElementType::Double: return sizeof(double);
|
||||
case BufferElementType::Double2: return sizeof(double);
|
||||
case BufferElementType::Double3: return sizeof(double);
|
||||
case BufferElementType::Double4: return sizeof(double);
|
||||
case BufferElementType::Mat2: return sizeof(float) * 2 * 2;
|
||||
case BufferElementType::Mat3: return sizeof(float) * 3 * 3;
|
||||
case BufferElementType::Mat4: return sizeof(float) * 4 * 4;
|
||||
case BufferElementType::DoubleMat2: return sizeof(double) * 2 * 2;
|
||||
case BufferElementType::DoubleMat3: return sizeof(double) * 3 * 3;
|
||||
case BufferElementType::DoubleMat4: return sizeof(double) * 4 * 4;
|
||||
};
|
||||
|
||||
ASSERT(false, "BufferElement unknown BufferElementType size!");
|
||||
@@ -57,18 +72,33 @@ namespace Inferno {
|
||||
uint32_t BufferElement::getTypeCount(const BufferElementType type)
|
||||
{
|
||||
switch (type) {
|
||||
case BufferElementType::None: return 0;
|
||||
case BufferElementType::Bool: return 1;
|
||||
case BufferElementType::Int: return 1;
|
||||
case BufferElementType::Int2: return 2;
|
||||
case BufferElementType::Int3: return 3;
|
||||
case BufferElementType::Int4: return 4;
|
||||
case BufferElementType::Mat3: return 3 * 3;
|
||||
case BufferElementType::Mat4: return 4 * 4;
|
||||
case BufferElementType::Vec: return 1;
|
||||
case BufferElementType::Vec2: return 2;
|
||||
case BufferElementType::Vec3: return 3;
|
||||
case BufferElementType::Vec4: return 4;
|
||||
case BufferElementType::None: return 0;
|
||||
case BufferElementType::Bool: return 1;
|
||||
case BufferElementType::Bool2: return 2;
|
||||
case BufferElementType::Bool3: return 3;
|
||||
case BufferElementType::Bool4: return 4;
|
||||
case BufferElementType::Int: return 1;
|
||||
case BufferElementType::Int2: return 2;
|
||||
case BufferElementType::Int3: return 3;
|
||||
case BufferElementType::Int4: return 4;
|
||||
case BufferElementType::Uint: return 1;
|
||||
case BufferElementType::Uint2: return 2;
|
||||
case BufferElementType::Uint3: return 3;
|
||||
case BufferElementType::Uint4: return 4;
|
||||
case BufferElementType::Float: return 1;
|
||||
case BufferElementType::Vec2: return 2;
|
||||
case BufferElementType::Vec3: return 3;
|
||||
case BufferElementType::Vec4: return 4;
|
||||
case BufferElementType::Double: return 1;
|
||||
case BufferElementType::Double2: return 2;
|
||||
case BufferElementType::Double3: return 3;
|
||||
case BufferElementType::Double4: return 4;
|
||||
case BufferElementType::Mat2: return 2 * 2;
|
||||
case BufferElementType::Mat3: return 3 * 3;
|
||||
case BufferElementType::Mat4: return 4 * 4;
|
||||
case BufferElementType::DoubleMat2: return 2 * 2;
|
||||
case BufferElementType::DoubleMat3: return 3 * 3;
|
||||
case BufferElementType::DoubleMat4: return 4 * 4;
|
||||
};
|
||||
|
||||
ASSERT(false, "BufferElement unknown BufferElementType count!");
|
||||
@@ -78,18 +108,33 @@ namespace Inferno {
|
||||
uint32_t BufferElement::getTypeGL(const BufferElementType type)
|
||||
{
|
||||
switch (type) {
|
||||
case BufferElementType::None: return GL_NONE;
|
||||
case BufferElementType::Bool: return GL_BOOL;
|
||||
case BufferElementType::Int: return GL_INT;
|
||||
case BufferElementType::Int2: return GL_INT;
|
||||
case BufferElementType::Int3: return GL_INT;
|
||||
case BufferElementType::Int4: return GL_INT;
|
||||
case BufferElementType::Mat3: return GL_FLOAT;
|
||||
case BufferElementType::Mat4: return GL_FLOAT;
|
||||
case BufferElementType::Vec: return GL_FLOAT;
|
||||
case BufferElementType::Vec2: return GL_FLOAT;
|
||||
case BufferElementType::Vec3: return GL_FLOAT;
|
||||
case BufferElementType::Vec4: return GL_FLOAT;
|
||||
case BufferElementType::None: return GL_NONE;
|
||||
case BufferElementType::Bool: return GL_BOOL;
|
||||
case BufferElementType::Bool2: return GL_BOOL;
|
||||
case BufferElementType::Bool3: return GL_BOOL;
|
||||
case BufferElementType::Bool4: return GL_BOOL;
|
||||
case BufferElementType::Int: return GL_INT;
|
||||
case BufferElementType::Int2: return GL_INT;
|
||||
case BufferElementType::Int3: return GL_INT;
|
||||
case BufferElementType::Int4: return GL_INT;
|
||||
case BufferElementType::Uint: return GL_UNSIGNED_INT;
|
||||
case BufferElementType::Uint2: return GL_UNSIGNED_INT;
|
||||
case BufferElementType::Uint3: return GL_UNSIGNED_INT;
|
||||
case BufferElementType::Uint4: return GL_UNSIGNED_INT;
|
||||
case BufferElementType::Float: return GL_FLOAT;
|
||||
case BufferElementType::Vec2: return GL_FLOAT;
|
||||
case BufferElementType::Vec3: return GL_FLOAT;
|
||||
case BufferElementType::Vec4: return GL_FLOAT;
|
||||
case BufferElementType::Double: return GL_DOUBLE;
|
||||
case BufferElementType::Double2: return GL_DOUBLE;
|
||||
case BufferElementType::Double3: return GL_DOUBLE;
|
||||
case BufferElementType::Double4: return GL_DOUBLE;
|
||||
case BufferElementType::Mat2: return GL_FLOAT;
|
||||
case BufferElementType::Mat3: return GL_FLOAT;
|
||||
case BufferElementType::Mat4: return GL_FLOAT;
|
||||
case BufferElementType::DoubleMat2: return GL_DOUBLE;
|
||||
case BufferElementType::DoubleMat3: return GL_DOUBLE;
|
||||
case BufferElementType::DoubleMat4: return GL_DOUBLE;
|
||||
};
|
||||
|
||||
ASSERT(false, "BufferElement unknown BufferElementType GL!");
|
||||
|
||||
@@ -1,20 +1,24 @@
|
||||
#ifndef BUFFER_H
|
||||
#define BUFFER_H
|
||||
|
||||
#include <cstddef> // std::size_t
|
||||
#include <cstdint> // std::uint32_t
|
||||
#include <cstddef> // size_t
|
||||
#include <cstdint> // int32_t, uint32_t
|
||||
#include <memory> // std::shared_ptr
|
||||
#include <string> // std::string
|
||||
#include <vector> // std::vector
|
||||
|
||||
namespace Inferno {
|
||||
|
||||
// https://www.khronos.org/opengl/wiki/Data_Type_(GLSL)
|
||||
enum class BufferElementType {
|
||||
None = 0,
|
||||
Bool,
|
||||
Int, Int2, Int3, Int4,
|
||||
Mat3, Mat4,
|
||||
Vec, Vec2, Vec3, Vec4,
|
||||
Bool, Bool2, Bool3, Bool4, // bvec
|
||||
Int, Int2, Int3, Int4, // ivec
|
||||
Uint, Uint2, Uint3, Uint4, // uvec
|
||||
Float, Vec2, Vec3, Vec4, // vec
|
||||
Double, Double2, Double3, Double4, // dvec
|
||||
Mat2, Mat3, Mat4, // mat
|
||||
DoubleMat2, DoubleMat3, DoubleMat4, // dmat
|
||||
};
|
||||
|
||||
// -----------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user