98 lines
3.1 KiB
C++
98 lines
3.1 KiB
C++
// Copyright (c) 2022 Dominic Masters
|
|
//
|
|
// This software is released under the MIT License.
|
|
// https://opensource.org/licenses/MIT
|
|
|
|
#pragma once
|
|
#include "display/mesh/Mesh.hpp"
|
|
|
|
#define QUAD_VERTICE_COUNT 4
|
|
#define QUAD_INDICE_COUNT 6
|
|
#define QUAD_INDICE_PER_QUAD 2
|
|
|
|
namespace Dawn {
|
|
class QuadMesh {
|
|
public:
|
|
/**
|
|
* Buffers the vertices of a quad onto a primitive.
|
|
*
|
|
* @param mesh The primitive to buffer to.
|
|
* @param xy0 The lower X and Y coordinate.
|
|
* @param uv0 The lower Xand Y texture coordinate.
|
|
* @param xy1 The higher X and Y coordinate.
|
|
* @param uv1 The higher X and Y texture coordinate.
|
|
* @param z The Z position of the coordinates.
|
|
* @param verticeStart Start vertice to buffer to.
|
|
* @param indiceStart Start indice to buffer to.
|
|
*/
|
|
static void bufferQuadMeshWithZ(
|
|
Mesh *mesh,
|
|
glm::vec2 xy0, glm::vec2 uv0,
|
|
glm::vec2 xy1, glm::vec2 uv1,
|
|
float_t z, int32_t verticeStart, int32_t indiceStart
|
|
);
|
|
|
|
/**
|
|
* Buffers the vertices of a quad onto a primitive.
|
|
*
|
|
* @param mesh The primitive to buffer to.
|
|
* @param xy0 The lower X and Y coordinate.
|
|
* @param uv0 The lower Xand Y texture coordinate.
|
|
* @param xy1 The higher X and Y coordinate.
|
|
* @param uv1 The higher X and Y texture coordinate.
|
|
* @param verticeStart Start vertice to buffer to.
|
|
* @param indiceStart Start indice to buffer to.
|
|
*/
|
|
static void bufferQuadMesh(
|
|
Mesh *mesh,
|
|
glm::vec2 xy0, glm::vec2 uv0,
|
|
glm::vec2 xy1, glm::vec2 uv1,
|
|
int32_t verticeStart, int32_t indiceStart
|
|
);
|
|
|
|
/**
|
|
* Buffers texture coordinates on to an already initialized quad mesh.
|
|
*
|
|
* @param mesh Mesh to buffer the texture coordinates on to.
|
|
* @param uv0 Lower X and Y coordinates.
|
|
* @param uv1 Upper X and Y coordinates.
|
|
* @param verticeStart Start vertice to buffer in to.
|
|
*/
|
|
static void bufferCoordinates(
|
|
Mesh *mesh,
|
|
glm::vec2 uv0, glm::vec2 uv1,
|
|
int32_t verticeStart
|
|
);
|
|
|
|
/**
|
|
* Buffers the positions of a quad onto a primitive.
|
|
*
|
|
* @param mesh The primitive to buffer to.
|
|
* @param xy0 The lower X and Y coordinate.
|
|
* @param xy1 The higher X and Y coordinate.
|
|
* @param verticeStart Start vertice to buffer to.
|
|
*/
|
|
static void bufferPositions(
|
|
Mesh *mesh,
|
|
glm::vec2 xy0, glm::vec2 xy1,
|
|
int32_t verticeStart
|
|
);
|
|
|
|
/**
|
|
* Initializes a mesh to be a single quad.
|
|
*
|
|
* @param mesh The primitive to buffer to.
|
|
* @param xy0 The lower X and Y coordinate.
|
|
* @param uv0 The lower Xand Y texture coordinate.
|
|
* @param xy1 The higher X and Y coordinate.
|
|
* @param uv1 The higher X and Y texture coordinate.
|
|
* @param z The Z position of the coordinates.
|
|
*/
|
|
static void initQuadMesh(
|
|
Mesh *mesh,
|
|
glm::vec2 xy0, glm::vec2 uv0,
|
|
glm::vec2 xy1, glm::vec2 uv1,
|
|
float_t z
|
|
);
|
|
};
|
|
} |