2010-08-04 18 views
7

Bir doku yüklediğimde, doku rengine bağlı olarak geçerli çizim rengini değiştirebileceğini fark ettim. Örneğin yüklenen doku görüntüye bağlı bir renge sahip olacaktır ekrana çizilenOpenGL: Bir doku yüklemek, geçerli rengi değiştirir

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, info.biWidth, 
    info.biHeight, 0, GL_RGB, GL_UNSIGNED_BYTE,bitmap); 
glTexParameterf(GL_TEXTURE_2D, 
    GL_TEXTURE_MIN_FILTER, GL_LINEAR); 
glTexParameterf(GL_TEXTURE_2D, 
    GL_TEXTURE_MAG_FILTER, GL_LINEAR); 

tüm ardışık poligonları yürüttükten sonra.

Bu standart mı? Bu davranışı belgelemedim.

cevap

9

Evet, nasıl çalışır, sen doku bağlı (ve muhtemelen etkin) sol yüzden GL bir durum makinesi olduğunu unutmayın, bu yüzden (herhangi bir doku koordinatları vermedi varsayılmıştır) ilk pikseli kullanılan çizerken ilkel renklendirmek için.

glDisable(GL_TEXTURE_2D); 
+0

Huh: Eğer tekstüre istemediğiniz durumlarda

o, tekstüre devre dışı çözmek için, bunu yapabilirsiniz? Tüm doku özelliğini devre dışı bırakmak yerine, sadece 'glColor4f (1.0f, 1.0f, 1.0f, 1.0f) 'değil mi? –

+0

@Matias, teşekkürler, ama OpenGL standardında bir yerde bu belgelenmiş görmek için seviniriz. –

+0

@Elazar Hayır, glColor kullanarak doku rengini 1,0 ile çarpacaktır. Bu doğrudan belgelenmez, bulacağınız tek doküman “GL bir devlet makinesidir”, eğer dokular etkinleştirilirse, bir doku bağlanırsa, GL'nin dokular istemediğini bilmesini nasıl beklersiniz? –