added new cmake setup, graphics, vendors, obj importer, etc.
This commit is contained in:
112
src/gfx/geometry.cpp
Normal file
112
src/gfx/geometry.cpp
Normal file
@@ -0,0 +1,112 @@
|
||||
#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(),
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user