glTexParamter
是全局作用于所有纹理还是仅作用于当前绑定的纹理。
例如,如果我在纹理加载时调用它:
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
而这在另一个纹理负载上:
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
绑定第一个纹理时,它将仅使用我设置的最后一个值(
GL_CLAMP
)还是将使用绑定纹理时最初设置的值? 最佳答案
从OpenGL FAQ:
21.070纹理对象如何工作?
纹理对象存储纹理贴图及其关联的纹理参数状态。它们允许通过一次调用glBindTexture()在纹理之间切换。
(...)
以下函数影响并在纹理对象中存储状态:glTexImage *(),glTexSubImage *(),glCopyTexImage *(),glCopyTexSubImage *(),glTexParameter *()和glPrioritizeTextures()。由于用于构建Mipmap金字塔的GLU例程最终调用glTexImage *(),因此它们也会影响纹理对象的状态。值得注意的是,glTexEnv *()和glTexGen *()并不存在。它们不将状态存储在纹理对象中。
因此,glTexParameter *仅影响绑定的纹理。