Code sample: Vector types
Christophe edited this page 2016-11-01 10:24:34 +01:00
#include <glm/vec2.hpp>// glm::vec2
#include <glm/packing.hpp>// glm::packUnorm2x16
#include <glm/integer.hpp>// glm::uint
#include <glm/gtc/type_precision.hpp>// glm::i8vec2, glm::i32vec2

std::size_t const VertexCount = 4;

// Float quad geometry
std::size_t const PositionSizeF32 = VertexCount * sizeof(glm::vec2);
glm::vec2 const PositionDataF32[VertexCount] =
{
    glm::vec2(-1.0f,-1.0f),
    glm::vec2( 1.0f,-1.0f),
    glm::vec2( 1.0f, 1.0f),
    glm::vec2(-1.0f, 1.0f)
};

// Half-float quad geometry
std::size_t const PositionSizeF16 = VertexCount * sizeof(glm::uint);
glm::uint const PositionDataF16[VertexCount] =
{
    glm::uint(glm::packUnorm2x16(glm::vec2(-1.0f, -1.0f))),
    glm::uint(glm::packUnorm2x16(glm::vec2( 1.0f, -1.0f)),
    glm::uint(glm::packUnorm2x16(glm::vec2( 1.0f, 1.0f))),
    glm::uint(glm::packUnorm2x16(glm::vec2(-1.0f, 1.0f)))
};

// 8 bits signed integer quad geometry
std::size_t const PositionSizeI8 = VertexCount * sizeof(glm::i8vec2);
glm::i8vec2 const PositionDataI8[VertexCount] =
{
    glm::i8vec2(-1,-1),
    glm::i8vec2( 1,-1),
    glm::i8vec2( 1, 1),
    glm::i8vec2(-1, 1)
};

// 32 bits signed integer quad geometry
std::size_t const PositionSizeI32 = VertexCount * sizeof(glm::i32vec2);
glm::i32vec2 const PositionDataI32[VertexCount] =
{
    glm::i32vec2 (-1,-1),
    glm::i32vec2 ( 1,-1),
    glm::i32vec2 ( 1, 1),
    glm::i32vec2 (-1, 1)
};