https://github.com/deccer/cmake-glfw-opengl-template
CMake based C++ Project template with support for glfw, glad, imgui, spdlog, tracy, stb-image and cgltf
https://github.com/deccer/cmake-glfw-opengl-template
cgltf cmake cpp dear-imgui glfw glm imgui opengl project-template spdlog stb-image tracy
Last synced: 3 months ago
JSON representation
CMake based C++ Project template with support for glfw, glad, imgui, spdlog, tracy, stb-image and cgltf
- Host: GitHub
- URL: https://github.com/deccer/cmake-glfw-opengl-template
- Owner: deccer
- License: mit
- Created: 2022-10-03T11:35:16.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2025-05-24T09:01:11.000Z (4 months ago)
- Last Synced: 2025-05-24T10:18:18.053Z (4 months ago)
- Topics: cgltf, cmake, cpp, dear-imgui, glfw, glm, imgui, opengl, project-template, spdlog, stb-image, tracy
- Language: C++
- Homepage:
- Size: 330 KB
- Stars: 68
- Watchers: 1
- Forks: 7
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# CMake-Glfw-OpenGL-Template
## What is this?
CMake based C++ Project template with support for glfw, glad, imgui, spdlog, tracy, stbi, cgltf
This template is split into three parts
`Project` and `Project.Library` and `lib`
`Project` will be your actual project/game,
`Project.Library` containing supporting functions, things you might be reusing for something else. It could also contain your graphics/game engine abstractions.This template provides a basic `Application` base class, ready to go, including window creation via `glfw`, hooking up `OpenGL` via `glad`, preparing UI rendering via `dear imgui`, logging via `spdlog` and comes with profiler capabilities via `tracy` too. The example also loads a model with textures via `cgltf` and `stbi`.
`lib` contains the list of dependencies used by projects across the solution, in this case, `imgui`, `spdlog`, `glm`, `tracy`, `stbi` and `cgltf`.
The project provides a tiny example of an application which most graphics-engine/game-engine/game developers/vfx artists or perhaps even researchers write, and its always the same, some window glue, some opengl loading,
some mesh rendering and texture loading, `spdlog` unifies logging here - as each and every project I've seen keeps using `printf` or `cout` or most likely some self-rolled `logger` which is really unnecessary.
## For whom is this for?
- Prototyping
- Game Jams
- Getting started with programming
- Getting started with graphics programming## What do you need?
- `CMake`
- for VSCode the `CMake Tools` extension from Microsoft
- a compiler of your choice (Clang, GCC, MSVC)Make sure to run `git submodule update --init --recursive` upon cloning the repository to ensure that Deccer's Cubes are included.
## Assumptions
This project template assumes the following things
- OpenGL 4.6 support (can be changed in `Application.cpp:59-60`)
- Resolution >= 1920x1080 so that you can actually use the window (can be changed in `Application.cpp:66-67`)## What's next?
You most likely dont want to name your program `Project` and or `Project.Library`. Use your favorite search tool and replace `Project.Library` with `UE6.Engine` and `Project` with `UE6` :)