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
),还是会使用纹理绑定时最初设置的值?
答案 0 :(得分:6)
来自OpenGL FAQ:
21.070纹理对象如何工作?
纹理对象存储纹理贴图及其关联的纹理参数状态。它们允许在一次调用glBindTexture()之间切换纹理。
(...)
以下函数影响和存储纹理对象中的状态:glTexImage *(),glTexSubImage *(),glCopyTexImage *(),glCopyTexSubImage *(), glTexParameter *()和glPrioritizeTextures() 。由于用于构建mipmap金字塔的GLU例程最终调用glTexImage *(),它们也会影响纹理对象状态。此列表中明显缺少的是glTexEnv *()和glTexGen *();它们不会在纹理对象中存储状态。
Ergo,glTexParameter *仅影响绑定纹理。