Hardwarebeschleunigung für OpenGL ES

E

EgonOlsen71

Neues Mitglied
0
Hallo erstmal,

nachdem ich mich einige Zeit mit dem Emulator (1.5r3) gequält habe, habe ich jetzt ein Samsung I7500 erworben. Mit dem Emulator habe ich bereits eine Portierung meiner Java3D-Engine begonnen. Der Emulator nutzt leider immer nur einen Software-Renderer und der ist unerträglich langsam. Daher habe ich das jetzt auf dem echten Telefon probiert und...das nutzt auch nur den Software-Renderer und ist unerträglich langsam. Der Initialisierungscode ist exakt wie in diesem Beispiel: Android Developers Blog: Introducing GLSurfaceView

Ich habe bereits im Netz gesucht, ob, wie weit und wann Android Hardware nutzt und bin auf widersprüchliche Aussagen gestoßen. Manchmal heißt es "nein", dann heißt es "kommt drauf an", dann wieder "ja". Aber Fakt ist auch: Zumindest auf meinem Telefon und diesem Code wird es NICHT genutzt. Liegt das nun am Telefon (die Hardware kann es aber durchaus, wenn man den Specs glauben darf), am Code (was muss ich anders machen?) oder an Android?
 
Niemand eine Idee? Ich habe mal ein paar 3D-Spiele vom Market probiert, aber entweder machen die simples Flatshading, was man vermutlich auch mit den 2D-Grafikmethoden noch hinbekommt, oder sie machen komplett ihr eigenes Softwarerendering (Doom) oder sie scheinen die Dalvik-VM nur als Startup-Vehikel für was natives zu nutzen (diese Autorennen von Omnigsoft). Letztere zeigen immerhin, dass die Hardware es kann....aber mittels VM bekomme ich nach wie vor nur Softwarerendering geliefert.
Macht niemand was mit OpenGL auf den Dingern, außer darüber zu reden, wie klasse es gehen würde, wenn man es täte? Man findet kaum vernünftige Informationen darüber im Netz...:confused:
 
Hallo,

die Portierung einer Java-3D-Engine auf Android dürfte ziemlich nervig werden. Zum einen hast du kein natives floating point (das hier könnte helfen: Fixed-point arithmetic - Wikipedia, the free encyclopedia) zum Anderen verhält sich die Dalviak VM performance mäßig ganz anders als die SUN JVM auf dem PC (ich sag nur JIT). Die vielen Layer (Interfaces) die man auf dem PC sinnvollerweise implementiert können auf dem Handset einem das Genick brechen.

Guck mal hier: YouTube - Google I/O 2009 - Writing Real-Time Games for Android

Dort dreht es sich um Android-Echtzeit-Game-Programming. Auch wenns eher um 2D-Spiele geht ists sicher hilfreich (vor allem was er über die Framerate in Verbindung mit dem GC so sagt). So wie ich den Referenten verstehe müsste aber Hardwaresupport auf dem G1 funktionieren - jedoch scheint man sehr genau wissen zu müssen was man macht.

Evtl. kann es auch an Samsungs Implementierung liegen. Bau doch mal ne kleine Test-App (mit FPS-Counter) und frag nen G1/Magic Besitzer ob er das mal ausführt und sagt wie es bei ihm läuft. Dadurch kann man Herstellerproblematik schon einmal ausschließen. Würde mich auch interessieren.

Ich hab im mom leider kein Android-Tel um das für Dich zu testen, aber gibt hier ja genug :)

Viele Grüße,

SuperSonic
 
Ich meinte natürlich "Dalvik VM" - sorry.

BTW: Habt ihr den "Ändern-Button" gesehen?
 
superSonic schrieb:
Hallo,

die Portierung einer Java-3D-Engine auf Android dürfte ziemlich nervig werden. Zum einen hast du kein natives floating point (das hier könnte helfen: Fixed-point arithmetic - Wikipedia, the free encyclopedia) zum Anderen verhält sich die Dalviak VM performance mäßig ganz anders als die SUN JVM auf dem PC (ich sag nur JIT). Die vielen Layer (Interfaces) die man auf dem PC sinnvollerweise implementiert können auf dem Handset einem das Genick brechen.
Die Portierung ist eigentlich fast fertig. Das mit der FPU ist ein Problem, aber um das wirklich bewerten zu können, müsste man eine vernünftige Rendergeschwindigkeit hinbekommen. Ansonsten ist es eh zu lahm. Auf Fixed-Point habe ich verzichtet und das bleibt auch so. Ich habe viel mit Fixed-Point in Softwarerenderern gemacht...das ist eine Sache. Aber Kollisionsabfragen damit zu machen, dass ist eine ganz andere.
Was die Layer angeht: Das Problem habe ich nicht. Meine Engine ist sehr schmal gehalten was das angeht, was sich aus ihrer Historie raus erklärt. D.h. ich habe kaum Interfaces, das meiste interne ist packagepublic und die Zugriffe laufen direkt auf den Attributen ab. Das ist nicht sehr OO, aber war früher gut für 1.1er VMs und ist es auch für Dalvik.
Ich habe auf Javagaming.org noch einen Thread zum Thema laufen, der aber bisher auch kein endgültiges Ergebnis gebracht hat.
 

Ähnliche Themen

netfreak
  • netfreak
Antworten
10
Aufrufe
437
netfreak
netfreak
5
Antworten
0
Aufrufe
1.117
586920
5
Y
Antworten
4
Aufrufe
1.187
swa00
swa00
Zurück
Oben Unten