Welcome to my humble repository with OpenGL4 tutorials! My goal is to transform all the knowledge that I currently possess into multiple tutorials with well-arranged high-quality code, so that you can learn various 3D graphics programming techniques!
Framework that I've chosen is GLFW, it seems to be most widely used nowadays. I've tried to make the tutorials in such a way, that you should have no trouble running them both on Windows or Unix systems (I have tested them on Ubuntu 18.04 and everything has built just fine). Just don't skip this README document and you will surely have no trouble bringing the tutorials to life at all!
To find the list of all tutorials along with the related articles and in-depth explanations, click on the link below:
There are also pre-built zipped version for Windows for a quick preview of all tutorials.
Tutorials are designed to run out-of-the-box on Windows. Just clone / download the repository somewhere. Then open this fresh clone in some command line processor, ideally Git Bash or Powershell (just don't use plain old cmd.exe
) and then run script windows_setup.sh
. I know that shell scripts are not native for Windows, but those tools cope with it just fine and in last years, Windows has done much improvement to catch up with Unix-based systems in terms of scripting.
This will initiate cloning of all needed submodules and will download some pre-built libraries to your repository from my server (otherwise you won't be able to compile some of the tutorials at all). So the whole setup of the tutorials consists of following three lines in your command line processor:
git clone https://github.com/michalbb1/opengl4-tutorials-mbsoftworks.git
cd opengl4-tutorials-mbsoftworks
./windows_setup.sh
When it's done, just open provided Solution file opengl4-tutorials-mbsoftworks-vs2019.sln
(Visual Studio 2019) solution and Build it (Ctrl+Shift+B usually) and you should be good to go!
CMake is a cross-platform system that helps you to manage the build process among various operating systems and compilers. If you're not familiar with CMake, I really recommend you not to be afraid of it, as it's super easy to use and almost all C++ projects are built using CMake!
First you will need to download and install CMake. You can find it here:
Now that you have it, you can clone / download the repository and then you still need to run provided script windows_setup.sh
. When it finishes, you can build a CMake project now. Here is the whole procedure again:
git clone https://github.com/michalbb1/opengl4-tutorials-mbsoftworks.git
cd opengl4-tutorials-mbsoftworks
./windows_setup.sh
mkdir build
(cd build && cmake ..)
After that, you should find a generated solution / project files in the build
folder (depending on the generator, but default one for Windows is Visual Studio)/ Open and build it and that should be it!
Because the tutorials are standard CMake project, building them involves a standard procedure of building CMake projects. However because you might be missing some of the required packages / libraries, I have prepared a script called unix_setup.sh
, which should download everything that the tutorials need. So the whole procedure for building the tutorials looks like this:
git clone https://github.com/michalbb1/opengl4-tutorials-mbsoftworks.git
cd opengl4-tutorials-mbsoftworks
chmod +x unix_setup.sh
sudo ./unix_setup.sh # Run this with sudo! Otherwise the packages won't install
mkdir build
(cd build && cmake .. && make -j4)
This process will take a while, but once it finishes, the compiled tutorials can be found in the bin
folder. That's it!
I've tested this with freshly installed Ubuntu and using the exact steps as described here has worked just fine.
It is possible that despite my effort some of you might have trouble compiling and running the tutorials. This might happen - I'm just a human and I make mistakes, also I am not capable of testing all possible operating systems / compiler combinations and maintain it.
If you still have some trouble making the tutorials run, the easiest way is to contact me on my e-mail michalbb1@gmail.com
or by some other means, like through my Facebook Page. I will try my best to help you.
It would be a madness to program every single thing from a scratch (math, utilities, image loading etc...), that's why my tutorials use other libraries as well (mostly as git submodules). Here is a list of all of them:
- GLFW - OpenGL framework used for cross-platform window creation and input handling
- GLM - without doubt most widely mathematics library used when using OpenGL (vectors, matrices, quaternions etc.)
- STB - header-only library with several very useful functions like loading an image from a file (supports most common formats)
- The FreeType Project - used for manipulating fonts used even in some Linux distributions, Android or iOS. My tutorials use it to load / display text
- Assimp - used to load and handle 3D model data. Supports most of the commonly used 3D model file formats