在主程序中我们先设置3个采样器名称
pbrShader.use();
pbrShader.setInt("irradianceMap", 0);
pbrShader.setInt("prefilterMap", 1);
pbrShader.setInt("brdfLUT", 2);
其中setint是封装函数:
void setInt(const std::string &name, int value) const
{
glUniform1i(glGetUniformLocation(ID, name.c_str()), value);
}
0,1,2顺序很关键
在Fragment_shader中设置采样器
uniform samplerCube irradianceMap;
uniform samplerCube prefilterMap;
uniform sampler2D brdfLUT;
然后在主程序中如何绑定和使用这3个纹理呢?
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_CUBE_MAP, 纹理1);
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_CUBE_MAP, 纹理2);
glActiveTexture(GL_TEXTURE2);
glBindTexture(GL_TEXTURE_2D, 纹理3);
GL_TEXTURE0,1,2和上面的0,1,2是对应的