64 lines
1.8 KiB
C++
64 lines
1.8 KiB
C++
// Copyright (c) 2022 Dominic Masters
|
|
//
|
|
// This software is released under the MIT License.
|
|
// https://opensource.org/licenses/MIT
|
|
|
|
#include "CubeMesh.hpp"
|
|
|
|
using namespace Dawn;
|
|
|
|
void CubeMesh::buffer(
|
|
Mesh &mesh,
|
|
glm::vec3 pos, glm::vec3 size,
|
|
int32_t verticeStart, int32_t indiceStart
|
|
) {
|
|
mesh.bufferPositions(verticeStart, std::array<glm::vec3, CUBE_VERTICE_COUNT>{{
|
|
pos,
|
|
glm::vec3(pos.x+size.x, pos.y, pos.z),
|
|
glm::vec3(pos.x, pos.y+size.y, pos.z),
|
|
glm::vec3(pos.x+size.x, pos.y+size.y, pos.z),
|
|
|
|
glm::vec3(pos.x, pos.y, pos.z+size.z),
|
|
glm::vec3(pos.x+size.x, pos.y, pos.z+size.z),
|
|
glm::vec3(pos.x, pos.y+size.y, pos.z+size.z),
|
|
pos + size
|
|
}});
|
|
|
|
mesh.bufferCoordinates(verticeStart,std::array<glm::vec2,CUBE_VERTICE_COUNT>{{
|
|
glm::vec2(0, 0),
|
|
glm::vec2(1, 0),
|
|
glm::vec2(0, 1),
|
|
glm::vec2(1, 1),
|
|
|
|
glm::vec2(0, 0),
|
|
glm::vec2(1, 0),
|
|
glm::vec2(0, 1),
|
|
glm::vec2(1, 1)
|
|
}});
|
|
|
|
mesh.bufferIndices(indiceStart, std::array<meshindice_t, CUBE_INDICE_COUNT>{{
|
|
// Back
|
|
verticeStart, verticeStart + 1, verticeStart + 3,
|
|
verticeStart, verticeStart + 2, verticeStart + 3,
|
|
|
|
// Right
|
|
verticeStart + 1, verticeStart + 5, verticeStart + 7,
|
|
verticeStart + 1, verticeStart + 3, verticeStart + 7,
|
|
|
|
// Left
|
|
verticeStart + 4, verticeStart, verticeStart + 2,
|
|
verticeStart + 4, verticeStart + 6, verticeStart + 2,
|
|
|
|
// Front
|
|
verticeStart + 5, verticeStart + 4, verticeStart + 6,
|
|
verticeStart + 5, verticeStart + 7, verticeStart + 6,
|
|
|
|
// Top
|
|
verticeStart + 7, verticeStart + 2, verticeStart + 6,
|
|
verticeStart + 7, verticeStart + 3, verticeStart + 2,
|
|
|
|
// Bottom
|
|
verticeStart + 1, verticeStart, verticeStart + 4,
|
|
verticeStart + 1, verticeStart + 4, verticeStart + 5
|
|
}});
|
|
} |