在OpenGL中glTexParameter的范围是什么?

时间:2010-09-04 20:41:01

标签: opengl graphics opengl-es 3d

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),还是会使用纹理绑定时最初设置的值?

1 个答案:

答案 0 :(得分:6)

来自OpenGL FAQ


21.070纹理对象如何工作?

纹理对象存储纹理贴图及其关联的纹理参数状态。它们允许在一次调用glBindTexture()之间切换纹理。

(...)

以下函数影响和存储纹理对象中的状态:glTexImage *(),glTexSubImage *(),glCopyTexImage *(),glCopyTexSubImage *(), glTexParameter *()和glPrioritizeTextures() 。由于用于构建mipmap金字塔的GLU例程最终调用glTexImage *(),它们也会影响纹理对象状态。此列表中明显缺少的是glTexEnv *()和glTexGen *();它们不会在纹理对象中存储状态。


Ergo,glTexParameter *仅影响绑定纹理。