summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/gl_traits.hpp31
1 files changed, 30 insertions, 1 deletions
diff --git a/lib/gl_traits.hpp b/lib/gl_traits.hpp
index b50ec50..d140de9 100644
--- a/lib/gl_traits.hpp
+++ b/lib/gl_traits.hpp
@@ -3,12 +3,41 @@
#include <GL/glew.h>
#include <array>
#include <glm/common.hpp>
+#include <glm/fwd.hpp>
template<typename T> struct gl_traits;
-template<> struct gl_traits<float> {
+template<> struct gl_traits<glm::f32> {
static constexpr GLenum type {GL_FLOAT};
static constexpr GLint size {1};
};
+template<> struct gl_traits<glm::f64> {
+ static constexpr GLenum type {GL_DOUBLE};
+ static constexpr GLint size {1};
+};
+template<> struct gl_traits<glm::int8> {
+ static constexpr GLenum type {GL_BYTE};
+ static constexpr GLint size {1};
+};
+template<> struct gl_traits<glm::int16> {
+ static constexpr GLenum type {GL_SHORT};
+ static constexpr GLint size {1};
+};
+template<> struct gl_traits<glm::int32> {
+ static constexpr GLenum type {GL_INT};
+ static constexpr GLint size {1};
+};
+template<> struct gl_traits<glm::uint8> {
+ static constexpr GLenum type {GL_UNSIGNED_BYTE};
+ static constexpr GLint size {1};
+};
+template<> struct gl_traits<glm::uint16> {
+ static constexpr GLenum type {GL_UNSIGNED_SHORT};
+ static constexpr GLint size {1};
+};
+template<> struct gl_traits<glm::uint32> {
+ static constexpr GLenum type {GL_UNSIGNED_INT};
+ static constexpr GLint size {1};
+};
template<typename T, std::size_t S> struct gl_traits<std::array<T, S>> : public gl_traits<T> {
static constexpr GLint size {S * gl_traits<T>::size};