Wasser rendern... aber wie?

  • Antworten:3
Ludwig Moser
  • Forum-Beiträge: 5

14.09.2012, 11:19:16 via Website

hallo leute,

ich muss in meiner app wasser rendern.
die daten dahinter werden entweder von box2d oder von meiner eigenen api errechnet (muss noch sehen was da schneller ist)
auf alle fälle gehts um das darstellen von 10.000 punkten.

meine bisherigen versuche waren alle mit einem int[] und dann erstellen eines Bitmaps als textur...
mein erster versuch war kreise auf das bild zu zeichnen
mein zweiter versuch war die punkte auf ein bild zeichnen, dann blur drüber lassen und dann per treshhold wieder abschneiden;

würde alles klappen, ist aber zu langsam für echtzeit - berechnungen.
jetzt habe ich noch zwei weitere 'ideen'
erstens: render to texture (OpenGL punkte auf eine textur rendern, die ich als alpha map verwende...
zweitens: die punkte als zentrum von einfachen sprites verwenden (also ein quad das mit einer textur belegt ist und dann aussieht wie ein kreis)
EDIT: drittens: hab versucht für das wasser eine concave hülle zu berechnen, auch das dauert zu lange!

nun meine frage an euch...
wie würdet ihr das machen?

PS: das wasser soll im endeffekt so sein, wie bei Worms Blast

— geändert am 14.09.2012, 11:46:45

Antworten
André
  • Forum-Beiträge: 77

15.09.2012, 00:12:45 via Website

Ludwig Moser
meine bisherigen versuche waren alle mit einem int[] und dann erstellen eines Bitmaps als textur...

Da du das Wasser vermutlich für jeden Frame neu berechnen willst, kommt ein neu Erstellen einer Bitmap nicht infrage. Versuch mal, die Bitmap einmal zu erzeugen, und dann nur die Daten einzutragen per setPixels().
http://developer.android.com/reference/android/graphics/Bitmap.html#setPixels(int[],%20int,%20int,%20int,%20int,%20int,%20int)

Bei einer Größe von ca. 100x100 sollte das nicht übermäßig langsam sein. Ansonsten kann man das sicher mit OpenGL auch effizienter hinbekommen.

PS. Das Escapen von Links mit "" ist im Forum kaputt.

Antworten
Ludwig Moser
  • Forum-Beiträge: 5

15.09.2012, 08:28:37 via Website

Err... das Wasser selbst zu berechnen ist nicht das Problem. Auch nicht das Wasser als punktwolke auf ein bitmap zu zeichnen.
Mein Sitemap hat native Auflösung des Telefons.
Die 10.000 Partikel, also 100x100 haben nichts mit der Größe des gerenderten. Bildes zu tun...

Antworten
Ludwig Moser
  • Forum-Beiträge: 5

17.09.2012, 07:38:29 via Website

ich hab mich jetzt mal hoch und runter gelesen und es scheint dass Metaballs/blobs das gewünschte ergebnis bringen.

eine andere überlegung war das blur&treshold per shader berechnen zu lassen, wobei ich davon leider noch keine ahnung habe wie das gehen soll...

Antworten