【发布时间】:2019-07-16 08:13:15
【问题描述】:
我在我的 glsl 程序中使用 sampler2d 数组:
uniform sampler2D diffuseMaps[100];
我通过了如下纹理:
for (int i = 0 ; i < textures.size() ; i++)
{
glActiveTexture(GL_TEXTURE0 + i);
glBindTexture(GL_TEXTURE_2D, textures[i]->textureId);
std::string name = "diffuseMaps[" + std::to_string(i) + "]";
GLuint loc = glGetUniformLocation(shader->getHandle(), name.c_str());
glUniform1i(loc, i);
}
效果很好,我有 80 个纹理,而 OpenGL 的索引不超过 GL_TEXTURE31。
它是否只适用于我的硬件 (GTX 1070Ti)?
其他硬件呢?
我可以使用的纹理数量有什么限制吗?
【问题讨论】: