PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : GL_ARB_texture_env_combine ?!


Gnafoo
2003-04-15, 16:20:14
Ich habe mal ne OpenGL-Texturing-Frage :) ..

und zwar suche ich eine Möglichkeit den Übergang zwischen 2 Texturen
zu verblenden. Dazu habe ich ein wenig gesucht und bin auf folgende
URL gestoßen:
http://www.delphi3d.net/articles/viewarticle.php?article=terraintex.htm

die empfehlen dabei GL_ARB_texture_env_combine, was seit OpenGL
1.3 Teil der OpenGL-Spezifikation sein soll.

Ich habe mir den SourceCode dazu heruntergeladen und angesehen,
aber leider kann ich kein Delphi und verstehe nicht genau wie das
funktionieren soll. Naja gut .. ich habe dann noch weiter gesucht, aber
irgendwie nichts wirklich verwertbares gefunden.

Weiß vielleicht jemand hier, wie so etwas geht, bzw. wo man tutorials /
infos dazu findet?

Xmas
2003-04-15, 18:03:11
Originally posted by Der Tod
Ich habe mal ne OpenGL-Texturing-Frage :) ..

und zwar suche ich eine Möglichkeit den Übergang zwischen 2 Texturen
zu verblenden. Dazu habe ich ein wenig gesucht und bin auf folgende
URL gestoßen:
http://www.delphi3d.net/articles/viewarticle.php?article=terraintex.htm

die empfehlen dabei GL_ARB_texture_env_combine, was seit OpenGL
1.3 Teil der OpenGL-Spezifikation sein soll.

Ich habe mir den SourceCode dazu heruntergeladen und angesehen,
aber leider kann ich kein Delphi und verstehe nicht genau wie das
funktionieren soll. Naja gut .. ich habe dann noch weiter gesucht, aber
irgendwie nichts wirklich verwertbares gefunden.

Weiß vielleicht jemand hier, wie so etwas geht, bzw. wo man tutorials /
infos dazu findet?

Ich nehme mal an du suchst C/C++ Code, oder?

Wenn du das TexEnv für die erste Textur eingestellt hast, stellst du für die zweite Textur folgendes ein. Dann werden in Abhängigkeit vom Alpha-Wert der zweiten Textur die beiden Texturen interpoliert.

Die auskommentierten Zeilen bedeuten, dass hier nur der Standardwert gesetzt wird.


glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_INTERPOLATE_ARB);

//glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_TEXTURE);
//glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB_ARB, GL_SRC_COLOR);

//glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB_ARB, GL_PREVIOUS_ARB);
//glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB_ARB, GL_SRC_COLOR);

glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE2_RGB_ARB, GL_TEXTURE);
//glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND2_RGB_ARB, GL_SRC_ALPHA);

Gnafoo
2003-04-15, 22:09:51
Ok .. danke für die Hilfe .. jetzt klappts ..
gibts eine gute Seite, wo man mehr Infos dazu findet ?

zeckensack
2003-04-15, 23:22:40
Originally posted by Der Tod
Ok .. danke für die Hilfe .. jetzt klappts ..
gibts eine gute Seite, wo man mehr Infos dazu findet ? Das soll jetzt nicht überheblich klingen, aber das beste ist IMO immer noch, einfach die Spezifikation (http://oss.sgi.com/projects/ogl-sample/registry/ARB/texture_env_combine.txt) zu lesen.
Ein paar Mal, wenn's sein muß. Dort steht im Prinzip alles drin was man wissen muß. Dort ist exakt definiert, wie dieses Teil zu funktionieren hat, du hast also die gleichen Infos wie die Treiberprogger auch.

Wenn du ein bestimmtes Setup für einen bestimmten Effekt näher erklärt haben willst, dann mußt du genauer fragen :)