OpenGL如何处理多个纹理

在主程序中我们先设置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是对应的

猜你喜欢

转载自blog.csdn.net/qq_41598072/article/details/106868923