T r
- Forum-Beiträge: 3
06.08.2012, 22:24:11 via Website
06.08.2012 22:24:11 via Website
Hallo zusammen,
ich habe mir gerade heute mein neues S3 gekauft.
Da ich für Android programmiere und gerade an einer Augmented Reality App arbeite, ist mir ein Fehler aufgefallen, der mir neu ist.
Zuvor habe ich (mit dem selben Code) an meinem S1 gearbeitet und diese Fehler nicht gehabt.
Das Problem ist einfach:
Ich habe ein Kamerabild und darüber eine OpenGL-ES Szene. Wenn ich dort transparente Pixel habe, sollten diese eigentlich sich mit dem Hintergrundbild er Kamera mischen.
Hier tritt aber jetzt bei dem S3 auf einmal ein Fehler auf. Die hellsten, transparenten Pixel (also nur die, die auch durchscheinen) werden "solarisiert". So ähnlich wie das negative Multiplizieren in Photoshop. Der Fehler ist übrigens nur auf dem Handy zu sehen. Mache ich einen Screenshot, sieht alles perfekt aus!
Dieser Fehler sollte wohl nicht an dem Fragment-Shader liegen. Immerhin clampe ich hier die Farbwerte (auch wenn das vorher nie nötig war).
Ich hoffe, irgendwer von euch hat dieses Problem schon einmal beobachtet.
Ich danke euch,
Tobias
Nachtrag:
Ich habe mal ein wenig noch probiert. Wenn ich im BlendModus:
GLES20.glBlendFunc(GLES20.GL_SRC_ALPHA_SATURATE, GLES20.GL_ONE);
wähle, werden die Pixel nicht mehr "übersättigt". Damit gehts soweit. Aber trotzdem muss es doch eine möglichkeit geben, das auch ohne quickfix-Dirty-Lösungen hinzubekommen.
ich habe mir gerade heute mein neues S3 gekauft.
Da ich für Android programmiere und gerade an einer Augmented Reality App arbeite, ist mir ein Fehler aufgefallen, der mir neu ist.
Zuvor habe ich (mit dem selben Code) an meinem S1 gearbeitet und diese Fehler nicht gehabt.
Das Problem ist einfach:
Ich habe ein Kamerabild und darüber eine OpenGL-ES Szene. Wenn ich dort transparente Pixel habe, sollten diese eigentlich sich mit dem Hintergrundbild er Kamera mischen.
Hier tritt aber jetzt bei dem S3 auf einmal ein Fehler auf. Die hellsten, transparenten Pixel (also nur die, die auch durchscheinen) werden "solarisiert". So ähnlich wie das negative Multiplizieren in Photoshop. Der Fehler ist übrigens nur auf dem Handy zu sehen. Mache ich einen Screenshot, sieht alles perfekt aus!
Dieser Fehler sollte wohl nicht an dem Fragment-Shader liegen. Immerhin clampe ich hier die Farbwerte (auch wenn das vorher nie nötig war).
1gl_FragColor = vec4(clamp(textureColor.rgb * lightWeighting.xyz, 0.0, 1.0), 0.5);
Hat diesen Effekt irgendwer schon mal beobachtet? Zumal die GPU ja die selbe wie im S2 ist und da klappt es. Sind das ggf. irgendwelche der neuen Settings, die ich übersehen habe? Sowas wie den AutoTone (der ist es wohl nicht).Ich hoffe, irgendwer von euch hat dieses Problem schon einmal beobachtet.
Ich danke euch,
Tobias
Nachtrag:
Ich habe mal ein wenig noch probiert. Wenn ich im BlendModus:
GLES20.glBlendFunc(GLES20.GL_SRC_ALPHA_SATURATE, GLES20.GL_ONE);
wähle, werden die Pixel nicht mehr "übersättigt". Damit gehts soweit. Aber trotzdem muss es doch eine möglichkeit geben, das auch ohne quickfix-Dirty-Lösungen hinzubekommen.
— geändert am 06.08.2012, 22:55:35
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.