我什么时候应该使用多个纹理单位?

时间:2011-08-06 22:09:51

标签: opengl

什么时候应该通过glActiveTexture命令(TEXTURE 0和TEXTURE 1)使用多个纹理单元?从我看到的例子中我可以在纹理单元TEXTURE0上使用多个纹理。

2 个答案:

答案 0 :(得分:6)

使用多个纹理(使用纹理X绘制对象A,使用纹理Y绘制对象B)和多纹理之间存在差异。多纹理意味着绘制具有纹理X Y的对象A.结果颜色基于各种“纹理环境”状态(或者如果您使用它们则为着色器);这个状态告诉OpenGL如何将两个纹理的值组合成一种颜色。

如果你使用固定功能,那么每个纹理都有自己的一组纹理坐标。计算的最终颜色值基于这些纹理坐标在其相应纹理上获取的颜色。这些纹理颜色通过纹理环境提供,这是一系列应用于计算最终颜色的颜色的操作。

如果你正在使用着色器,那么你可以做任何你想做的事情。动态制作纹理坐标,使用任意操作组合纹理“颜色”等。

纹理单元用于进行多重纹理。

答案 1 :(得分:5)

您需要多纹理,例如使用时:法线贴图,视差贴图,地形纹理。

对于法线贴图,你需要模型的漫反射纹理单元,还需要法线贴图,你需要对两个纹理进行采样,但是你不能为两个纹理激活相同的通道,你需要激活{{ 1}}和TEXTURE0并将它们绑定到相应的id纹理。

激活它们并使用颜色缓冲区中的这些纹理绘制模型后,您可以将它们用于其他纹理。

将它们视为激活GPU上不同纹理通道的标志。