3D C/C++ tutorials - Home
3D C/C++ tutorials -> Home
Use for personal or educational purposes only. Commercial and other profit uses strictly prohibited. Exploitation of content on a website or in a publication prohibited.
To compile and run these tutorials some or all of these libraries are required: FreeImage 3.16.0, GLEW 1.11.0, GLUT 3.7.6 / GLUT for Dev-C++, GLM 0.9.5.4
Latest news
June 25, 2016, 12:26 PM

New tutorial:

March 19, 2016, 10:22 AM

New tutorial:


This tutorial is suitable for everyone who wants to know every detail behind the shadow mapping algorithm.
March 09, 2016, 05:53 PM

Updated tutorial:


We managed to implement triangle visibility testing and clipping using homogeneous coordinates and other very interesting computer graphics basic algorithms.
August 11, 2015, 06:09 PM

New tutorial:

August 10, 2015, 04:30 PM

Updated tutorials:


New features in the BSP tree tutorial:

  • fast AABB frustum culling
  • sorting visible geometry nodes from the nearest to the farest using the quicksort algorithm
  • 3D and 2D visualization of the tree
  • visualization of the rendering order of the visible geometry nodes
July 11, 2015, 07:47 AM

New tutorials:

July 11, 2015, 07:39 AM

Updated tutorials:


New features in the scene editor tutorial:

  • game mode (F7)
  • collision detection (functional, updated, usable, should work for all cases)
  • gravity
  • jump
  • crouch
  • 3 scenes (with stairs) included
February 20, 2015, 08:02 PM

The normal matrix (transpose of the inverse of the upper left 3x3 submatrix of the model matrix) can not be used to transform the tangent and bitangent vectors from object space to world space, because the normal matrix doesn't preserve directions of the tangent and bitangent vectors. The tangent and bitangent vectors can be transformed from object space to world space by the upper left 3x3 submatrix of the model matrix.

Updated tutorials:


December 24, 2014, 10:23 AM

Updated tutorial:


New features:

  • loading terrain from a height map texture
  • displaying terrain map
  • faster water rendering
  • wireframe disabling
  • one 256 x 256, one 512 x 512 and one 1024 x 1024 height map textures included

Be cautious with that 1024 x 1024 height map, without a tree structure the performance is poor even on GTX 780 Ti - 25 / 50 FPS with / without wireframe!
December 22, 2014, 10:08 AM

Updated tutorial:


Added support for:

  • OpenGL matrices
  • blending
  • texturing and multitexturing
  • vertex and element arrays
  • vertex and element buffer objects
  • GL_ARB_texture_float, GL_ARB_texture_non_power_of_two
  • GL_EXT_framebuffer_object, GL_EXT_texture_array, GL_EXT_texture_filter_anisotropic
  • short, int, float and double arrays to byte array conversions
December 13, 2014, 10:45 AM

We tested all tutorials on the AMD Radeon HD 5750 GPU with Omega 14.12 drivers installed and we found out that the AMD's GLSL compiler doesn't support the mat2x2(vec4) constructor.

Updated tutorials:

September 14, 2014, 10:51 AM

Updated tutorials:


New features:

  • 9x9 SSAO blur filter with edge detection, so pixels on edges in final SSAO image are not blurred
  • antialiasing method consisting of an edge detection algorithm and a simple blur filter based on the "GPU Gems 3 - Chapter 19. Deferred Shading in Tabula Rasa" article
We are looking for new members to our team.

If you're interested in improving your C/C++ and OpenGL programming skills, choose a tutorial, analyze it and write a documentation or just a simple explanation.

Download the 3D C/C++ tutorials HTML template, rewrite the content of the .html file and send it to our email address. Don't forget to include all needed images.
3D C/C++ tutorials index
Resources and 3D math

>> CString - String operations <<
>> GLMath - Vector and matrix operations <<
>> OpenGL perspective projection <<
OpenGL 1.5

>> Win32 OpenGL Window <<
>> MFC OpenGL Window <<
>> Cube rendering, rotating and lighting <<
>> Texturing <<
>> Vertex array <<
>> Multisample antialiasing <<
>> Vertex buffer object (VBO) <<
OpenGL 2.1

>> OpenGL, Win32, GLEW, FreeImage, GLM <<
>> Loading GLSL shaders <<
>> Camera <<
>> GLSL 1.2 vertex shader and fragment shader <<
>> OpenGL 2.1 tutorials Win32 framework <<
>> God rays <<
>> GLSL cube mapping <<
>> GLSL normal mapping <<
>> GLSL shadow mapping <<
>> Fast realistic soft penumbra shadows <<
>> Sun rays, lens flare, halo <<
>> Atmospheric light scattering <<
>> Planet Earth from space <<
>> Interactive water surface, light reflection and refraction, caustic <<
>> Water waves GPU algorithm <<
>> Loading, picking and moving objects <<
>> GLSL shadow cube mapping <<
>> High dynamic range, bloom <<
>> Screen space ambient occlusion <<
>> First person camera, collision detection, gravity, jump, crouch <<
>> Terrain <<
>> Binary space partitioning tree <<
OpenGL 2.1 - Deferred rendering

>> Deferred rendering - Point lights <<
>> Deferred rendering - FXAA <<
>> Deferred rendering - Antialiasing <<
>> Deferred rendering - Screen space ambient occlusion <<
>> Deferred rendering - Shadow cube mapping <<
OpenGL 3.3

>> OpenGL 3.3 tutorials Win32 framework <<
>> Shader, vertex array object (VAO) <<
>> Skybox, GLSL cube mapping <<
>> Flying camera, collision detection <<
OpenGL ES 2.0

>> OpenGL ES 2.0 on Android <<
Projects

>> OpenGL 2.1 game engine <<
>> 3D game editor <<
>> Java OpenGL Native Interface <<
Software rendering

>> Simple software renderer <<
>> Software shadow mapping <<
Ray tracing

>> CPU ray tracer 00 - Color buffer, rays <<
>> CPU ray tracer 01 - Ray triangle intersection <<
>> CPU ray tracer 02 - Uniform grid <<

>> CPU ray tracer <<
© 2010 - 2016 Bc. Michal Belanec, michalbelanec (at) centrum (dot) sk
Last update June 25, 2016
OpenGL® is a registered trademark of Silicon Graphics Inc.