diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..ed662f71a8362be1f10ef677eb3c8ad91233b921 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,75 @@ +cmake_minimum_required(VERSION 3.1) + +#============================================================== +# Configuration +#============================================================== + +set(PROJECT_NAME "Main") +set(EXECUTABLE_NAME "Main") + +set(CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD ${CXX_STANDARD}) + +if (MSVC) + add_compile_options(/EHsc) +endif() + +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) + +#===================================== +# Options +#===================================== + +if(WIN32) + option(CMAKE_TOOLCHAIN_FILE "C:/vcpkg/vcpkg/scripts/buildsystems/vcpkg.cmake") +elseif(UNIX) + #option(CMAKE_TOOLCHAIN_FILE "/amuhome/b20017738/Bureau/vcpkg/scripts/buildsystems/vcpkg.cmake") +endif() + +#============================================================== +# Sources +#============================================================== + +set(SOURCES ${CMAKE_SOURCE_DIR}/source/) +set(LIBRARY ${CMAKE_SOURCE_DIR}/library/) +set(INCLUDE ${CMAKE_SOURCE_DIR}/include/) + +set(VCPKG_INCLUDE ${CMAKE_SOURCE_DIR}/vcpkg_installed/*/include) +set(VCPKG_LIB ${CMAKE_SOURCE_DIR}/vcpkg_installed/*/lib) + +#============================================================== +# Build +#============================================================== + +project(${PROJECT_NAME}) +set(CURRENT_TARGET ${EXECUTABLE_NAME}) + +add_executable(${CURRENT_TARGET}) + +foreach(dir ${SOURCES}) + add_subdirectory(${dir}) +endforeach() + +set_property(TARGET ${CURRENT_TARGET} PROPERTY RUNTIME_OUTPUT_DIRECTORY $<1:${CMAKE_SOURCE_DIR}>) + +#============================================================== +# Linking +#============================================================== + +target_include_directories(${CURRENT_TARGET} PRIVATE ${INCLUDE}) + +#list(APPEND CMAKE_PREFIX_PATH "/amuhome/b20017738/Bureau/vcpkg/packages/glew_x64-linux") +#list(APPEND CMAKE_PREFIX_PATH "/amuhome/b20017738/Bureau/vcpkg/packages/glm_x64-linux") +#list(APPEND CMAKE_PREFIX_PATH "/amuhome/b20017738/Bureau/vcpkg/packages/imgui_x64-linux") + +find_package(glfw3 REQUIRED) +find_package(GLEW REQUIRED) +find_package(glm CONFIG REQUIRED) +find_package(imgui REQUIRED) + +target_link_libraries(${CURRENT_TARGET} PRIVATE glfw) +target_link_libraries(${CURRENT_TARGET} PRIVATE GLEW::GLEW) +target_link_libraries(${CURRENT_TARGET} PRIVATE glm::glm-header-only) +target_link_libraries(${CURRENT_TARGET} PRIVATE imgui::imgui) + diff --git a/Main b/Main new file mode 100755 index 0000000000000000000000000000000000000000..d6eba117ec4ac1e24aaa77c3c625a3077803184e Binary files /dev/null and b/Main differ diff --git a/source/CMakelists.txt b/source/CMakeLists.txt similarity index 100% rename from source/CMakelists.txt rename to source/CMakeLists.txt diff --git a/source/engine/graphics/back/buffers/DynamicBuffer.tpp b/source/engine/graphics/back/buffers/DynamicBuffer.tpp index 80c3a40c5e98b8af5beaa46645fd8a7dd040741e..0fbb32be92a8c60b7bac30c61588a783fb5dd839 100644 --- a/source/engine/graphics/back/buffers/DynamicBuffer.tpp +++ b/source/engine/graphics/back/buffers/DynamicBuffer.tpp @@ -3,6 +3,7 @@ #include <GL/glew.h> #include <exception> #include <stdexcept> +#include <cstring> #include <iostream> diff --git a/source/engine/graphics/back/buffers/Layout.hpp b/source/engine/graphics/back/buffers/Layout.hpp index 994e24cb9b0401a22aec5af426bbd9fee2e37ca4..dae2abbcc364be4752d926f677757c156ac2b3e5 100644 --- a/source/engine/graphics/back/buffers/Layout.hpp +++ b/source/engine/graphics/back/buffers/Layout.hpp @@ -5,17 +5,6 @@ namespace megu { namespace layout { - enum Value; - } - - using Layout = std::list<layout::Value>; - using Layout_Initializer = std::initializer_list<layout::Value>; - - namespace layout { - inline size_t weight(const Layout & layout) { - return std::accumulate(layout.begin(), layout.end(), 0); - } - enum Value : uint8_t { POSITION = 3, FLAT = 2, @@ -26,4 +15,13 @@ namespace megu { ID = 1, }; } + + using Layout = std::list<layout::Value>; + using Layout_Initializer = std::initializer_list<layout::Value>; + + namespace layout { + inline size_t weight(const Layout & layout) { + return std::accumulate(layout.begin(), layout.end(), 0); + } + } } \ No newline at end of file diff --git a/source/engine/graphics/back/geometry/Geometry.hpp b/source/engine/graphics/back/geometry/Geometry.hpp index 0d51a917e8a7348c26f1b1be46f86ecaf15440f6..d61e0eaf9d126e4cb000a20c5e3e8a0fe0d729d6 100644 --- a/source/engine/graphics/back/geometry/Geometry.hpp +++ b/source/engine/graphics/back/geometry/Geometry.hpp @@ -10,8 +10,8 @@ #include "../buffers/Layout.hpp" namespace megu { - using Vertices = std::vector<float>; - using Elements = std::vector<unsigned int>; + using Vertices_t = std::vector<float>; + using Elements_t = std::vector<unsigned int>; enum Primitive { TRIANGLES = GL_TRIANGLES, @@ -25,7 +25,7 @@ namespace megu { Geometry(const Layout_Initializer &); ~Geometry() = default; - virtual const Vertices & vertices() const = 0; + virtual const Vertices_t & vertices() const = 0; private: Layout _layout; @@ -38,7 +38,7 @@ namespace megu { Geometry_Indiced(const Layout_Initializer &); ~Geometry_Indiced() = default; - virtual const Elements & elements() const = 0; + virtual const Elements_t & elements() const = 0; }; template <class T, Primitive P> @@ -48,8 +48,8 @@ namespace megu { Static_Geometry(const Layout_Initializer &); ~Static_Geometry() = default; - const Vertices & vertices() const final override {return Static_Geometry<T, P>::Vertices();} - static const Vertices & Vertices() {return T::Vertices();} + const Vertices_t & vertices() const final override {return Static_Geometry<T, P>::Vertices();} + static const Vertices_t & Vertices() {return T::Vertices();} }; template <class T, Primitive P> @@ -59,8 +59,8 @@ namespace megu { Static_Geometry_Indiced(const Layout_Initializer &); ~Static_Geometry_Indiced() = default; - const Vertices & elements() const final override {return Static_Geometry_Indiced<T, P>::Elements();} - static const Vertices & Elements() {return T::Elements();} + const Elements_t & elements() const final override {return Static_Geometry_Indiced<T, P>::Elements();} + static const Elements_t & Elements() {return T::Elements();} }; diff --git a/source/main.cpp b/source/main.cpp index 4e5c853aabd654e55d5b1b5bb99490c28c199a05..d0207f29da94f815d12c5521c5dee08954b136ac 100644 --- a/source/main.cpp +++ b/source/main.cpp @@ -11,7 +11,7 @@ #define WINDOW_WIDTH 1200 #define WINDOW_HEIGHT 720 -int main(int argc, const char * argv) { +int main(int argc, const char * argv[]) { try { //? GLFW if(glfwInit() == GLFW_FALSE) {