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 *仅影响绑定的纹理。

07-26 05:00