我知道程序中可以有GL_MAX_TEXTURE_IMAGE_UNITS
纹理单元OpenGL
。但是让我们假设我只使用一个。假设我有 5 个 2D 纹理。我可以将它们“映射”到单个纹理单元 (TEXTURE0) 以渲染所有它们。我的意思是我会这样做:
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, tex1);
//specify tex data and tex params for tex1
glBindTexture(GL_TEXTURE_2D, tex2);
//specify tex data and tex params for tex1
.. 等等所有 5 种纹理
渲染循环:
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, tex1);
//draw
glBindTexture(GL_TEXTURE_2D, tex2);
//draw
..等等所有5个纹理
在片段着色器中,我只使用了 1 个初始化为零的 sampler2d 变量(对于纹理单元 0)
如果这不能正常工作,那么我应该使用 5 个不同的纹理单元(TEXTURE0, TEXTURE0+1, ....TEXTURE0+5
)并将每个纹理“映射”到不同的纹理单元。
最重要的问题:如果我的第一种方法是正确的,我可以将多少个 2D 纹理(现在只讨论 2D 纹理)“映射”到一个纹理单元?