An experimental project exploring a range of tools, techniques, and topics related to graphics (OpenGL). Using Emscripten, the project is also portable to the web. The repo is broken into several projects:
- Engine is the core rendering and window management.
- Demos is a test project for whatever feature I'm working on.
- Test is composed of unit and integration tests.
Check out the online tests here!
Features
- 3D-Model Loading (using Assmip)
- 3D-Spatial Audio (using OpenAl)
- Font Batch Rendering (using dynamic font atlas generation with FreeType)
- Scheduler to dipatch basic tasks
Building
To build this project for both native and web platforms, you need to install the following tools:
-
Install Git
- Git is a distributed version control system.
- You can download it from Git's official website.
-
Install Vcpkg
- vcpkg is a C++ Library Manager for Windows, Linux, and MacOS.
- Follow the instructions on the vcpkg GitHub repository to install it.
-
Install Emscripten SDK
- Emscripten is an LLVM-to-WebAssembly compiler.
- Installation instructions can be found on the Emscripten website.
-
Install GCC/Clang/MSVC
- These are popular C++ compilers.
- GCC and Clang can be installed on most Linux distributions and MacOS.
- MSVC (Microsoft Visual C++) can be installed as part of Visual Studio on Windows. For Windows, you can download Visual Studio from Microsoft's website.
-
Install Ninja
- Ninja is a small build system with a focus on speed.
- It can be downloaded from the Ninja Build official website
Make sure all these tools are correctly installed and configured in your system's PATH before proceeding with the project build.
- You need to change the variables in the
build-native.bat
andbuild-web.bat
scripts.- These variables can sometimes not be set properly by Emscripten and Vcpkg so this is the easiest solution.
- (Alternatively you could add them to the system's path) then remove them.
- Run build-native.bat
- Run build-web.bat
Libraries & Licenses
-
OpenGL Mathematics (GLM). Which is licensed under The Happy Bunny License and the MIT License.
See LICENSE_GLM for more details. -
Assimp Model Import Library. Which is licensed under the BSD License.
See LICENSE_ASSIMP for more details. -
Google Test Framework (gtest). Which is licensed under a revised BSD 2-Clause License.
See LICENSE_GTEST for more details. -
EnTT Entity Component System Library. Which is licensed under the MIT License.
See LICENSE_ENTT for more details. -
Bullet Physics SDK (bullet3). Which is licensed under the zlib License.
See LICENSE_BULLET3 for more details. -
LodePNG. Which is licensed under the zlib License.
See LICENSE_LODEPNG for more details. -
GLFW (glfw3). Which is licensed under the zlib/libpng License.
See LICENSE_GLFW for more details. -
GLEW (glew). Which is licensed under the Modified BSD License, the Mesa 3D License (MIT License), and the Khronos License (MIT License).
See LICENSE_GLEW for more details.