Switching shaders at runtime
In a real 3D renderer, you will need a lot of shader switches. The final picture is often created in many consecutive rendering steps, and the drawing operations need to reflect the tasks to be done in that single step. The vertex data sent to the GPU may be the same among many of the shaders, as changes in the data structures would require expensive transformations or lead to duplicate data storage with another set of attributes. But in many cases, the rest of the shader code itself will be completely different, depending on the input to that shader and the expected output.
Adding new shaders is done in only a couple of steps for the OpenGL renderer, so we will walk through the changes here. The Vulkan renderer needs different adjustments, and we will only check the broad steps.
The full example code can be found in the chapter04
| 01_opengl_shader_switch
folder.
Creating a new set of shaders
The first step is to have multiple shaders available...