In this chapter, we will cover the following recipes:
- Sending data to a shader using vertex attributes and vertex buffer objects
- Getting a list of active vertex input attributes and locations
- Sending data to a shader using uniform variables
- Getting a list of active uniform variables
- Using uniform blocks and uniform buffer objects
- Using program pipelines
- Getting debug messages
- Building a C++ shader program class