Add more buffer data type support
This commit is contained in:
@@ -38,16 +38,31 @@ namespace Inferno {
|
|||||||
switch (type) {
|
switch (type) {
|
||||||
case BufferElementType::None: return 0;
|
case BufferElementType::None: return 0;
|
||||||
case BufferElementType::Bool: return sizeof(bool);
|
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::Int: return sizeof(int32_t);
|
||||||
case BufferElementType::Int2: return sizeof(int32_t) * 2;
|
case BufferElementType::Int2: return sizeof(int32_t) * 2;
|
||||||
case BufferElementType::Int3: return sizeof(int32_t) * 3;
|
case BufferElementType::Int3: return sizeof(int32_t) * 3;
|
||||||
case BufferElementType::Int4: return sizeof(int32_t) * 4;
|
case BufferElementType::Int4: return sizeof(int32_t) * 4;
|
||||||
case BufferElementType::Mat3: return sizeof(float) * 3 * 3;
|
case BufferElementType::Uint: return sizeof(uint32_t);
|
||||||
case BufferElementType::Mat4: return sizeof(float) * 4 * 4;
|
case BufferElementType::Uint2: return sizeof(uint32_t) * 2;
|
||||||
case BufferElementType::Vec: return sizeof(float);
|
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::Vec2: return sizeof(float) * 2;
|
||||||
case BufferElementType::Vec3: return sizeof(float) * 3;
|
case BufferElementType::Vec3: return sizeof(float) * 3;
|
||||||
case BufferElementType::Vec4: return sizeof(float) * 4;
|
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!");
|
ASSERT(false, "BufferElement unknown BufferElementType size!");
|
||||||
@@ -59,16 +74,31 @@ namespace Inferno {
|
|||||||
switch (type) {
|
switch (type) {
|
||||||
case BufferElementType::None: return 0;
|
case BufferElementType::None: return 0;
|
||||||
case BufferElementType::Bool: return 1;
|
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::Int: return 1;
|
||||||
case BufferElementType::Int2: return 2;
|
case BufferElementType::Int2: return 2;
|
||||||
case BufferElementType::Int3: return 3;
|
case BufferElementType::Int3: return 3;
|
||||||
case BufferElementType::Int4: return 4;
|
case BufferElementType::Int4: return 4;
|
||||||
case BufferElementType::Mat3: return 3 * 3;
|
case BufferElementType::Uint: return 1;
|
||||||
case BufferElementType::Mat4: return 4 * 4;
|
case BufferElementType::Uint2: return 2;
|
||||||
case BufferElementType::Vec: return 1;
|
case BufferElementType::Uint3: return 3;
|
||||||
|
case BufferElementType::Uint4: return 4;
|
||||||
|
case BufferElementType::Float: return 1;
|
||||||
case BufferElementType::Vec2: return 2;
|
case BufferElementType::Vec2: return 2;
|
||||||
case BufferElementType::Vec3: return 3;
|
case BufferElementType::Vec3: return 3;
|
||||||
case BufferElementType::Vec4: return 4;
|
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!");
|
ASSERT(false, "BufferElement unknown BufferElementType count!");
|
||||||
@@ -80,16 +110,31 @@ namespace Inferno {
|
|||||||
switch (type) {
|
switch (type) {
|
||||||
case BufferElementType::None: return GL_NONE;
|
case BufferElementType::None: return GL_NONE;
|
||||||
case BufferElementType::Bool: return GL_BOOL;
|
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::Int: return GL_INT;
|
||||||
case BufferElementType::Int2: return GL_INT;
|
case BufferElementType::Int2: return GL_INT;
|
||||||
case BufferElementType::Int3: return GL_INT;
|
case BufferElementType::Int3: return GL_INT;
|
||||||
case BufferElementType::Int4: return GL_INT;
|
case BufferElementType::Int4: return GL_INT;
|
||||||
case BufferElementType::Mat3: return GL_FLOAT;
|
case BufferElementType::Uint: return GL_UNSIGNED_INT;
|
||||||
case BufferElementType::Mat4: return GL_FLOAT;
|
case BufferElementType::Uint2: return GL_UNSIGNED_INT;
|
||||||
case BufferElementType::Vec: return GL_FLOAT;
|
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::Vec2: return GL_FLOAT;
|
||||||
case BufferElementType::Vec3: return GL_FLOAT;
|
case BufferElementType::Vec3: return GL_FLOAT;
|
||||||
case BufferElementType::Vec4: 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!");
|
ASSERT(false, "BufferElement unknown BufferElementType GL!");
|
||||||
|
|||||||
@@ -1,20 +1,24 @@
|
|||||||
#ifndef BUFFER_H
|
#ifndef BUFFER_H
|
||||||
#define BUFFER_H
|
#define BUFFER_H
|
||||||
|
|
||||||
#include <cstddef> // std::size_t
|
#include <cstddef> // size_t
|
||||||
#include <cstdint> // std::uint32_t
|
#include <cstdint> // int32_t, uint32_t
|
||||||
#include <memory> // std::shared_ptr
|
#include <memory> // std::shared_ptr
|
||||||
#include <string> // std::string
|
#include <string> // std::string
|
||||||
#include <vector> // std::vector
|
#include <vector> // std::vector
|
||||||
|
|
||||||
namespace Inferno {
|
namespace Inferno {
|
||||||
|
|
||||||
|
// https://www.khronos.org/opengl/wiki/Data_Type_(GLSL)
|
||||||
enum class BufferElementType {
|
enum class BufferElementType {
|
||||||
None = 0,
|
None = 0,
|
||||||
Bool,
|
Bool, Bool2, Bool3, Bool4, // bvec
|
||||||
Int, Int2, Int3, Int4,
|
Int, Int2, Int3, Int4, // ivec
|
||||||
Mat3, Mat4,
|
Uint, Uint2, Uint3, Uint4, // uvec
|
||||||
Vec, Vec2, Vec3, Vec4,
|
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