113 lines
3.1 KiB
C++
113 lines
3.1 KiB
C++
#include <array>
|
|
#include "geometry.h"
|
|
|
|
// Buffer layout:
|
|
// X, Y, Z, U, V
|
|
|
|
auto triangle_vertices = std::to_array<float>({
|
|
-0.5f, -0.5f, 0.0f, 1.0f, 1.0f,
|
|
0.5f, -0.5f, 0.0f, 0.5f, 0.5f,
|
|
0.0f, 0.5f, 0.0f, 0.0f, 0.0f,
|
|
});
|
|
|
|
auto triangle_indices = std::to_array<unsigned int>({
|
|
0, 1, 2
|
|
});
|
|
|
|
auto cube_vertices = std::to_array<float>({
|
|
-0.5f, -0.5f, -0.5f, 0.0f, 0.0f,
|
|
0.5f, -0.5f, -0.5f, 1.0f, 0.0f,
|
|
0.5f, 0.5f, -0.5f, 1.0f, 1.0f,
|
|
0.5f, 0.5f, -0.5f, 1.0f, 1.0f,
|
|
-0.5f, 0.5f, -0.5f, 0.0f, 1.0f,
|
|
-0.5f, -0.5f, -0.5f, 0.0f, 0.0f,
|
|
|
|
-0.5f, -0.5f, 0.5f, 0.0f, 0.0f,
|
|
0.5f, -0.5f, 0.5f, 1.0f, 0.0f,
|
|
0.5f, 0.5f, 0.5f, 1.0f, 1.0f,
|
|
0.5f, 0.5f, 0.5f, 1.0f, 1.0f,
|
|
-0.5f, 0.5f, 0.5f, 0.0f, 1.0f,
|
|
-0.5f, -0.5f, 0.5f, 0.0f, 0.0f,
|
|
|
|
-0.5f, 0.5f, 0.5f, 1.0f, 0.0f,
|
|
-0.5f, 0.5f, -0.5f, 1.0f, 1.0f,
|
|
-0.5f, -0.5f, -0.5f, 0.0f, 1.0f,
|
|
-0.5f, -0.5f, -0.5f, 0.0f, 1.0f,
|
|
-0.5f, -0.5f, 0.5f, 0.0f, 0.0f,
|
|
-0.5f, 0.5f, 0.5f, 1.0f, 0.0f,
|
|
|
|
0.5f, 0.5f, 0.5f, 1.0f, 0.0f,
|
|
0.5f, 0.5f, -0.5f, 1.0f, 1.0f,
|
|
0.5f, -0.5f, -0.5f, 0.0f, 1.0f,
|
|
0.5f, -0.5f, -0.5f, 0.0f, 1.0f,
|
|
0.5f, -0.5f, 0.5f, 0.0f, 0.0f,
|
|
0.5f, 0.5f, 0.5f, 1.0f, 0.0f,
|
|
|
|
-0.5f, -0.5f, -0.5f, 0.0f, 1.0f,
|
|
0.5f, -0.5f, -0.5f, 1.0f, 1.0f,
|
|
0.5f, -0.5f, 0.5f, 1.0f, 0.0f,
|
|
0.5f, -0.5f, 0.5f, 1.0f, 0.0f,
|
|
-0.5f, -0.5f, 0.5f, 0.0f, 0.0f,
|
|
-0.5f, -0.5f, -0.5f, 0.0f, 1.0f,
|
|
|
|
-0.5f, 0.5f, -0.5f, 0.0f, 1.0f,
|
|
0.5f, 0.5f, -0.5f, 1.0f, 1.0f,
|
|
0.5f, 0.5f, 0.5f, 1.0f, 0.0f,
|
|
0.5f, 0.5f, 0.5f, 1.0f, 0.0f,
|
|
-0.5f, 0.5f, 0.5f, 0.0f, 0.0f,
|
|
-0.5f, 0.5f, -0.5f, 0.0f, 1.0f
|
|
});
|
|
|
|
auto cube_indices = std::to_array<unsigned int>({
|
|
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
|
|
17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31
|
|
});
|
|
|
|
auto square_xyz = std::to_array<float>({
|
|
0.5f, 0.5f, 0.0f,
|
|
0.5f, -0.5f, 0.0f,
|
|
-0.5f, -0.5f, 0.0f,
|
|
-0.5f, 0.5f, 0.0f,
|
|
});
|
|
|
|
auto square_uv = std::to_array<float>({
|
|
1.0f, 1.0f,
|
|
1.0f, 0.0f,
|
|
0.0f, 0.0f,
|
|
0.0f, 1.0f,
|
|
});
|
|
|
|
auto square_indices = std::to_array<unsigned int>({
|
|
0, 1, 3,
|
|
1, 2, 3,
|
|
});
|
|
|
|
namespace LeddaGeometry {
|
|
const Shape TRIANGLE = {
|
|
.indices = triangle_indices.data(),
|
|
.indices_size = sizeof(triangle_indices),
|
|
.uv = triangle_vertices.data(),
|
|
.uv_size = sizeof(triangle_vertices),
|
|
.xyz = triangle_vertices.data(),
|
|
.xyz_size = sizeof(triangle_vertices),
|
|
};
|
|
|
|
const Shape SQUARE = {
|
|
.indices = square_indices.data(),
|
|
.indices_size = square_indices.size(),
|
|
.uv = square_uv.data(),
|
|
.uv_size = square_uv.size(),
|
|
.xyz = square_xyz.data(),
|
|
.xyz_size = square_xyz.size(),
|
|
};
|
|
|
|
const Shape CUBE = {
|
|
.indices = cube_indices.data(),
|
|
.indices_size = cube_indices.size(),
|
|
.uv = triangle_vertices.data(),
|
|
.uv_size = triangle_vertices.size(),
|
|
.xyz = triangle_vertices.data(),
|
|
.xyz_size = triangle_vertices.size(),
|
|
};
|
|
}
|