纹理对象包含着纹理贴图自身的数据,比如:纹素。
纹理对象并不是直接绑定到shader上的(事实上是采样阶段发生的地方),而是绑定到‘纹理单元’上,‘纹理单元’的索引会被传到shader中,因此shader是通过纹理单元得到纹理对象的。一般可以同时有多个可用的纹理单元,数量上限取决于显卡的容量。为了将一个纹理对象A绑定到纹理单元0上,首先你需要激活纹理单元0然后绑定纹理对象A。
应该是纹理对象直接绑定到shader中的uniform变量上的,参考https://mp.youkuaiyun.com/postedit/88084484
纹理单元有活动之分(glActiveTexture(GL_TEXTURE0)),shader会从当前活动的纹理单元中的纹理对象中取值。
纹理单元一般用GL_TEXTUREi(i是显卡相关的一个数)表示,但是传给着色器的纹理单元一般是i。参考https://mp.youkuaiyun.com/postedit/88084484
glActiveTexture(GL_TEXTURE11);
glGenTextures(1, &m_textureObj);
glBindTexture(m_textureTarget, m_textureObj);
glTexImage2D(m_textureTarget, 0, GL_RGB, m_pImage->width(), m_pImage->height(), -0.5, GL_RGBA, GL_UNSIGNED_BYTE, m_pImag