The rendering abstraction is done. Before drawing anything, you need to write shaders to direct how things are going to be drawn. In this section, you will write a vertex and a fragment shader. The fragment shader will be used throughout the rest of this book and the vertex shaders used in later sections of this book will be variations of the one presented here.
The vertex shader
The vertex shader is responsible for putting each vertex of a model through the model, view, and projection pipeline and for passing any required lighting data to the fragment shader. Create a new file,
static.vert. You will be implementing the vertex shader in this file.
The vertex shader takes three uniforms—a model, a view, and a projection matrix. These uniforms are needed to transform a vertex. Each individual vertex is made up of three attributes—a position, a normal, and some texture coordinates.
The vertex shader outputs three variables to the fragment shader...