# ICT290 [Demo Video](https://drive.google.com/file/d/1zvMv6yYCirqhxuQkzkDIxvu-PJVKuDDr/preview) ## System Requirements - While it is not required, it is highly recommended that a dedicated GPU is used. ## Known Issues ### Windows #### High DPI scaling - If you are using a monitor with DPI scaling on Windows you will need to right-click the ICT290.exe, go to properties, go to compatability, change high DPI settings and enable high dpi scaling override for the application. This will fix any issues with the mouse cursor getting stuck on the side of the screen, especially with a multi monitor set up. ## Cloning This project utilises *git submodules*. To both clone this and the required submodules run `git clone --recurse-submodules https://github.com/mhwdvs/sdl2-boilerplate` Alternatively, you can run `git submodules init && git submodules update` if you have already cloned the repo without submodules ## Dependencies Generally; - Python >= 3.6 (for glad build generator) - CMake >= 3.15 - git Initialise git lfs by running: `git lfs install` ### Linux Debian/Ubuntu: - `sudo apt install git cmake ninja-build xorg-dev libwayland-dev wayland-protocols extra-cmake-modules build-essential autoconf automake libtool pkg-config libasound2-dev libpulse-dev libaudio-dev libjack-dev libx11-dev libxext-dev libxrandr-dev libxcursor-dev libxi-dev libxinerama-dev libxxf86vm-dev libxss-dev libgl1-mesa-dev libdbus-1-dev libudev-dev libgles2-mesa-dev libegl1-mesa-dev libibus-1.0-dev fcitx-libs-dev libsamplerate0-dev libsndio-dev libwayland-dev libxkbcommon-dev libdrm-dev libgbm-dev libdecoration0-dev` Fedora - `sudo dnf install git cmake ninja-build libasan libubsan SDL2-devel freeglut-devel mesa-libGL-devel libXi-devel libXcursor-devel libXrandr-devel libX11-devel` ### MacOS TODO ### Windows Those mentioned above, as well as; - MSVC In addition, to debug with MSVC's address sanitiser you will need to add the relevant ASAN DLL to your system PATH environment variable. [Read more](https://stackoverflow.com/questions/66531482/application-crashes-when-using-address-sanitizer-with-msvc) ## Building Generate Ninja build files: `cmake -S . -B build --DCMAKE_BUILD_TYPE=Release -G Ninja` If you'd like to enable all available sanitisers for your compiler (ASanitizer, UBSan, LSan), you may also add the `-DSANITISERS=ON` variable to your CMake configuration command Build with Ninja `cmake --build build` Because FreeGLUT is bad, you will need to repeat this process (Generate + Build) twice for your configuration to work. ## Run ### Linux/MacOS `cd build/src/ && ./Main` ### Windows `cd build/src/ && Main.exe` ## Compatability Generally; - MSVC on Windows - Clang/GCC on Linux/MacOS