Example code from the OpenGL Shading Language Cookbook
The example code from the OpenGL Shading Language Cookbook, by David Wolff and published by Packt Publishing, 2013 (ISBN: 9781782167020).
NEW:
- Most examples now run on MacOS!
- CMake build now uses package config files when finding GLM and GLFW. This should make for a more
streamlined configuration. Use
CMAKE_PREFIX_PATH
to point CMake to your installs. - Examples now properly support high-density displays.
To compile these examples, you'll need the following:
- The GLM Mathematics Library version 0.9.6 or later. Note that versions
prior to 0.9.6 may not work properly because of a switch from degrees to
radians. GLM 0.9.5 will work, but you'll need to add
#define GLM_FORCE_RADIANS
prior to including the glm header files. - GLFW version 3.0 or later.
The example code builds with CMake. Note that the examples for Chapter 10 will not function on MacOS due to lack of support for compute shaders on that platform.
- Install GLFW by following the instructions on their web site.
- Install the latest version of GLM. Note that for CMake to find GLM
correctly, you need to run the install "build" (e.g.
make install
) or install GLM from your favorite package manager. Otherwise, the CMake config files will not be created/available. - Download this example code from github, or clone using git.
- Run cmake. If cmake has difficulties finding the GLFW or GLM installations,
set the variable
CMAKE_PREFIX_PATH
to help cmake find them. - Compile by running
make
.
Any problems, create an issue on github.
- Use the Visual Studio target in CMake:
-G "Visual Studio..."
, open the Visual Studio solution. You should see one project per chapter. - Each chapter requires a command line argument to choose a recipe. When running in VS, be sure to set the 'Command Argument' under 'Properties' for the appropriate recipe.
An OpenGL header file and a function loader for a 4.3 core profile are included with this project. They were generated using GLAD. This loader should also work on MacOS under a 4.1 core profile, but of course not all functions will load.
The code has been tested with OpenGL 4.3 on Windows/Linux and OpenGL 4.1 on MacOS.