前面几篇零散的讲解了许多概念,提到了很多函数,许多函数的参数很是难理解,本节用一个综合的实例讲解函数中参数的意义。实例源码来自LearnOpenGL(使用新着色器类的程序,着色器类,顶点着色器,片段着色器)。这里借用LearnOpenGL的代码,做了精简并加了中文注释。
本实例是对如下的数据点进行渲染:
GLfloat
由于数组中不但包含位置坐标,还包含颜色数据,实例采用两个顶点属性来帮助理解之前的函数里的参数设置。
首先添加一个.h头文件,我们在其中编写一个自己的着色器类,用于主函数调用进行渲染。代码如下:
#ifndef SHADER_H
整个着色器类只有一个构造函数、一个GLuint Program变量、一个成员函数,当构造一个着色器类时,会初始化读取顶点着色器和片段着色器文件,读取着色器文件中的着色器代码,然后编译着色器,链接成着色程序,将返回的着色程序调用的引用存储到字段Program中,调用成员函数glUseProgram(this->Program)就可以调用着色程序。
现在编写着色器文件:
顶点着色器文件 shader.vs
#version 330 core
片段着色器文件 shader.frag
#version 330 core
编写主程序,用于渲染图形:
#include
运行结果: