diff --git a/.cache/clangd/index/glad.c.C5E0D537357D99B1.idx b/.cache/clangd/index/glad.c.C5E0D537357D99B1.idx new file mode 100644 index 0000000..db96794 Binary files /dev/null and b/.cache/clangd/index/glad.c.C5E0D537357D99B1.idx differ diff --git a/.cache/clangd/index/glad.h.D2576963611097C4.idx b/.cache/clangd/index/glad.h.D2576963611097C4.idx new file mode 100644 index 0000000..748e06d Binary files /dev/null and b/.cache/clangd/index/glad.h.D2576963611097C4.idx differ diff --git a/.cache/clangd/index/glfw3.h.8D809999404A419F.idx b/.cache/clangd/index/glfw3.h.8D809999404A419F.idx new file mode 100644 index 0000000..4ad1bc1 Binary files /dev/null and b/.cache/clangd/index/glfw3.h.8D809999404A419F.idx differ diff --git a/.cache/clangd/index/khrplatform.h.B05AC99ACA6BC483.idx b/.cache/clangd/index/khrplatform.h.B05AC99ACA6BC483.idx new file mode 100644 index 0000000..7cafe43 Binary files /dev/null and b/.cache/clangd/index/khrplatform.h.B05AC99ACA6BC483.idx differ diff --git a/.cache/clangd/index/main.cpp.21561E3F69D0E087.idx b/.cache/clangd/index/main.cpp.21561E3F69D0E087.idx new file mode 100644 index 0000000..4404e8c Binary files /dev/null and b/.cache/clangd/index/main.cpp.21561E3F69D0E087.idx differ diff --git a/CMakeLists.txt b/CMakeLists.txt index bc65dd1..effdf06 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -61,6 +61,7 @@ file(GLOB_RECURSE PROJECT_HEADERS ${CMAKE_SOURCE_DIR}/source/*.h ) + # Combine all sources set(ALL_SOURCES ${PROJECT_SOURCES} ${LIBRARY_SOURCES}) @@ -86,6 +87,23 @@ target_include_directories(${EXECUTABLE_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/libraries ) +# 1. Find the GLFW library in your lib folder +find_library(GLFW_LIB NAMES glfw glfw3 PATHS "${CMAKE_SOURCE_DIR}/libraries" NO_DEFAULT_PATH) + +# 2. Link GLFW and the required Apple Frameworks +if(APPLE) + target_link_libraries(${EXECUTABLE_NAME} PRIVATE + ${GLFW_LIB} + "-framework Cocoa" + "-framework IOKit" + "-framework CoreVideo" + ) +else() + # For Windows/Linux + target_link_libraries(${EXECUTABLE_NAME} PRIVATE ${GLFW_LIB}) +endif() + + # Compiler-specific flags if(MSVC) target_compile_options(${EXECUTABLE_NAME} PRIVATE @@ -95,16 +113,16 @@ if(MSVC) /Zc:inline # Remove unreferenced COMDAT /WX- # Don't treat warnings as errors by default ) - + if(ENABLE_STATIC_ANALYSIS) target_compile_options(${EXECUTABLE_NAME} PRIVATE /analyze) endif() - + # MSVC debug flags if(CMAKE_BUILD_TYPE STREQUAL "Debug") target_compile_options(${EXECUTABLE_NAME} PRIVATE /Zi /Od) endif() - + else() # GCC/Clang target_compile_options(${EXECUTABLE_NAME} PRIVATE -Wall @@ -120,7 +138,7 @@ else() # GCC/Clang -Wformat=2 -Wnull-dereference ) - + # Additional warnings for static analysis if(ENABLE_STATIC_ANALYSIS) target_compile_options(${EXECUTABLE_NAME} PRIVATE @@ -129,14 +147,14 @@ else() # GCC/Clang -Wold-style-cast ) endif() - + # Sanitizers (Debug builds) if(ENABLE_SANITIZERS AND CMAKE_BUILD_TYPE STREQUAL "Debug") # Check if sanitizers are available include(CheckCXXCompilerFlag) check_cxx_compiler_flag("-fsanitize=address" HAS_ASAN) check_cxx_compiler_flag("-fsanitize=undefined" HAS_UBSAN) - + if(HAS_ASAN AND HAS_UBSAN) target_compile_options(${EXECUTABLE_NAME} PRIVATE -fsanitize=address,undefined,leak @@ -151,7 +169,7 @@ else() # GCC/Clang message(WARNING "Sanitizers requested but not available - skipping") endif() endif() - + # Optimization flags for Release if(CMAKE_BUILD_TYPE STREQUAL "Release") target_compile_options(${EXECUTABLE_NAME} PRIVATE @@ -160,7 +178,7 @@ else() # GCC/Clang -DNDEBUG ) endif() - + # Debug flags if(CMAKE_BUILD_TYPE STREQUAL "Debug") target_compile_options(${EXECUTABLE_NAME} PRIVATE diff --git a/build/bin/test b/build/bin/test deleted file mode 100755 index d9ae427..0000000 Binary files a/build/bin/test and /dev/null differ diff --git a/build/build.log b/build/build.log deleted file mode 100644 index e1bebcb..0000000 --- a/build/build.log +++ /dev/null @@ -1,10 +0,0 @@ -[ 25%] Creating symlink to compile_commands.json in project root -[ 50%] Building C object CMakeFiles/test.dir/source/glad.c.o -[ 75%] Building CXX object CMakeFiles/test.dir/source/main.cpp.o -[ 75%] Built target symlink_compile_commands -/Users/AfonsoCMSosua/Developer/C++/algorithm_visualizer/source/glad.c:192:79: warning: implicit conversion changes signedness: 'int' to 'GLuint' (aka 'unsigned int') [-Wsign-conversion] - const char *gl_str_tmp = (const char*)glGetStringi(GL_EXTENSIONS, index); - ~~~~~~~~~~~~ ^~~~~ -1 warning generated. -[100%] Linking CXX executable bin/test -[100%] Built target test diff --git a/source/main.cpp b/source/main.cpp index f8c3978..7e09850 100644 --- a/source/main.cpp +++ b/source/main.cpp @@ -1,9 +1,52 @@ +#include // Include GLAD before GLFW +#include #include -#include -#include - -int main() -{ - return 0; +// Callback to resize the viewport when the window is resized +void framebuffer_size_callback(GLFWwindow *window, int width, int height) { + (void)window; // Unused parameter + glViewport(0, 0, width, height); +} + +int main() { + // 1. Initialize GLFW + glfwInit(); + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); + glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); + glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); + + // 2. Create the Window + GLFWwindow *window = glfwCreateWindow(800, 600, "LearnOpenGL", NULL, NULL); + if (window == NULL) { + std::cout << "Failed to create GLFW window" << std::endl; + glfwTerminate(); + return -1; + } + glfwMakeContextCurrent(window); + glfwSetFramebufferSizeCallback(window, framebuffer_size_callback); + + // 3. Initialize GLAD (Load function pointers) + if (!gladLoadGLLoader(reinterpret_cast(glfwGetProcAddress))){ + std::cout << "Failed to initialize GLAD" << std::endl; + return -1; + } + + // 4. The Render Loop + while (!glfwWindowShouldClose(window)) { + // Input + if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS) + glfwSetWindowShouldClose(window, true); + + // Rendering commands here + glClearColor(0.2f, 0.3f, 0.3f, 1.0f); // Set clear color (Teal) + glClear(GL_COLOR_BUFFER_BIT); // Clear the screen + + // Swap buffers and poll IO events + glfwSwapBuffers(window); + glfwPollEvents(); + } + + // 5. Clean up + glfwTerminate(); + return 0; } diff --git a/test b/test index d9ae427..e4499b0 100755 Binary files a/test and b/test differ