Macht openGL auch bei 2D Spielen sinn bei denen keine Bilder rotiert/skaliert werden?

  • Antworten:7
Dark Blood Studios
  • Forum-Beiträge: 203

07.06.2011, 14:27:01 via Website

Hi, macht openGL auch bei 2D Spielen sinn bei denen keine Bilder rotiert/skaliert werden?
Also bei dem Spiel um dass es geht werden viele rechteckige Bilder gezeichnet und bewegt, aber das Skalieren und Rotieren geschieht beim Laden des Levels, also nicht während des Spiels.

Danke schonmal für eure Antworten :-)

Antworten
L3322
  • Forum-Beiträge: 467

07.06.2011, 14:32:49 via App

Ich denke da kommst du mit einer surfaceview aus!
Ich komm zurzeit nicht unter 50 fps mit einer surfaceview trotz einiger Rotationen!

"Hard work beats talent, when talent fails to work hard"

Antworten
Dark Blood Studios
  • Forum-Beiträge: 203

07.06.2011, 19:20:33 via Website

Ok, gehen wir mal davon aus, dass ich wie bis jetzt kein openGL benutze, auf was muss/kann ich da beim Zeichnen den noch so achten?
Ich habe z.B. bemerkt dass man bei "canvas.drawBitmap(bitmap, x, y, null);" kein Paint-Objekt benutzen sollte da es sonst viel langsamer ist. Gibts noch andere solche Dinge auf die ich achten sollte?

Antworten
Dark Blood Studios
  • Forum-Beiträge: 203

08.06.2011, 19:58:17 via Website

L3322
Ich denke da kommst du mit einer surfaceview aus!
Das heißt also mit openGL wäre es trotzdem schneller?

Ich habe mein Spiel jetzt mal so verändert dass versucht wird eine konstante fps-Rate von 25 zu halten. Auf meinem Handy funktioniert das auch meistens, aber auf manchen anderen Handys und auch manchmal bei meinem ruckelt es.

In meinem Spiel wird eine Bitmap die ca. so groß ist wie die Auflösung des Bildschirms, eine 240x240 bis 960x960 große Bitmap (Größe kann von Benutzer im Menü eingestellt werden) und 20 bis 40 Bitmaps zwischen 20x20 und 80x80 Pixel (Größe kann von Benutzer im Menü eingestellt werden) gezeichnet.

Würde sich das jetzt lohnen es mit openGl zu machen?

Und wenn ich ein Bitmap erzeuge um mehrere andere Bitmaps darauf zu zeichnen, welche Art soll ich dann erstellen, Bitmap.Config.RGB_565, Bitmap.Config.ARGB_4444, Bitmap.Config.ARGB_8888 oder Bitmap.Config.ALPHA_8?

Antworten
Johannes Borchardt
  • Forum-Beiträge: 114

10.06.2011, 13:54:56 via Website

Hi,

für 2D Spiele kann ich dir AndEngine empfehlen. Ist OpenGL-basiert, aber davon kriegst Du im Regelfall nichts mit. Sehr viele Dinge werden Dir abgenommen, geht alles ziemlich einfach.

ChalkBall, Wheelz und FarmTower sind z.B. mit der AndEngine entwickelt worden.

Ach ja: Open Source ist es natürlich auch :-)

VG
Johannes

Antworten
Dark Blood Studios
  • Forum-Beiträge: 203

19.06.2011, 17:29:50 via Website

Ich habe jetzt mal ein bisschen mit openGL rumprobiert und mir ein paar Klassen geschrieben die mir den Umgang damit vereinfachen.
Jetzt hab ich aber eine Frage:

Ist es normal dass minimale Ruckler auftreten wenn man nur ein Mesh mit einer Textur die 512x512 Pixel hat rotiert? (Die Textur wird nicht in orginalgröße angezeigt, die Mesh ist kleiner)

Antworten
Dark Blood Studios
  • Forum-Beiträge: 203

23.06.2011, 15:15:57 via Website

Ich habe mir jetzt mal zwei kleine Programme geschrieben (eins mit openGL und eins ohne) und die beiden verglichen.
Beide Programme zeichnen eine Bitmap neben und übereinander bis der ganze Bildschirm bedeckt ist.

mit openGL:
1long time = System.nanoTime();
2for (int y = 0; y <= height / 64; y++) {
3 for (int x = 0; x <= width / 64; x++) {
4 gl.glPushMatrix();
5 gl.glTranslatef(x * 64, y * 64, 0);
6 gl.glEnable(GL10.GL_TEXTURE_2D);
7 gl.glBindTexture(GL10.GL_TEXTURE_2D, textureId);
8 gl.glDrawArrays(GL10.GL_TRIANGLES, 0, 6);
9 gl.glPopMatrix();
10 }
11}
12Log.v("test", System.nanoTime() - time + "");

ohne openGL:
1long time = System.nanoTime();
2for (int y = 0; y <= height / 64; y++) {
3 for (int x = 0; x <= width / 64; x++) {
4 c.drawBitmap(bitmap, x * 64, y * 64, null);
5 }
6}
7Log.v("test", System.nanoTime() - time + "");

Kommischerweise ist die Version ohne openGL viel schneller wie die mit openGl, wie kann das sein?

Antworten
Dark Blood Studios
  • Forum-Beiträge: 203

14.11.2011, 19:42:40 via Website

Hat wirklich keiner eine Idee an was das liegen kann?

Antworten