X-Git-Url: http://git.lukelau.me/?p=opengl.git;a=blobdiff_plain;f=shapes.hpp;fp=shapes.hpp;h=69520aabdff32ce536db654250a233e0bd39e202;hp=0000000000000000000000000000000000000000;hb=c44e69ec78367fb2957324026894aef970f2481a;hpb=85f8f7278f24fe73fef1a19174376b155319072f diff --git a/shapes.hpp b/shapes.hpp new file mode 100644 index 0000000..69520aa --- /dev/null +++ b/shapes.hpp @@ -0,0 +1,84 @@ +#include +#define GLM_FORCE_PURE +#include + +using namespace std; + +constexpr array quadToTriangles(const array quads) { + return { + quads[0], + quads[1], + quads[2], + quads[2], + quads[3], + quads[0] + }; +} + +constexpr const glm::vec3 foo() { + constexpr glm::vec3 foo(1,2,3); + return foo; +} + +constexpr array cube() { + int i = 0; + array vertices; + + const array front = { + glm::vec3(1, -1, -1), + glm::vec3(-1, -1, -1), + glm::vec3(-1, 1, -1), + glm::vec3(1, 1, -1) + }; + + for (auto v: quadToTriangles(front)) + vertices[i++] = v; + + const array back = { + glm::vec3(1, 1, 1), + glm::vec3(-1, 1, 1), + glm::vec3(-1, -1, 1), + glm::vec3(1, -1, 1) + }; + for (auto v: quadToTriangles(back)) + vertices[i++] = v; + + + const array top = { + glm::vec3(1, 1, -1), + glm::vec3(-1, 1, -1), + glm::vec3(-1, 1, 1), + glm::vec3(1, 1, 1) + }; + for (auto v: quadToTriangles(top)) + vertices[i++] = v; + + const array bottom = { + glm::vec3(1, -1, 1), + glm::vec3(-1, -1, 1), + glm::vec3(-1, -1, -1), + glm::vec3(1, -1, -1) + }; + for (auto v: quadToTriangles(bottom)) + vertices[i++] = v; + + const array left = { + glm::vec3(-1, 1, 1), + glm::vec3(-1, 1, -1), + glm::vec3(-1, -1, -1), + glm::vec3(-1, -1, 1) + }; + for (auto v: quadToTriangles(left)) + vertices[i++] = v; + + const array right = { + glm::vec3(1, 1, -1), + glm::vec3(1, 1, 1), + glm::vec3(1, -1, 1), + glm::vec3(1, -1, -1) + }; + for (auto v: quadToTriangles(right)) + vertices[i++] = v; + + return vertices; +}