1. Hast Du Lust, bei uns mitzuarbeiten und das AH-Team zu verstärken? Alle Details zu dieser aktuellen Herausforderung findest Du hier.
  1. Kernle 32DLL, 30.01.2010 #1
    Kernle 32DLL

    Kernle 32DLL Threadstarter Neuer Benutzer

    Hiho,

    heute morgen ist mir beim testen meiner App etwas ziemlich seltsames aufgefallen. Ich habe bisher als SDK-Target sowie als Emulator Android 1.6 benutzt. Jetzt habe ich beides auf 2.0 (bzw auch 2.01 und 2.1) umgestellt, und plötzlich habe ich extreme Farbfehler in OpenGL. Ich habe den Fehler auf einen Befehl zurückverfolgt. Den im Threadnamen genannten "glColorPointer".

    Um Platz zu sparen, benutze ich einen Int-Buffer mit 3 Integern (Fixed Point Floats) pro Vertice. Den 4. Integer für die Alphawerte spare ich mir.

    gl.glColorPointer(3 , GL10.GL_FIXED , 0 , mColorBuffer);

    Seit Android 2.0 funktioniert das wohl nicht mehr. Füge ich im Buffer den besagten 4. Integer pro Vertice hinzu (einfach FP 1.0f), und ändere den Befehl wiefolgt ab...

    gl.glColorPointer(4 , GL10.GL_FIXED , 0 , mColorBuffer);

    ...funktioniert wieder alles super.

    Richtig mysteriös wird es dadurch das dieser "Fehler" anscheinend nur im Emulator auftritt. Auf dem Motorola Milestone funktioniert obrige Variante perfekt.

    Hat jemand eine Erklärung dafür?

    So long,
    Kernle
     
  2. swordi, 30.01.2010 #2
    swordi

    swordi Gewerbliches Mitglied

    naja wenns im milestone passt, ist es wohl ein bug im emulator

    kann durchaus sein - eventuell mal mit noch einem anderen androiden testen
     
  3. Kernle 32DLL, 31.01.2010 #3
    Kernle 32DLL

    Kernle 32DLL Threadstarter Neuer Benutzer

    Ich habe gerade gemerkt das ich auf dem Milestone sowie dem HTC mit einer alten Version geteste habe (die noch 4 Ints benutzte, diese "Verbesserung" mit nur 3 Ints habe ich erst später eingebaut). Das Problem besteht also tatsächlich seit 2.0, und führt bei einem "echten" Android Gerät zum Crash der Applikation. Das liegt daran, das er versucht 4 Ints pro Vertice zu laden, obwohl per Definition nur 3 Int pro Vertice da sind. Das resultiert darin das er über den eigentlichen Speicherbereich des Intbuffers für die Farbabgaben hinausliest, was beim Emulator mit Farbfehlern und beim Milestone mit einem Crash bedankt wird.

    Der Fehler tritt bei allen Versionen > 1.6 auf, d.h. 2.0 , 2.0.1 und 2.1!
     
    Zuletzt bearbeitet: 01.02.2010
Die Seite wird geladen...
Ähnliche Themen Forum Datum
[Offen] Android Layout funktioniert nicht Android App Entwicklung 08.09.2017
[ERLEDIGT] LL zur Laufzeit erstellen, Abstand zwischen LL und LL möglich ? Android App Entwicklung 06.09.2017
[OFFEN] App schließt nach Öffnen sofort Android App Entwicklung 04.09.2017
[ERLEDIGT] Um einen Zusatz in einem Programm unter Android zu machen Android App Entwicklung 22.08.2017
[GESCHLOSSEN] Random ListItem ausgeben funktioniert nicht mehr Android App Entwicklung 13.08.2017
[OFFEN] Bild per Intent an ListView übergeben und anzeigen Android App Entwicklung 13.08.2017
[OFFEN] SVN Commit in Android Studio funktioniert nicht mehr Android App Entwicklung 07.08.2017
[ERLEDIGT] Android Studio Erste App-Programmierung Android App Entwicklung 02.08.2017
[ERLEDIGT] Android O Neue Fonts in XML Methode Android App Entwicklung 27.07.2017
[ERLEDIGT] Daten/Code meiner App speichern? Android App Entwicklung 27.07.2017
Du betrachtest das Thema "glColorPointer in Android >1.6" im Forum "Android App Entwicklung",