[英]Understanding of textures
假设我有三个具有不同图像数据的不同纹理对象。 这三个纹理对象都绑定到纹理单元0。
我的场景中有三个模型,每个模型都使用其中一种纹理。
在片段着色器中,我有一个sampler2D变量。 并且所有模型都使用相同的着色器程序进行渲染。
现在我依次执行以下操作
渲染模型1
绑定纹理对象2
渲染模型2
绑定纹理对象3
想要问的是这种用不同纹理对不同模型进行纹理处理以及片段着色器中的采样器从当前绑定的纹理中读取数据的方式。 如果纹理绑定到其他纹理单元会发生什么,我是否需要其他采样器。
采样器总是从当前绑定的纹理以其设置的纹理单位读取。 由于默认的活动纹理单位为单位0,并且采样器的默认值也为0,因此除非更改采样器或活动纹理单位,否则代码应该可以工作。
如果纹理绑定到另一个纹理单元,你必须确保该活动的纹理单元( glActiveTexture
)与采样(设定值相匹配glUniform1i
)。 例如,如果将纹理绑定到GL_TEXTURE2
,则必须将采样器设置为glUniform1i(sampler_location, 2)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.