Registriert: Mo Nov 08, 2010 18:41 Beiträge: 769
Programmiersprache: Gestern
mathias hat geschrieben:
Oder kann ich wenigsten irgendwie die Grösse der Datei ermitteln ? Bei einer Datei eines öffentlichen Ornder kann ich die Grösse mit folgendem Code ermitteln.
Da sich die Daten aber im Assets befinden, geht dies leider nicht.
Genau aber egal ob offentliche Datei, Sandbox, Download usw., du kriegst hierbei immer direkt, oder eine Ableitung von, InputStream. Diesen kannst du dann ganz leicht in ein entsprechendes Format umwandeln.
Stell dir Streams einfach als bessere Form von Arrays vor. - Du kannst alles moegliche reinpacken. - Sie funktionieren Asynchron. - Du brauchst kein Resize. - Du kannst Call-By-Need Pattern benutzen. - uvm..
Der Umweg über die Float-Array kann ich mir sparen, ich kann direkt die Byte-Array verwende. So nebenbei entfällt dadurch das Big/Little-Endian Problem zwischen Java und Lazarus.
Vielleicht könnte man den InputSteam direkt in den ByteBuffer schreiben ?
Registriert: Mo Nov 08, 2010 18:41 Beiträge: 769
Programmiersprache: Gestern
Hehe ja sorry, habs nicht getestet
Und ja theoretisch kannst du es direkt in den ByteBuffer reinschreiben. Auf den ersten Blick würde ich aber behaupten das du damit der Runtime etwas mehr Arbeit zumutest. Ich weiß ja nicht wie gut die aktuelle IDE ist, aber vielleicht gibt es ja mittlerweile nen brauchbaren Profiler (gibt dir Ausführungszeit, Ram, CPU-Last usw. für die einzelnen Methoden). Damit könntest du nachschauen welche Variante für dich besser ist.
Du könntest natürlich auch Array mit einer bestimmten Max-Größe aufsetzen. Also zum Beispiel: Solange die Datei kleiner als 2 mb dann schreibs direkt rein, wenn nicht dann nutz den Buffer. Oder so.
Ansonsten: Solange es keine Probleme macht, einfach so lassen. Optimieren kann man immer noch später
Wie gefährlich ist dies, kann diese Methode bei zu grossen Dateien zu Problemen führen ? Die ersten 4 Bytes des Streams gibt die Länge der Byte-Array an.
Die Idee dahinter, das ich Position, Normal und Color in eine Datei speichern kann. Color ist eine einfache vec4 Variable.
Registriert: Mo Nov 08, 2010 18:41 Beiträge: 769
Programmiersprache: Gestern
Gefährlich ist es nicht wirklich. Du musst halt nur im Hinterkopf behalten wie viel Speicher du deiner Zielgruppe zumuten willst. Wenn du allerdings wirklich große Datenmengen hast, solltest du dir ein Format überlegen mit dem du die Datei aufteilst. Dann kannst du ganz leicht Stück für Stück nachladen.
Du kannst dir ja mal solche Sachen wie Rx oder Linq aus der .NET Welt anschauen. Das sind ganz einfache Systeme die dir erlauben deine eigentliche Arbeit so zu Wrappen das Sie nur ausgeführt wenn du sie auch wirklich brauchst. Und Obendrein kann man solche Systeme ganz leicht so umbauen das im Hintergrund vorgeladen wird und all solche Sachen
Wie gesagt, die sind sehr einfach, es sollte also kein Problem werden diese Sachen zu portieren.
Mitglieder in diesem Forum: 0 Mitglieder und 11 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.