C++ OpenGL 3D Game Tutorial Series - Learn to code an OpenGL 3D Game in C++ from scratch

Overview

CPP11 TutorialNumber Discord channel Patreon YouTube

C++ OpenGL 3D Game Tutorial Series is a YouTube Tutorial Series,
whose purpose is to help all those who want to take their first steps in the game development from scratch.
In this series you'll learn how to create an OpenGL 3D Game Demo, starting from the creation of a Window by using Win32 API
to the making of all the necessary sub-systems in order to achieve a complete 3D Game, like

  • OpenGL 3D Graphics Engine
  • Input System
  • etc.

For any questions, doubts or clarifications about the C++ OpenGL 3D Game Tutorial Series, you can join the discord server, where you can meet other users or developers like you.
Before to ask any question, check the FAQs. The answers you are searching for could be already there.
You can find the license here.


This project is available under a free and permissive license, but needs a financial support to sustain its development.
The development includes both the making of video tutorials and the writing of the code.
Consider to support it through Patreon.

Any single contribution would be greately appreciated, regardless the amount.
Many thanks to all these people who have supported me so far!

Patreon

Supporters

Thank you so much for your huge support!

Patreon Supporters (alphabetical order)

Ahmad A. - Andrew C. - Andrew M. - Anotherbear Gamer - Bastien R. - bdfy - Biuret
Carlo S. - Daniel W. - Elite Salad - hisuzuki - Howl C - James B. - Joshua v.
kuronk cat - Lie - Manuel H. - Mateusz P. - Miles H. - Murdo M. - Nikhil R.
Neil W. - Oliver H. - Patrick B. - Ridtichai B. - Rem saigao
REX Li - Robson - Snip - Squeegiefilms - The Spygineer
Valgard - Werner O. - WyattFlash

All YouTube - Discord - GitHub - Twitter followers and viewers

P.S.: If you are a Patron and you want to be added or removed from this list, please send a message to PardCode through Patreon.

License

The license of this project is based on the modified MIT-License.

That means you can do whatever you want with the code available in this repository. The only conditions to meet are:

  • include the license text in your product (e.g. in the About Window of a GUI program, or Credits Section of a 2D/3D Visual Game)
  • include (or simply not delete) the license text in all the source code files you get from this repository (copy-paste the license text to the top of all the source code files you get from this repository, even if you have partially modified them. )

If you want to modify and redistribute the source code files available in this repository, you can optionally add your own copyright notice together with the license text in this way:

...
C++ OpenGL 3D Game Tutorial Series (https://github.com/PardCode/OpenGL-Game-Tutorial-Series)
<project name>, <website link or nothing>
  
Copyright (c) 2021, PardCode
Copyright (c) <your years>, <your name>  
...

The license text is available in the LICENSE file.

You might also like...
Project for C programming class building a casino that includes blackjack, slots, and scratch offs.

Casino Project for C programming class building a casino that includes blackjack, slots, and scratch offs. Project description This project will requi

Step by step, learn to develop an operating system on RISC-V

This course is used to teach and demonstrate how to write a simple operating system kernel for the RISC-V platform from scratch.

📘 CHAPTER-6 📘 10 days of C++. Learn the basics of C++. Other topics will be covered in chapter-7

CPP-BOOK CHAPTER - 6: 10 days of C++. Learn the basics of C++. Other topics will be covered in the next chapter(premium) /* Multi-line Comment */ // S

I am planning to add a beginner friendly path for my Juniors to Learn DSA and I will try to provide solutions of every problem also. We can add codeChef Challenge solutions also

DSA-Path-And-Important-Questions I am planning to add a beginner friendly path for my Juniors to Learn DSA Are you a Newbie in programming and want to

My projects while i learn C language.
My projects while i learn C language.

Coding Exercises Projects that i made while i am learning C language. Exercise 1: prime-numbers.c It is a program that checks whether the given number

A place where you can learn and practise various Problems and algorithms
A place where you can learn and practise various Problems and algorithms

Problem-Solving Problem solving is an art of solving some real time challenges. And this is a place to get started, you can find many problems to solv

A project uses for beginners, who wants to learn basic Cpp.

Learning Basic Cpp The basic project for who wants to learn Cpp. Notes: All the files are coded using Microsoft Visual Studio 2019. If you want to cod

learn how to use BPF/eBPF
learn how to use BPF/eBPF

学习Linux BPF/eBPF 编程 打造学习BPF知识的中文社区。

The Repository Contains all about Data Structure and Algorithms with Practice problems, series, and resources to follow!

🏆 The Complete DSA Preparation 🏆 This repository contains all the DSA (Data-Structures, Algorithms, 450 DSA by Love Babbar Bhaiya,STriver Series ,FA

Comments
  • Code review

    Code review

    • In https://github.com/PardCode/OpenGL-3D-Game-Tutorial-Series/blob/4d381770a8e1cf3b2850f4cc236568856de7fa5d/Tutorial8_EntitySystem_Basics/Game/MyGame.cpp#L41 not missing calling OEntitySystem::update ?

    • In https://github.com/PardCode/OpenGL-3D-Game-Tutorial-Series/blob/4d381770a8e1cf3b2850f4cc236568856de7fa5d/Tutorial8_EntitySystem_Basics/OGL3D/source/OGL3D/Entity/OEntitySystem.cpp#L41 I find sad to set each field this way, this is error-prone (missing one, i.e.) better to use the constructor to pass these parameters: the compiler will warn you in case of missing one.

    • In https://github.com/PardCode/OpenGL-3D-Game-Tutorial-Series/blob/4d381770a8e1cf3b2850f4cc236568856de7fa5d/Tutorial8_EntitySystem_Basics/OGL3D/source/OGL3D/Entity/OEntitySystem.cpp#L54 You use m_entitiesToDestroy for not interfering deleting elements when iterating on them, but why not for createEntityInternal ? I guess you can create entities during the entity->onUpdate ? I guess a fake solution is to use mutex because creating entities at run-time will create a dead lock. But point to take into account when threading your game. Another solution would be unordered_map (confer section Iterator validity https://cplusplus.com/reference/unordered_map/unordered_map/erase/ vs https://cplusplus.com/reference/map/map/erase/)

    • Risk of recursivity https://github.com/PardCode/OpenGL-3D-Game-Tutorial-Series/blob/4d381770a8e1cf3b2850f4cc236568856de7fa5d/Tutorial8_EntitySystem_Basics/OGL3D/source/OGL3D/Entity/OEntitySystem.cpp#L44 entity->onCreate() creating entity calling onCreate() creating entity callin onCreate ...

    • In https://github.com/PardCode/OpenGL-3D-Game-Tutorial-Series/blob/4d381770a8e1cf3b2850f4cc236568856de7fa5d/Tutorial8_EntitySystem_Basics/OGL3D/source/OGL3D/Entity/OEntity.cpp#L32 your destructor does not call release() and release() should be private.

    • In https://github.com/PardCode/OpenGL-3D-Game-Tutorial-Series/blob/4d381770a8e1cf3b2850f4cc236568856de7fa5d/Tutorial8_EntitySystem_Basics/OGL3D/include/OGL3D/Entity/OEntity.h#L44 maybe m_entitySystem could be static: no more getEntitySystem()

    opened by Lecrapouille 1
Owner
PardCode
Videogame, Game Engine and GUI Framework developer. Main projects in development: Pard Engine, illuxUI, C++ 3D Game Tutorial Series (DirectX and OpenGL)
 PardCode
A gtk4 tutorial for beginners

This tutorial illustrates how to write C programs with Gtk4 library. It focuses on beginners so the contents are limited to basic things such as widgets, GObject, signal, menus and build system. Please refer Gnome API reference for further topics.

ToshioCP 303 Dec 28, 2022
📚 Modern C++ Tutorial: C++11/14/17/20 On the Fly

The book claims to be "On the Fly". Its intent is to provide a comprehensive introduction to the relevant features regarding modern C++ (before 2020s). Readers can choose interesting content according to the following table of content to learn and quickly familiarize the new features you would like to learn. Readers should be aware that not all of these features are required. Instead, it should be learned when you really need it.

Changkun Ou 19.6k Jan 8, 2023
Nvidia contributed CUDA tutorial for Numba

This is an adapted version of one delivered internally at NVIDIA - its primary audience is those who are familiar with CUDA C/C++ programming, but perhaps less so with Python and its ecosystem.

Numba 177 Dec 31, 2022
Unicorn CPU emulator framework tutorial

使用unicorn-engine开发模拟器 什么是unicorn引擎 Unicorn是基于qemu开发的一个CPU模拟器,支持常见的各种指令集,能在各种系统上运行。 GITHUB项目地址:https://github.com/unicorn-engine/unicorn 官网地址:https://w

null 9 Mar 9, 2022
A Simple 32-bit OS lab tutorial.

一个支点撬动操作系统大山 项目名称:逸仙OS简明教程 ( YatSenOS Volume First ) 所属机构:中山大学操作系统实验课程组 写在前面 本项目已经成功用于2021年中山大学春季操作系统实验课程,课程的地址是https://gitee.com/nelsoncheung/sysu-20

Yat-Sen OS 447 Dec 12, 2022
Zephyr Tutorial for Beginners

Zephyr: Tutorial for Beginners This repository contains a step-by-step guide that teaches you how to use Zephyr RTOS. It assumes: no previous experien

null 124 Dec 27, 2022
Tutorial: Writing a "bare metal" operating system for Raspberry Pi 4

Tutorial: Writing a "bare metal" operating system for Raspberry Pi 4

Adam Greenwood-Byrne 2.5k Dec 31, 2022
Tutorial how to use Travis CI with C++

travis_cpp_tutorial Branch master develop richel Tutorial how to use Travis CI with C++. View the tutorial (screen friendly) Download the PDF Want to

Richel Bilderbeek 176 Dec 8, 2022
Minimal Linux Live (MLL) is a tiny educational Linux distribution, which is designed to be built from scratch by using a collection of automated shell scripts. Minimal Linux Live offers a core environment with just the Linux kernel, GNU C library, and Busybox userland utilities.

Minimal Linux Live (MLL) is a tiny educational Linux distribution, which is designed to be built from scratch by using a collection of automated shell scripts. Minimal Linux Live offers a core environment with just the Linux kernel, GNU C library, and Busybox userland utilities.

John Davidson 1.3k Jan 8, 2023
A unix operating system written from scratch in c++

A unix operating system made from scratch using c++

pranaOS 141 Jan 6, 2023