Ich habe z. B. 10000 (nur für einen kleinen Test ^^) Objekte, die alle gleichzeitig auf dem Bildschirm dargestellt werden möchten. Um dies zu erreichen, sollen bis zu drei darzustellende Informationen ausgewählt werden, die jeweils durch verschiedene Rot-, Grün- und Blauanteile eines Pixels aufgezeigt werden. Ein Pixel repräsentiert so die gewünschten drei Informationen eines einzelnen Objekts. (Ja, das ergibt Sinn, da vor allem die Gesamtentwicklung interessant zu beobachten sein wird.)
Nun ist es so, dass sich diese Informationen wahnsinnig schnell ändern, von daher denke ich, sollte ein VolatileImage zur Anwendung kommen. Wie ich mit so einem VolatileImage arbeiten kann, meine ich inzwischen rausgekriegt zu haben.
Das Problem: Es scheint keine Methode zu geben, mit der ich ganz gezielt einen der drei Farbkanäle (Rot, Grün, Blau) eines ganz bestimmten Pixels ändern kann.
Meine bisherigen Ideen dazu sind folgende:
Variante 1: Ich zeichne Linien von 1 Pixel Länge. Dazu müsste ich aber jedes mal neue Color-Objekte erstellen, um den imaginären Stift des Graphics2D-Objektes „umzufärben“. Das ist offensichtlich nicht sehr performant.
Variante 2: Ich benutze ein BufferedImage und greife via setSample(int,int,int,int) des dazugehörigen WriteableRasters direkt auf einen Farbkanal zu. Jetzt müsste ich allerdings jedes Mal das BufferedImage, welches ich zudem überflüssigerweise im Arbeitsspeicher halten muss, auf das VolatileImage zeichnen. Frage: Geht das nicht noch schneller, wo es denn schon Arbeitsspeicher frisst? ???:L
Mit anderen Worten: Ich will (via Java) so schnell und so platzsparend wie möglich auf einen ganz bestimmten Farbkanal eines ganz bestimmten Pixels effektiv schreibend zugreifen.
(Hat Letzteres jemand überhaupt verstanden? ^^')
Kann mir da jemand einen Rat geben?
MfG
Ark
Nun ist es so, dass sich diese Informationen wahnsinnig schnell ändern, von daher denke ich, sollte ein VolatileImage zur Anwendung kommen. Wie ich mit so einem VolatileImage arbeiten kann, meine ich inzwischen rausgekriegt zu haben.
Das Problem: Es scheint keine Methode zu geben, mit der ich ganz gezielt einen der drei Farbkanäle (Rot, Grün, Blau) eines ganz bestimmten Pixels ändern kann.
Meine bisherigen Ideen dazu sind folgende:
Variante 1: Ich zeichne Linien von 1 Pixel Länge. Dazu müsste ich aber jedes mal neue Color-Objekte erstellen, um den imaginären Stift des Graphics2D-Objektes „umzufärben“. Das ist offensichtlich nicht sehr performant.
Variante 2: Ich benutze ein BufferedImage und greife via setSample(int,int,int,int) des dazugehörigen WriteableRasters direkt auf einen Farbkanal zu. Jetzt müsste ich allerdings jedes Mal das BufferedImage, welches ich zudem überflüssigerweise im Arbeitsspeicher halten muss, auf das VolatileImage zeichnen. Frage: Geht das nicht noch schneller, wo es denn schon Arbeitsspeicher frisst? ???:L
Mit anderen Worten: Ich will (via Java) so schnell und so platzsparend wie möglich auf einen ganz bestimmten Farbkanal eines ganz bestimmten Pixels effektiv schreibend zugreifen.
(Hat Letzteres jemand überhaupt verstanden? ^^')
Kann mir da jemand einen Rat geben?
MfG
Ark