Gnafoo
2003-08-10, 21:38:44
Ich habe da ein kleines OGL Multitexturing-Problem. Und zwar programmiere ich gerade einen
Terrain-Renderer und wollte die Texturen ineinander verblenden.
(wie hier beschrieben: http://www.delphi3d.net/articles/viewarticle.php?article=terraintex.htm)
Das ist soweit eigentlich auch kein Problem. (Habs bisher nur mit 2 Texturen gemacht)
Allerdings funktioniert das OGL Lighting nachher nur bei den Teilen, die die erste Textur verwenden.
Weiß jemand woran das liegt, bzw. was man dagegen tun kann ?
Das Multitexturing mache ich folgendermaßen: (nach Textur laden etc.)
glActiveTextureARB(GL_TEXTURE0_ARB);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, m_Texture[0]);
glActiveTextureARB(GL_TEXTURE1_ARB);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, m_Texture[1]);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_EXT);
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_INTERPOLATE_ARB);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_PREVIOUS);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB_ARB, GL_SRC_COLOR);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB_ARB, GL_TEXTURE);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB_ARB, GL_SRC_COLOR);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE2_RGB_ARB, GL_PRIMARY_COLOR_ARB);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND2_RGB_ARB, GL_SRC_ALPHA);
Danach render ich das ganze Zeugs und benutze dabei glMaterialfv(GL_FRONT, GL_DIFFUSE, ...);
um den Alpha-Wert fürs verblenden zu setzen.
Ich hab ne Grafik angehängt, wo ich nen ziemlich direkten Übergang von Textur 1 auf Textur 2
hab (ich weiß sieht häßlich aus aber egal). Oben sieht man noch, wie der Hügel unterschiedlich
Schattert ist und unten ist alles gleich hell.
Vielleicht hab ich ja auch nur irgendwas falsch verstanden, weil ich vorher noch nie etwas mit
Multitexturing gemacht habe.
*gespanntaufantwortenwart* :)
cu DerTod2k
Terrain-Renderer und wollte die Texturen ineinander verblenden.
(wie hier beschrieben: http://www.delphi3d.net/articles/viewarticle.php?article=terraintex.htm)
Das ist soweit eigentlich auch kein Problem. (Habs bisher nur mit 2 Texturen gemacht)
Allerdings funktioniert das OGL Lighting nachher nur bei den Teilen, die die erste Textur verwenden.
Weiß jemand woran das liegt, bzw. was man dagegen tun kann ?
Das Multitexturing mache ich folgendermaßen: (nach Textur laden etc.)
glActiveTextureARB(GL_TEXTURE0_ARB);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, m_Texture[0]);
glActiveTextureARB(GL_TEXTURE1_ARB);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, m_Texture[1]);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_EXT);
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_INTERPOLATE_ARB);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_PREVIOUS);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB_ARB, GL_SRC_COLOR);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB_ARB, GL_TEXTURE);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB_ARB, GL_SRC_COLOR);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE2_RGB_ARB, GL_PRIMARY_COLOR_ARB);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND2_RGB_ARB, GL_SRC_ALPHA);
Danach render ich das ganze Zeugs und benutze dabei glMaterialfv(GL_FRONT, GL_DIFFUSE, ...);
um den Alpha-Wert fürs verblenden zu setzen.
Ich hab ne Grafik angehängt, wo ich nen ziemlich direkten Übergang von Textur 1 auf Textur 2
hab (ich weiß sieht häßlich aus aber egal). Oben sieht man noch, wie der Hügel unterschiedlich
Schattert ist und unten ist alles gleich hell.
Vielleicht hab ich ja auch nur irgendwas falsch verstanden, weil ich vorher noch nie etwas mit
Multitexturing gemacht habe.
*gespanntaufantwortenwart* :)
cu DerTod2k