Anton's OpenGL 4 Tutorials book - Demo Code
C C++ Other
Switch branches/tags
Nothing to show
Clone or download
Latest commit 766c7cb Jan 25, 2018
Permalink
Failed to load latest commit information.
00_hello_triangle removed excessive tabs added by clang-format Jan 25, 2018
00_hello_triangle_gl2.1 removed excessive tabs created by clang-format Jan 25, 2018
01_extended_init removed excessive tabs Jan 25, 2018
02_shaders fix for retina displays Dec 17, 2017
03_vertex_buffer_objects fix for retina displays Dec 17, 2017
04_mats_and_vecs fix for retina displays Dec 17, 2017
05_virtual_camera fix for retina displays Dec 17, 2017
06_vcam_with_quaternion fix for retina displays Dec 17, 2017
07_ray_picking fix for retina displays Dec 17, 2017
08_phong bugfix: re-normalised normals in frag shaders Dec 18, 2017
09_texture_mapping fix for retina displays Dec 17, 2017
10_screen_capture fix for retina displays Dec 17, 2017
11_video_capture fix for retina displays Dec 17, 2017
12_debugging_shaders fix for retina displays Dec 17, 2017
13_mesh_import fix for retina displays Dec 17, 2017
14_multi_tex fix for retina displays Dec 17, 2017
15_phongtextures bugfix: re-normalised normals in frag shaders Dec 18, 2017
16_frag_reject fix for retina displays Dec 17, 2017
17_alpha_blending Update .gitignore and fix a typo Jan 1, 2018
18_spotlights fix for retina displays Dec 17, 2017
19_fog fix for retina displays Dec 17, 2017
20_normal_mapping fix for retina displays Dec 17, 2017
21_cube_mapping fix for retina displays Dec 17, 2017
22_geom_shaders fix for retina displays Dec 17, 2017
23_tessellation_shaders fix for retina displays Dec 17, 2017
24_gui_panels fix for retina displays Dec 17, 2017
25_sprite_sheets fix for retina displays Dec 17, 2017
26_bitmap_fonts fix for retina displays Dec 17, 2017
27_font_atlas fix for retina displays Dec 17, 2017
28_uniform_buffer_object fix for retina displays Dec 17, 2017
29_particle_systems fix for retina displays Dec 17, 2017
30_skinning_part_one fix for retina displays Dec 17, 2017
31_skinning_part_two fix for retina displays Dec 17, 2017
32_skinnng_part_three fix for retina displays Dec 17, 2017
33_extension_check bugfixes, build maint for linux64 glfw, clang-formatted Apr 16, 2017
34_framebuffer_switch fix for retina displays Dec 17, 2017
35_image_kernel fix for retina displays Dec 17, 2017
36_colour_picking fix for retina displays Dec 17, 2017
37_deferred_shading fix for retina displays Dec 17, 2017
38_texture_shadows fix for retina displays Dec 17, 2017
39_texture_mapping_srgb fix for retina displays Dec 17, 2017
40_compute_shader removed all bad asserts with sed -i Apr 16, 2017
blender first check-in of extant code Jul 31, 2014
common bugfixes, build maint for linux64 glfw, clang-formatted Apr 16, 2017
visual_studio removed accidentally checked-in binaries Jan 2, 2018
.clang-format reformatted code in demos 00 to 02 with clang-format, tidied the pure… Dec 10, 2016
.gitignore Update .gitignore and fix a typo Jan 1, 2018
Assimp32.dll first check-in of extant code Jul 31, 2014
CHANGELOG.txt gcc win32 updated libs Jan 19, 2016
LICENCE.md bugfixes, build maint for linux64 glfw, clang-formatted Apr 16, 2017
README.md Update README.md Jan 11, 2018
build_all_linux.sh updated linux build-all Jan 2, 2018
glew32.dll first check-in of extant code Jul 31, 2014
glfw3.dll first check-in of extant code Jul 31, 2014
libstdc++-6.dll gcc win32 updated libs Jan 19, 2016

README.md

Anton's OpenGL 4 Tutorials book demo code

This series of demos accompanies the e-book "Anton's OpenGL 4 Tutorials": antongerdelan.net/opengl

Copyright Dr Anton Gerdelan, Trinity College Dublin, Ireland. email: antonofnote AT gmail

Info

See "LICENCE.txt" for licence information.

Each chapter with major demonstration code has a corresponding demo here. There is also an example of code for Hello Triangle for OpenGL 2.1 for reference.

Each demo has easy-to-read Makefiles for Linux, OS X, and 32-bit Windows. There are also Visual Studio projects, but you may have to download newer versions of the libraries in the common/ folder to match your version of VS.

This code is some years old now and builds may fall out of date. I try to maintain this so that it functions but be aware that Makefiles and build details may differ slightly from book text for this reason. If you have a [tidy] CMake setup or updated build feel free to submit a pull request here.

Compiling

The libraries depended on reside in the common/ folder

  • common/include - header files
  • common/linux_i386 - 32-bit Linux libraries
  • common/linux_x86_64 - 64-bit Linux libraries
  • common/msvc110 - 32-bit Windows visual studio libraries
  • common/osx_64 - 64-bit apple OS X libraries
  • common/win32 - 32-bit Windows GCC (mingw) libraries

Linux

  • Install a C and C++ compiler - usually by installing a "build-essential" bundle package via the package manager on your distribution:
sudo apt-get install build-essential
  • Install the GLFW3 and FreeType libraries:
sudo apt-get install libglfw3-dev
sudo apt-get install libfreetype6-dev
  • Open a terminal and cd to the demo of choice, then

64-bit systems:

make -f Makefile.linux64

32-bit systems:

make -f Makefile.linux32

Apple OS X

  • Install Clang or GNU compiler and tools - usually by installing Apple XCode through the App Store. It's free.
  • Open a terminal and cd to the demo of choice:
make -f Makefile.osx

Windows with GCC

I only provided 32-bit versions of the Makefile and libraries here. The 32-bit builds will run on all Windows machines - I use 32-bit builds on my 64-bit Windows. If you want to add a 64-bit build it's pretty easy to copy the 32-bit Makefile and change the folder. You will need to recompile GLFW, GLEW, AssImp, and Freetype though.

  • install the GNU Compiler Collection - usually by installing the MinGW toolkit. http://www.mingw.org/
  • open a console and cd to the demo of choice

make -f Makefile.win32 (may have been renamed to mingw-make32 or similar)

  • copy the .dll files from the main folder to the demo folder

Windows with Visual Studio

I provided some Visual Studio 2012 project files. You can find an overarching solution file in the main folder. This should convert well to most versions of Visual Studio. I used 32-bit versions of the libraries, but there's no reason that you can't add 64-bit versions if you prefer.

VS 2013 seems to work, but with 2015 you'll probably need to download a newer version of the libraries used to get around linking errors.

Caveats

  • Code is directly copy-pasted from book sections. This means that there will be redundant OpenGL calls to bind things etc. but I think it's easier to follow along like this.
  • Code explained in prior examples is moved to a file called gl_utils.cpp to avoid cluttering main.cpp. This means that gl_utils.cpp is not necessarily the same in each demo, but is built up gradually.

SDL2 Port

Dr Aidan Delaney at the University of Brighton has made an SDL2 port (as an alternative to using GLFW), which you can find on GitHub https://github.com/AidanDelaney/antons_opengl_tutorials_book/

Credits

Special thanks to all the readers over the years that have submitted additions, bug reports, fixes, and feedback. If you have submitted a correction and don't mind having your name/@ printed here please let me know.

Contributors (mostly via GitHub):

  • Olivier Nivoix
  • sarangbaheti
  • kevin
  • Jon
  • julien
  • define-private-public
  • Fwjrei
  • guysherman
  • 24kwakahana
  • battila7
  • Gnimuc