openGL 2.0 support

  • Antworten:10
Dominic Bartl
  • Forum-Beiträge: 180

15.09.2010, 15:20:03 via Website

Weiß jemand welche Handys openGL 2.0 unterstützen ??
ich weiß es vom nexus one. gibts da eine liste oder sowas in der art bzw.
hat jemand von euch eine ahnung.

Lg.
bartinger

Antworten
MaMe82
  • Forum-Beiträge: 15

17.02.2011, 19:48:45 via Website

Also auf jeden Fall Handys die als GPU einen Adreno 200 oder 205 haben (kann man googlen, z.B. HTC Desire), außerdem die Tegra 2 Geräte und die mit bestimmten PowerVR Chips (Samsung Galaxy S)

Antworten
Xazen
  • Forum-Beiträge: 5

18.02.2011, 09:40:09 via Website

Auf der Seite:
http://developer.android.com/sdk/android-2.2-highlights.html

steht weiter unten:
Graphics

New APIs for OpenGL ES 2.0, working with YUV image format, and ETC1 for texture compression.

Muss man davon ausgehen, dass erst Handys ab der Android Version 2.2 OpenGL ES 2.0 "richtig" unterstützen? Und kann man davon ausgehen, dass alle Froyo Smartphones das tun?
Ich frage so gezielt danach, weil ich wissen will, wie groß die Zielgruppe ist, wenn ich eine App in OpenGL ES 2.0 programmieren würde. Ich wollte demnächst OpenGL lernen und will nicht etwas veraltetes lernen. Aber ich will auch nicht etwas lernen, was erst in ferner Zukunft angewendet werden kann. Um ein Beispiel zu nennen, was ich unter "ferne" Zukunft verstehe nenne ich mal HTML5.

Antworten
MaMe82
  • Forum-Beiträge: 15

18.02.2011, 13:45:19 via Website

Nein die OpenGL es 2.0 Unterstützung ist rein Smartphone abhängig. Wenn ein Telefon allerdings ein Android kleiner als 2.2 hat müsstest du den OpenGL Code naiv schreiben (d.h. C statt Java und Android NDK statt nur der SDK). zur Zielgruppe wird auf developer.android.com alle 2 Wochen eine Statistik veröffentlicht, der Weltweite Froyo-Anteil liegt momentan bei ca.58% aller Android Geräte. Html 5 ist etwas ganz anderes und löst ehr Flash ab, OpenGL ES ist seiner Zeit (der Hardware) weit voraus und bildet z.B. die Basis für jedes PS3 Programm. Es ist also Zukunftssicher

Ein guter Einstieg wäre aber OpenGL ES 1.0 das wird von jedem Android Gerät unterstützt und ist sehr viel einfacher,weil du dich nicht gleich mit programmierbarer Hardware zuschlagen musst. Guter Anfang: NeHe Tutorials

— geändert am 18.02.2011, 13:49:54

Antworten
Xazen
  • Forum-Beiträge: 5

18.02.2011, 14:05:01 via Website

Ich werde dann mal deinen Rat folgen und OpenGL ES 1.0 zuerst lernen. Hatte nämlich gelesen, dass OpenGL ES 2.0 ganz anders ist. Ich will ungern etwas umsonst lernen.

Sollte ich also etwas in OpenGL ES 2.0 schreiben, müsste ich also erst mal
1. OpenGL ES 2.0-Code für die OpenGL ES 2.0-fähigen Android Geräte ab Version 2.2 schreiben.
2. Und einmal OpenGL ES 1.0 für die Android Geräte mit der Version 2.2 die aber kein OpenGL ES 2.0 unterstützen.
3. Und dann noch einmal naiv für Android Geräte <2.2 ?

verstehe ich das richtig ? Was hat OpenGL ES 2.0 der ersten Version allgemein voraus ?

Die Statistik bei der nur nach Version unterschieden wird, kannte ich. Mit der Frage nach der Anteil der Leute die mind. 2.2 haben, wollte ich wissen, wie viele Leute OpenGL ES 2.0 unterstützen. Die müsste dann ja noch kleiner sein oder ? Kann man das irgendwie herausfidnen?

HTML5 habe ich angesprochen, weil ich damit sagen wollte, dass es momentan noch keinen Sinn macht HTML5 zu lernen oder jedenfalls macht es keinen Sinn (meiner Meinung nach) Webseiten jetzt schon allgemein in HTML5 zu schreiben. Und ich wollte wissen ob OpenGL ES 2.0 momentan in der gleichen Situation ist. :) Dass OpenGL ES 2.0 die Basis von PS3 Programmen ist finde ich jetzt aber wirklich sehr interessant. Hat ja anscheinend mehr Power als ich dachte. Hätte gedacht dass für PS3 OpenGL verwendet wird. Da steckt ja doch mehr Power drin als ich dachte.

Antworten
Dominic Bartl
  • Forum-Beiträge: 180

18.02.2011, 14:42:32 via Website

Mein Post ist jah schon etwas älter :)
Ich habe auch zuerst openGL 1.0 gelernt, von diesem Tutorial
https://www.nextpit.de/de/android/wiki/view/Spieleentwicklung_101

Ich hab einfach den spielentwicklerischen Teil überspringen, da ich mich da schon auskenne und den openGL Teil gemacht.
Ich muss sagen das ist das beste Tutorial das ich gefunden habe :)

openGL 2.0 hab ich noch nicht gelernt :( aba ich denke es wird von allen 1GHz und mehr unterstützt

Antworten
MaMe82
  • Forum-Beiträge: 15

19.02.2011, 00:39:43 via Website

Naiv sollte nativ heißen: Du programmiert für jede Android-Version mit einem eigenen SDK, dieses unterstützt erst seit Version 2.2 OpenGL ES 2.0, vorher nur 1.x

Trotzdem kannst du für ältere Versionen von Android auch ES 2.0 Code schreiben, allerdings musst du dies in C statt Java tun (in Verbindung mit der Android NDK) und dann für die jeweilige Gerätearchitektur kompilieren (Java hingegen ist Geräteunabhängig, da es auf Android die Dalvik JVM nutzt).
Google zur nativen Methode mal: Android +NDK +OpenGL

OpenGL für Desktop ist dem mobilen ES Pendant sehr ähnlich, ES hat lediglich alles überflüssige weggelassen

Wesentlicher Unterschied:
1.0 = feste Hardware, d.h. Vertextransformationen und Pixelberechnungen (Beleuchtung,Schattierung,Texturoperationen) sind fest integriert, können nicht verändert werden - du musst Sie aber auch nicht selbst implementieren

2.0 = Programmierer Hardware, genau das Gegenteil, unendliche Manipulationsmöglichkeiten, aber um ein simple texturiertes Dreieck zu rendern, musst du der Hardware genau sagen wie (GLSL googlen) und im Unterschied zur Desktopvariante hast du hier keinen Zugriff auf die fixed-function Pipeline aus 1.0

Fazit:
OpenGL ES 1.0
+ einfach
+ viele Tutorials
+ auf jedem AndroidDev unterstützt
+ schnelle Erfolge

2.0
+ setzt viel Verständnis von OpenGL voraus (Matritzenoperationen von Hand,Vertexmanipulation von Hand, Fragment- und Texturoperationen auch von Hand, Lichtberechnungen von Hand)
+ sich ergebende Möglichkeiten kennst du vom PC oder der PS3 - Shader-Effekte wie BumpMapping, Motionblur, Bloom, PerPixelLighting, WasserEffekte...
+ aber 2. Sprache nötig GLSL (auch an C angelehnt)
+ nichts für Einsteiger

— geändert am 19.02.2011, 00:57:55

Antworten
Xazen
  • Forum-Beiträge: 5

21.02.2011, 11:10:50 via Website

Kann man dann wohl auch sagen, dass es "unnötig" ist Open GLES 2.0 zu lernen, wenn man "nur" was für Android programmieren will?

— geändert am 21.02.2011, 11:22:00

Antworten
MaMe82
  • Forum-Beiträge: 15

21.02.2011, 11:47:08 via Website

Ich hab leider keine App die rein Canvas nutzt aber die gibt es reichlich, damit du dir ein Bild über die verschiedenen OpenGL Versionen machen kannst schau mal in meine Apps

RetroFire nutzt OpenGL ES 1.0
CirculateGL nutzt OpenGL ES 1.1
3D ABC, Relief 3D und Stars 3D nutzen einen OpenGL ES 2.0 Shader der 3D Berechnungen auf einem 2D Bild durchführt (in OpenGL ES 1.x so gut wie unmöglich)

de Fakto ist es abhängig von dem was du machen willst, bevor du das nicht weißt ist es schwer zu sagen was die optimale herangehensweise ist.

OpenGL ES 2.0 um einen einfarbigen Kreis zu zeichnen ist sicher unnötig, wenn du volle Kontrolle über Pixelfarbwerte, Beleuchtung, Schattierung usw. bei voller Hardwarebeschleunigung willst ist es der beste Weg.

Antworten
Xazen
  • Forum-Beiträge: 5

21.02.2011, 15:36:48 via Website

Vielen Dank für die Super Auskunft! Na dann weiß ich glaube ich erst mal alles was ich für den Start in OpenGL ES 1.0 brauche. (Mit Start meine ich natürlich das Lernen :) )

Antworten
Thomas R.
  • Forum-Beiträge: 1

07.09.2011, 14:44:14 via Website

MaMe82
OpenGL ES 2.0 um einen einfarbigen Kreis zu zeichnen ist sicher unnötig, wenn du volle Kontrolle über Pixelfarbwerte, Beleuchtung, Schattierung usw. bei voller Hardwarebeschleunigung willst ist es der beste Weg.

Hallo MaMe,

danke für Deine Hinweise. Jetzt trifft es mich auch mit der OpenGL Programmierung. Dazu habe ich auch schon die Seite https://www.nextpit.de/de/android/wiki/view/Spieleentwicklung_101 gefunden. Die ist jedoch nur 1.0. Aber für den Einstieg gewiss einer der Besten.

Nun habe ich mir auch die Screenshots Deiner Programme "3D ABC, Relief 3D und Stars 3D" angeschaut. Mehr als nur beeindruckend. Hast Du da zufällig einen Link auf ein Tutorial, das einem genau das auch beibringt?

Sonst würde ich einfach erst einmal 1.0 mir aneignen und dann mal 2.0 versuchen.

— geändert am 07.09.2011, 14:51:17

Antworten