本文的意图在于如何使用OpenGL自定义Shader。
首先确保你会绘制窗体和三角形:传送门
之前 Shader是直接写在代码里面了,用起来很不方便
一般项目的方式都是自定义shader文件,然后读取文本内容
如何实现?
1.自定义Shader类
shader.h 头文件
主要功能:
a)程序ID
b)读取文本并构建编译着色器
c)激活/释放程序
d)设置自定义参数(uniform)
#ifndef SHADER
#define SHADER
#include <glad/glad.h> // 包含glad来获取所有的必须OpenGL头文件
#include <string>
#include <fstream>
#include <sstream>
#include <iostream>
class Shader
{
public:
//程序ID
unsigned int ID;
//构造函数,构建着色器
Shader(const char* vertexPath, const char* fragmentPath);
//使用/激活程序
void use();
void del();
//uniform工具函数
void setB(const std::string &name, bool v1) const;
void setF(const std::string& name, float v1) const;
void setF3(const std::string& name, float v1, float v2, float v3) const;
};
#endif SHADER
shader.cpp实现文件
功能详解都在代码里有注释
主要功能:
a)通过ifsteam读取文件内容
b)编译shader链接着色器程序
c)对于Uniform的设置
#include