openGl - performane: multitexture oder mehrere passes durch blending?
-
Ich schreibe an einer Engine ca. im Stil von Age of Empires II (halt nur in 3D ^^). Mein Problem liegt momentan bei den Texturen:
Ich lasse also haufenweise aneinanderliegende 4ecke zeichnen, deren Vertices mit Koordinaten, und Textur gespeichert sind. Was ich will ist dass die Texturen nun ineinander überlaufen, wenn 2 oder mehrere Vertices eines 4ecks verschiedene Texturen haben. Bisher mach ich das mit Blending, was zwar auch schon ganz gut aussieht, aber drastrisch an der Leistung zieht. Denn so sind teilweise bis zu 5 Passes pro 4eck nötig, wenn an allen Vertices unterschiedlche Texturen ( + 1x farbiger Untergrund ) sind ...
Meine Frage also: sollte ich hier auf Multitexturing umsteigen?
Ich weißet nich - zB., wie das die Performance beeinflusst, oder ob das nich auch zu hohe Ansprüche an die Hardware stellt. Schließlich bräuchte man 4 Texturen übereinander - seit welchen GraKas sind 4 Texturen möglich (isses überhaupt schon)? Das Spiel sollte eigentlich nich so Hardwarefressend werden ...btw, jemand n gutes Tut (nur) über Multitexturing? Ich laß jenes von NeHe, hab aber nich so richtigverstanden, was jetz genau die Grundlagen von Multitexturing sind, da das Sample auch gleich BumpMapping erklärt ..
Thx schon ma jetz, für wie immer kompetente Hilfe! ^^
-
Wenn du Tiling fürs Terrain verwendest kannst du ja eine bestimmte Anzahl an vorgefertigten Übergangstexturen verwenden. Siehe auch Warcraft 3...
Hier ein Bsp aus W3
http://www.futurelogic.de/gfx/grass.tga
-
Hm, sieht gut aus; Aber solche Texturen selbst hinzukriegen ... oder gibts dafür free Libs?
vielleicht ein Problem: Man kann nur ne bestimmte Anzahl von Bodentypen nutzen - bei 10 Typen und 4 Ecken heißt das dann 10^4 Texturen, naja :4 - man könnte es noch zurechtdrehen - bleiben noch 250 ... Is aber bestimmt gut für die Performance ...
-
Der Vorschlag von malignate wäre auch meiner, denn das sieht meiner Meinung nach am hübschesten aus.
Falls Du (oder der Grafiker) zu faul bist so viele Übergänge zu malen dann wird Multitexturing das beste sein.
Zumindest ist es schneller als das Quadrat mehrmals zu rendern, da der Framebuffer dann nur einmal beschrieben werden muss.
Alles ab einer Geforce3 kann mindestens 4 Texturen auf einmal einlesen.
Mit älteren Grakas kenne ich mich nicht aus, musst mal recherchieren.
-
Wenn mich nicht alles täuscht hast Du bei 10 Bodenarten sogar 9! = 362880 Übergänge. Aber man braucht ja auch nicht übergänge für alles. zb Eis und Wüste müssen nicht nebeneinander liegen. Zwischendurch sollte mal Grasland oder ähnliches vorkommen.
-
Warum schaust du nicht einfach beim Laden des Levels, welche Übergänge du brauchst, renderst diese einmal mit deinem Blending auf eine Textur und benutzt diese dann statt jeden Übergang 5 mal zu rendern??
mfg
-
Je nach Viewer kommt das nicht so raus...aber die machen nur Übergänge Textur zu einer anderen Textur. Also Textur zu Alpa = 100%. Wenn du LOD verwendest kann man das allerdings nicht verwenden. Das Tiling.