Probs mit Multitexturing in OpenGL
-
Ich hab nun Multitexturing aktiviert und sie funktioniert auch einwandfrei, allerdings scheinen die anderen Objekte auf denen ich gar kein Multitexturing haben will auch noch "gemultitextured" sein, zumindest verändert sich deren helligkeit wenn ich die Detailmap (2. Textur) verändere obwohl diese eine völlig andere Textur haben. Muss ich das irgendwie angeben das ich die zweite Textur für diese Objekte nicht mehr benutzen will?
Und nebenbei: Wie schalte ich Bilineäres und Trilineäres Filtering ein/um?
Achso nochwas: Ich hab das Multitexturing für ein Terrain verwendet, ist es normal das durch das Multitexturing die Rendergeschwindigkeit nur 1/10 so schnell ist wie vorher?
-
Morgen!
Nachdem du Multitexturing verwendest solltest du die Textur auch wieder abschalten.
Hier ein Beispiel:
glClientActiveTextureARB (GL_TEXTURE0_ARB); // stage 0 glActiveTextureARB (GL_TEXTURE0_ARB); glEnable (GL_TEXTURE2D, TRUE); texture.bind (); glClientActiveTextureARB (GL_TEXTURE1_ARB); // staage 1 glActiveTextureARB (GL_TEXTURE1_ARB); glEnable (GL_TEXTURE_2D); texture2.bind (); // hier vertex mit glMultiTexCoord2fARB für jede Stage // Texturkoordinaten angeben // -zeichnen glDisable (GL_TEXTURE_2D); // dies wirkt sich auf stage 1 aus!!
Filtering änderst du mit glTexParameteri, wobei du beachten musst
dass der Befehl jeweils für die gebind'ete Textur gilt.Die Geeschwindigkeit bei Multitexturing sollte gleich bleiben im Vergleich zu einer einfachen Textur. Machen die ganzen Karten doch per Hardware
Jedoch kann man sich das durch einige simple Tricks schnell wieder zunichte machen:-Beim Rendern ganz viele Renderstates ändern
-Die Textur am Besten für jeden Vertex neu setzen
-Viele kleine Texturen statt einer großen verwendenAlso am Besten befolgst du diese drei Sachen nicht, dann klappts auch
mit der Framerate
-
Danke, werd das mal probieren.
Achso, gibs irgendwie Probleme mit DisplayListen und Multitexturing? Denn funktionieren tuts bei mir, aber vielleicht liegt es ja daran das es so langsam ist.
Und wenn wir schonmal dabei sind: Wie gebe ich an wie sich die beiden Texturen beim übereinanderlegen verhalten sollen (aufhellen/abdunkeln u.ä.)?
Und welche Parameter muss ich für Tri/bi-filtering an die glTextParami funktion übergeben?
-
Ich habs jetz mit und ihne Multitexturing verglichen, und dabei kamen folgende Werte raus:
Landschaft aus 512x512 Heightmap mit QuadTree/Frustrumculling und 2Stufigen LOD, Quadnodes als Displaylisten.
Ohne Multitexturing nur eine relativ kleine Textur:
über 100fps (bis zu 15Mio Tris pro Sek)Mit Multitexturing: relativ kleine Grobe Textur + 100fach gekachelte kleine Detailmap
unter 10fps (maximal 1Mio Tris pro Sek)
-
Hallo!
Ich kann deine Ergebnisse in keinster Weise bestätigen, eher im Gegenteil.
Gezeichnet werden 15*6 Quads, einmal nur mit der normalen Texur, und einmal
mit drei aktivierten Texturen (stage 0-3)Mit nur der normalen Textur habe ich im Schnitt 230fps.
Bei allen drei Texturen aufeinmal kriege ich ~260fps.Vielleicht mag OpenGL nicht wenn du deine Detailtextur so viel streckst?
Btw, ich verwende keine Display Lists.
-
Ghandi schrieb:
Ohne Multitexturing nur eine relativ kleine Textur:
über 100fps (bis zu 15Mio Tris pro Sek)Mit Multitexturing: relativ kleine Grobe Textur + 100fach gekachelte kleine Detailmap
unter 10fps (maximal 1Mio Tris pro Sek)naja, ist ja logisch dass es mit zwei texturen mehr aufwand ist als mit nur einer, deswegen wird es natürlich langsammer. so langsamm wie es bei dir ist, könnte es daran liegen dass du die mipmaps vergessen hast, eine moderne graka sollte mit zwei texturen kein problem haben.
rapso->greets();
-
Nein, ich verwende Mipmaps, hab aber nur ne Radeon8500 für Testzwecke, keine Ahnung ob die noch als "modern" gilt.
Habs grad nochmal mit ner Radeon 9800 + AMD 2800+ Probiert...auch nur 10fps, das kann doch bald nichs ein.
-
Weiss niemand ne Antwort? Wenn nicht, kennt dann vielleicht jemand ein gutes OGL-Forum wo ich noch nachfragen könnte? kann auch auf Englisch sein.
-
www.opengl.org und dort im forum
rapso->greets();
-
Dank.
Das mit dem Geschwindigkeitseinbruch lag offensichtlich an den Displaylisten, das Multitexturing hat einfach den Gesammten geschwindigkeitschub der Sip.-Listen zunichten gemacht und bei grossen Listen sogar umgekehrt.
Deshalb hab ich die Displaylisten jetz wieder raus genommen, schade eigentlich.