mehrere kleine Texturen langsamer als eine große?
-
servus,
meine Frage ist vielleicht etwas ungewöhnlich, aber ich denke sie passt doch hier rein. Und zwar geht es darum wenn ich in einem 3d-Spiel mehrere Texturen verwende anstatt einer verbraucht das dann mehr Performance? Z.B: Wenn ich ein Cockpit mache könnte ich für jedes Instrument eine eigene Textur machen, sagen wir 16 Texturen mit 128x128 Pixel, oder alle Instrumente auf eine Textur mit 512x512 wenn man davon ausgeht dass beide Möglichkeiten (für ein Cockpit) gleich viel Speicher brauchen. Die Vorteile der Ersten Möglichkeit wären: Wenn man viele Cockpits verschiedener Flugzeugtypen hat die teilweise dieselben Instrumente enthalten kann man Speicher sparen, weil man nicht für 5 Flugzeuge 5 512x512 Texturen braucht sondern vielleicht 32 128x128er. Die Erstellung von neuen Cockpits würde auch schneller gehen.Der Nachteil wäre natürlich, dass es mehrere Dateien sind d.h. vermutlich die Festplatte länger braucht bis sie alle gefunden hat und außerdem muss die Anwendung auch viel mehr Dateien verwalten.
Diese Methode könnte man logischerweiswe auch auf andere Dinge als Instrumente anwenden und so kann es denke ich ganz schnell passieren das die gesamt Anzahl der Texturen sich verdrei und vervierfacht. Nun um wieder auf die Frage zu kommen: Wie sind die Performanceeinbußen aufgrund der erhöhten Texturanzahl zu bewerten? Sind sie vernachlässigbar?
-
coldie schrieb:
servus,
meine Frage ist vielleicht etwas ungewöhnlich, aber ich denke sie passt doch hier rein. Und zwar geht es darum wenn ich in einem 3d-Spiel mehrere Texturen verwende anstatt einer verbraucht das dann mehr Performance? Z.B: Wenn ich ein Cockpit mache könnte ich für jedes Instrument eine eigene Textur machen, sagen wir 16 Texturen mit 128x128 Pixel, oder alle Instrumente auf eine Textur mit 512x512 wenn man davon ausgeht dass beide Möglichkeiten (für ein Cockpit) gleich viel Speicher brauchen.wenn man davon ausgeht dass beides gleich viel speicher verbraucht, wäre eine texture besser.
coldie schrieb:
Die Vorteile der Ersten Möglichkeit wären: Wenn man viele Cockpits verschiedener Flugzeugtypen hat die teilweise dieselben Instrumente enthalten kann man Speicher sparen,
wenn man davon ausgeht dass es speicher sparen würde, wäre ab einem gewissen punkt natürlich die möglichkeit mit mehreren, dafür aber speichersparenden, texturen besser.
Diese Methode könnte man logischerweiswe auch auf andere Dinge als Instrumente anwenden und so kann es denke ich ganz schnell passieren das die gesamt Anzahl der Texturen sich verdrei und vervierfacht. Nun um wieder auf die Frage zu kommen: Wie sind die Performanceeinbußen aufgrund der erhöhten Texturanzahl zu bewerten? Sind sie vernachlässigbar?
wie so oft im leben, muss man für sich einen mittelweg finden. z.b. die dinge die in jedem flugzeug gleich ist, in eine texture packen und dann noch pro flugzeug eine texture für die individuellen dinge.
das wechseln von textures an sich ist schon ein wenig kostspielig. aber wenige große textures können in manchen fällen (z.b. wenn man nur immer ein kleines stück davon braucht pro frame) auch langsammer sein. da gibt es soviel zu bedenken, dass es ne ganze abhandlung dafür geben könnte
grundsätzlich sollte man mit einem textureset pro objekt auskommen, bei objekten mit weniger als 200dreiecken(bei d3d) bzw 100dreiecken(bei ogl) ist sowieso nichts an performance rauszuhollen, deswegen sollte man z.b. in einem cockpit nicht jedes knöpfchen einzeln zeichnen.
-
Danke für die Antwort. Wies aussieht wird man es wohl einfach auprobieren müssen. Naja, die Objekte haben schon so 3000-8000 Dreiecke, an der grundsätzlichen komplexheit des Problems wird das wohl nichts ändern.