This repository serves as a base layer for applications that utilize OpenGL and ImGui. "FE" in the name stands for "Focal Engine". Originally, it was part of the Focal Engine project, but it has since been moved here and transformed into a standalone module. This makes it easier to incorporate its functionality into other projects.
- Setting up GLFW and ImGui.
- Providing unique 24-character IDs upon request (useful for resource identification).
- A basic class for time measurement.
- A thread pool class that forms a solid base for creating a job system.
- A logging system with topic categorization and optional file output.
- An abstraction layer for TCP client and server that hides the stream nature of TCP. This allows for the sending and receiving of distinct messages.
- A profiling subsystem that allows for collecting timestamps of functions and/or sections using predefined macros. It supports multithreading, ensuring accurate profiling when all threads have completed their active work. The system also provides JSON export functionality for external visualization and analysis of the collected profiling data.
For a simple example of how to use this module, see the FEBasicApplication Example.
To add this module to your project, use the following command:
git submodule add https://github.com/Azzinoth/FEBasicApplication/
If you want to move the submodule to a folder named "SubSystems", for example, use the following command:
git mv FEBasicApplication SubSystems/
This project uses the following third-party libraries:
-
GLEW: This library is licensed under a permissive open-source license, similar to the MIT license. The full license text can be found at GLEW's GitHub repository.
-
GLFW: This library is licensed under the zlib License. The full license text can be found at GLFW's GitHub repository.
-
Dear ImGui: This library is licensed under the MIT License. The full license text can be found at Dear ImGui's GitHub repository.