OpenGL如何处理多个纹理
生活随笔
收集整理的這篇文章主要介紹了
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是對應的
總結
以上是生活随笔為你收集整理的OpenGL如何处理多个纹理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 理解OpenGL中帧缓存FrameBuf
- 下一篇: Qt控件如何随着界面自适应变化