2016-08-29 1 views
0

J'écris l'application gles2, qui fonctionne bien sur tous les appareils sauf Galaxy Notes. Couleurs semble ne pas être RGBA, mais une sorte de ABGR (plus comme ABGA) blue buttons drawn yellow, black titles are redTablette Android avec peu de mauvais format couleur endian

boutons bleu dessiné jaune, titres noirs sont rouges (désolé pour la photo affichage, mais capture d'écran montrent bonnes couleurs, ce qui est étrange) J'utilise un tampon hors écran pour dessiner tout ce qui s'y trouve, puis dessiner l'image de ce tampon à l'écran.

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, m_width, m_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0) 

est ce que j'utilise texImage2d pour les textures.

J'ai écrit une application de test et ce qui montre capture d'écran: enter image description here

ce qui est à quoi il ressemble dans la vie réelle enter image description here

+0

Et que demandez-vous exactement? – Sergio

Répondre

1

Vérifier this answer.

En particulier, il semble que vous perdiez endianess si vous utilisez GL_UNSIGNED_BYTE. Si ce que vous faites est stocker 4 octets dans un int, alors vous devriez utiliser GL_UNSIGNED_INT_8_8_8_8 à la place. Ensuite, il saura dans quel ordre les attend pour cette plate-forme.

+0

Merci, mais gles, malheureusement, n'a pas UNSIGNED_INT_8_8_8. Mais il a GL_UNSIGNED_SHORT_4_4_4_4. Devrais-je l'utiliser à la place? (Et, ofc, changer mes données à court emballé) – FertoVordalastr

+0

Il vous manque un _8 dans 'UNSIGNED_INT_8_8_8', il devrait y avoir 4 d'entre eux. Peut-être que cela explique pourquoi vous ne le trouviez pas? –

+0

non non ... en a oublié un, alors qu'il écrivait ... il y a 8_8_8_ dans OpenGL, mais selon khronos manulas "Spécifie le type de données de texel Les valeurs symboliques suivantes sont acceptées: GL_UNSIGNED_BYTE, GL_UNSIGNED_SHORT_5_6_5, GL_UNSIGNED_SHORT_4_4_4_4, et GL_UNSIGNED_SHORT_5_5_5_1. " Aussi, il semble qu'il y ait une possibilité de définir GL_BGRA comme format dans gles 3.0, mais j'utilise 2.0. Donc, ma supposition est d'utiliser court au lieu de int et essayez d'utiliser 4_4_4_4. J'espère que ça va marcher. – FertoVordalastr