2010-09-04 2 views
8

Делает glTexParamter воздействовать на все текстуры по всему миру или только на текстуру, связанную в настоящее время.Какова область действия glTexParameter в OpenGL?

Например, если я называю это в текстурной нагрузке:

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) или он будет использовать значения, первоначально установленные при привязке текстуры?

ответ

6

От OpenGL FAQ:


21,070 Как работают текстурные объекты?

Текстурные объекты хранят текстурные карты и связанные с ними параметры параметров текстуры. Они позволяют переключаться между текстурами одним вызовом на glBindTexture().

(...)

Следующие функции влияют и хранить состояние в объекты текстуры: glTexImage *(), glTexSubImage *(), glCopyTexImage *(), glCopyTexSubImage *(), glTexParameter *() , и glPrioritizeTextures(). Поскольку подпрограммы GLU для построения пирамид mipmap в конечном счете вызывают glTexImage *(), они также влияют на состояние объекта текстуры. В этом списке нет исключений glTexEnv *() и glTexGen *(); они не сохраняют состояние в объектах текстуры.


Ergo, glTexParameter * влияет только на связанную текстуру.

+1

Очень здорово, это то, на что я надеялся иначе, мне пришлось бы делать кучу изменений состояния каждый раз, когда я связывал текстуру. –

Смежные вопросы