当将多个纹理应用于网格时(例如凹凸贴图),我通常将纹理绑定到前几个固定纹理单元,例如:diffuse = unit 0,bump = unit 1,specular = unit 2,然后继续将其重复使用具有不同纹理的不同网格。但是我一直想知道为什么glActiveTexture
支持这么多的纹理单位(在上一个链接中,它至少说80个)。
因此,我想到管理纹理的一种可能方法是将不同的纹理绑定到每个可用的单元,并使它们保持启用状态,只是更新统一采样器索引。通过减少纹理开关的数量,可以提高渲染性能。如果纹理的数量少于最大纹理单位,则无需解绑纹理。
这是实时OpenGL应用程序的标准做法吗(我相信这也适用于D3D)?采用这种方法是否会对性能产生不明显的影响?可能是内存开销?