Skip to content

CMake based C++ Project template with support for glfw, glad, imgui, spdlog, tracy, stb-image and cgltf

License

Notifications You must be signed in to change notification settings

deccer/CMake-Glfw-OpenGL-Template

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

Screenshot

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 :)