Registriert: Fr Mai 16, 2008 20:26 Beiträge: 158 Wohnort: Berlin
Programmiersprache: c++,c#,java,ruby,php
Zur Zeit herrscht bei mir wahre Demotivation etwas zu schaffen, was vermutlich auch an meinen Problem liegt. Deshalb brauch ich vermutlich mal wieder einen Denkanstoß.
Da mein Problem Code unabhängig ist, zeig ich ertsmal die groben Strukturen auf.
Was habe ich: - Objekt Manager, lädt Objekte in Threads und verwaltet dann die Daten.
- Textur Manager, erstellt Texturen in Threads und verwaltet die Texturen dann.
- Sky Manager, verwaltet die SkyBox/SkySphere etc (nur rudimentär implementiert)
- verschiedene Loader-Klassen, so wie weitere Verwaltungs-Klassen, Kamera-Klassen, Config Dateien.
Es ist also schon möglich einfach ein dynamisches Array( Java -> Vector) zu übergeben und
die enthaltenen Objekte zu laden, sowie auch zu rendern, sogar mit recht guter Performance.
Oc/Quad-Tree sind zwar vorhanden aber noch nicht eingebaut.
Wo ist das Problem: Nun zum Problem, so schön wie das alles auch ist, leider kann ich nur .obj Objekte Laden, mit entsprechender .mtl.
Was nicht weiter tragisch ist (Loader könnte man selber schreiben, einfach Schnittstelle implementieren), aber diese dürfen nur 1 Material pro Mesh mit genau einer Textur haben (ohne Textur gibt es Fehler und bei mehreren Materialien bekommt der Rest das erste Material).
Für einfache Objekte ist das ja noch wunderbar, nur nervig wenn man in Blender oder co extra darauf achten muss.
Deshalb wollt ich nun mehrere Materialien unterstützen.
Genau hier beginnt mein Problem.
Ich weiß nicht, wie ich das organisieren soll. TAK2004 hatte ja schonmal was in einem anderen Thread von mir geschrieben und genau so sieht es nun auch aus, weitgehends http://www.delphigl.com/forum/viewtopic.php?t=7513, danke nochmal =)
Beispiel: ein Würfel, welcher für jede Seite ein anderes Material hat, Bzw, hunderte Würfel mit verschiedenen Materialien.
Da Texturwechsel teuer sind, wäre eine Sortierung nach Material ja notwendig.
Nur wie stelle ich das an?
Den Würfel komplett in ein VBO schreiben und dann mit Indicies hantieren? Wenn ja, wie soll ich bei 6 Materialien sortieren?
Ich kann ja nicht jedes mal jedes Objekt testen, ob es zu dem Material gehört, und wenn ich jedem Material einen Verweis zum Objekt gebe, ist das sicher ein Datenoverhead bei vielen Objekten.
Oder lieber für jedes Material ein VBO, wo ich dann merke welches Würfelteil, bei welchem Material ist (irgendwie sehr umständlich).
Ich weiß, dass das der Worstcase ist und ich später sicher nicht nur einen Würfel, mit eine handvoll Vertices, für ein VBO habe, genau deshalb frage ich ja nach.
Ich hab da irgendwie keinen vernünftigen Ansatz und bevor ich alles 3x umbaue ohne Ergebnis frage ich lieber nach.
*frischgebackene Kekse bereitstelle und Milch*
mfg revolte[/quote]
_________________ System: Phenom XII X4 955 3,21Ghz , GTX 560 TI, 4GB-Ram, Windows 7 64x
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Mensch wie passend, schon wieder direkt nachm mittagessen lecker kekse und milch
Bei 6 Materialien und 6 Seiten kannst du natürlich nicht viel sortieren. Du solltest überlegen, wie du gleiche materialen über Objekte hinweg erkennst, sodass du auch verschiedene Objekte mit gleichen Materialien zusammenfassen kannst. Und dann denke ich, dass VBO und Indicies die vielleicht nicht einfachste aber dennoch schnellste Variante ist.
Gruß Lord Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Fr Mai 16, 2008 20:26 Beiträge: 158 Wohnort: Berlin
Programmiersprache: c++,c#,java,ruby,php
Mh naja das ist genau der Knackpunkt. Ich fang an, überleg mir was, schreib eine Zeile, merke, dass das doch Blödsinn ist und warte wieder einen Tag seufz..^^
Material-Manager zu machen ist ja kein Problem, der beinhaltet alle geladenen, benötigten Materialien und verwaltet diese. Aber wie die Objekte zusammenfassen..das sagt sich so leicht, ist aba so umständlich alles :/
Aber gut dann merk ich mir in meiner Objektklasse, welche Indicies, welches Material haben, dass kann man direkt beim Ladevorgang bestimmen.
Hatte halt nur Angst, dass die Performance sehr drunter leiden würde dann.
*Motivation schub nehm* Mal gucken, was sich da machen lässt.
ich hoffe das du nicht zu dick wirst xP
mfg revolte
_________________ System: Phenom XII X4 955 3,21Ghz , GTX 560 TI, 4GB-Ram, Windows 7 64x
Mitglieder in diesem Forum: 0 Mitglieder und 22 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.