1、glsl代码放在const GLchar* 字符串中,使用
glShaderSource(vertexShader, 1, &vertexShaderSource, NULL);
glCompileShader(vertexShader);
在运行程序时进行动态编译。
2、关于glGenBuffers()和glBindBuffer()的理解,这篇博客说的非常好
https://blog.csdn.net/qq_36383623/article/details/85123077
3、关于定点着色器和片段着色器
顶点着色器常常用来对场景中几何图形坐标进行矩阵变换。顶点的坐标作为一个矩阵输入到顶点着色器中,它会将VertexBuffer中的所有顶点进行矩阵变换。由于使用了硬件加速,这个过程非常高效,大大快于自己用ActionScript编写的代码。
片段着色器是可编程管道中的最最核心的部分。其普遍的作用就是计算各种各样的三角形像素颜色,从为着色顶点图形(vertex-colored geometries)计算的顶点属性颜色,和为纹理图形为计算的纹理及相关的UV纹理坐标。
简单来说,顶点着色器,虽然叫着色器,但是一般是用于矩阵变换的,把输入的数据归一化到视域内。而片段着色器,才是真正的“着色器”,确实是用来上色的。(当然,顶点着色器也可以上色)
4、写OpenGL程序的一般流程
//开始
① 包含各种头文件
② 函数原型声明
③ GLSL代码定义
④ 各种常量
//main函数
int main()
{
1 标准开局+GLEW_TRUE
2.窗口相关
2.1构建窗口,绑定回调
2.2 生成窗口,调节窗口属性、视点属性
3.着色器相关
3.1 生成、编译着色器
3.2 链接着色器,记得把分着色器删掉
4.图元相关
4.1 顶点数据输入
4.2 VAO,VBO,EBO定义,将顶点传到内存里去
4.3 链接顶点属性,解绑内存
5.循环,绘图
5.1 查回调,赋底色
5.2 VAO进去,应用着色器,画图
5.3 解绑,替换内存分区
6.收尾:释放内存,关闭进程
}
新手上路,难免理解不到位。若有纰漏,请各位前辈不吝拍砖,非常感谢!