Justin Meiners
Justin Meiners

Reputation: 11113

What is the scope of glTexParameter's in OpenGL?

Does glTexParamter act on all textures globally or only the texture that is currently bound.

For example, if I call this at the texture load:

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);

And this on another texture load:

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);

When I bind the first texture will it just use the last value I set (GL_CLAMP) or will it use the values originally set when the texture was bound?

Upvotes: 12

Views: 2383

Answers (1)

Kornel Kisielewicz
Kornel Kisielewicz

Reputation: 57525

From the OpenGL FAQ:


21.070 How do texture objects work?

Texture objects store texture maps and their associated texture parameter state. They allow switching between textures with a single call to glBindTexture().

(...)

The following functions affect and store state in texture objects: glTexImage*(), glTexSubImage*(), glCopyTexImage*(), glCopyTexSubImage*(), glTexParameter*(), and glPrioritizeTextures(). Since the GLU routines for building mipmap pyramids ultimately call glTexImage*(), they also affect texture object state.Noticeably absent from this list are glTexEnv*() and glTexGen*(); they do not store state in texture objects.


Ergo, glTexParameter* affects only the bound texture.

Upvotes: 10

Related Questions