2010-09-04 6 views
8

Funktioniert glTexParamter auf allen Texturen global oder nur auf der Textur, die derzeit gebunden ist.Was ist der Umfang von glTexParameters in OpenGL?

Zum Beispiel, wenn ich nenne dies an der Textur Last:

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

Und das auf einer anderen Textur Belastung:

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

Wenn ich binden die erste Textur wird es nur den letzten Wert verwenden Ich setze (GL_CLAMP) oder wird es die Werte verwenden, die ursprünglich festgelegt wurden, als die Textur gebunden wurde?

Antwort

6

Vom OpenGL FAQ:


21,070 Wie funktionieren Texturobjekte?

Texturobjekte speichern Texturkarten und den zugehörigen Texturparameterstatus. Sie ermöglichen den Wechsel zwischen Texturen mit einem einzigen Aufruf von glBindTexture().

(...)

Folgende Funktionen beeinflussen und zu speichern Zustand in Texturobjekte: glTexImage *(), glTexSubImage *(), glCopyTexImage *(), glCopyTexSubImage *(), glTexParameter *() und glPrioritizeTextures(). Da die GLU-Routinen zum Erstellen von Mipmap-Pyramiden schließlich glTexImage *() aufrufen, beeinflussen sie auch den Zustand des Texturobjekts. In dieser Liste sind glTexEnv *() und glTexGen *(); Sie speichern keinen Status in Texturobjekten.


Ergo, glTexParameter * betrifft nur die gebundene Textur.

+1

Sehr cool, das war, was ich mir erhofft hatte, sonst müsste ich jedes Mal, wenn ich eine Textur gebunden habe, eine Reihe von Zustandsänderungen vornehmen. –

Verwandte Themen