Hi,
ich habe folgendes Problem: Aus Spass an der Freude habe ich mir eine 3D Engine (ohne Java3D, ähnliche wie D**m) programmiert. Funktioniert alles wunderbar. Bloss hab ich ein Problem: Für das Shading werden beim jedem Renderzyklus die Farben der Oberflächen der Körper berechnet und dann zum Zeichnen gesetzt und verwendet.
In den meisten Programmiersprachen wie bspw. C, C++ oder Pascal ist das ja auch kein Problem: Einfach Farbe setzen und fertig. In Java bedeutet dies aber, das ich jedesmal ein Color-Objekt erstellen und danach wieder wegwerfen muss. Dieses Neuanlegen und wieder zerstören kostet aber jede Menge Performance :cry: .
Momentan löse ich das Problem indem ich mir eine kleine Farbtabelle in einem 3 dimensionale Array (eine Dimension jeweils für Rot, Grün und Blau) ablegen. Dort speichere ich bspw. jeden 16ten Farbton. Dann hätte ich am Ende 4096 (+ 1 für Schwarz) Farben in der Tabelle. Würde ich das jedoch für jeden Farbton machen, müsste ich 16,7 Mio. Color-Objekte in einem ebenso großen Array unterbringen. Dies kostet natürlich viel zu viel Speicher :cry: .
Habt Ihr irgendwelche Ideen? Hatte jemand von Euch schon mal ein ähnliches Problem?
ich habe folgendes Problem: Aus Spass an der Freude habe ich mir eine 3D Engine (ohne Java3D, ähnliche wie D**m) programmiert. Funktioniert alles wunderbar. Bloss hab ich ein Problem: Für das Shading werden beim jedem Renderzyklus die Farben der Oberflächen der Körper berechnet und dann zum Zeichnen gesetzt und verwendet.
In den meisten Programmiersprachen wie bspw. C, C++ oder Pascal ist das ja auch kein Problem: Einfach Farbe setzen und fertig. In Java bedeutet dies aber, das ich jedesmal ein Color-Objekt erstellen und danach wieder wegwerfen muss. Dieses Neuanlegen und wieder zerstören kostet aber jede Menge Performance :cry: .
Momentan löse ich das Problem indem ich mir eine kleine Farbtabelle in einem 3 dimensionale Array (eine Dimension jeweils für Rot, Grün und Blau) ablegen. Dort speichere ich bspw. jeden 16ten Farbton. Dann hätte ich am Ende 4096 (+ 1 für Schwarz) Farben in der Tabelle. Würde ich das jedoch für jeden Farbton machen, müsste ich 16,7 Mio. Color-Objekte in einem ebenso großen Array unterbringen. Dies kostet natürlich viel zu viel Speicher :cry: .
Habt Ihr irgendwelche Ideen? Hatte jemand von Euch schon mal ein ähnliches Problem?