写在前面的话:
本来准备坚持写一周的,但是由于种种困难,导致了只写了四天,之前的四章内容会在之后的一段时间补上,欢迎大家继续支持我。今天是元旦,没想到会陪妹子来加班。2014,做技术男吧。
鉴于不知道这些代码的东东怎么总结,暂时只以代码 + 注释的方式代替,看看效果。
GLTest.cpp文件:
/************************************/
/******9:00 Studio 干货系列**********/
/**————午夜GPU系列(五)*************/
/*********************************/
//------------------------------ 着色器的编译和链接-------------------------------------
// 目标: 将着色器编译和链接到OpenGL应用程序中去
// 做法: 着色器程序被放在独立的文本中,使用户在每次修改着色器程序后不用专门编译着色器程序,只要执行OpenGL应用程序即可。
// 步骤: 着色器对象(Shader Object)
// 1. 创建着色器对象 GLuint glCreateShader(GLenum type),返回一个唯一标识符, type 表示要创建的着色器对象 GL_VERTEX_SHADER(顶点着色器), GL_FRAGMENT_SHADER(片段着色器)
// 使用该方法之后,将创建一个空白的着色器对象
// 2. 接下来要把他们关联到着色器上。
// 2.1 首先,需要把着色器程序读到内存中去,
// 2.2 接下来,读取到内存中的着色器要被加载到着色器对象中,这一步可以通过glShaderSource(GLuint unShaderObj, GLsizeit nNotStrings, const GLchar **ppchSource, const GLint nlength)完成
// 该方法把ppchSource中保存的着色器程序放入着色器对象标识符指代的对象中去,完成着色器程序和着色器对象的关联。
// 2.3 最后,对已经加载的着色器进行编译 void glCompileShader(GLuint nShaderObj)
// 至此,着色器的编译工作已经完成.
// 3. 在链接着色器对象之前,首先要建立程序对象(Program object),使用 GLuint glCreateProgram()即可创建
// 4. 将着色器对象添加到程序对象