En regardant les documents, je devrais être en mesure d'utiliser BGRA pour le format interne d'une texture. Je fournis la texture avec des données BGRA (en utilisant GL_RGBA8_OES pour glRenderbufferStorage car il semble que BGRA n'est pas autorisé). Cependant, ce qui suit ne fonctionne pas:BGRA sur iPhone glTexImage2D et glReadPixels
glTexImage2D(GL_TEXTURE_2D, 0, **GL_BGRA**, w, h, 0, GL_BGRA, GL_UNSIGNED_BYTE, buffer);
...
glReadPixels(0, 0, w,h, GL_BGRA, GL_UNSIGNED_BYTE,buffer, 0);
Bien que cela me donne un cadre noir:
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, w, h, 0, GL_BGRA, GL_UNSIGNED_BYTE, buffer);
...
glReadPixels(0, 0, w,h, **GL_BGRA**, GL_UNSIGNED_BYTE,buffer, 0);
Et cela fonctionne, mais les bleus/rouges sont inversées (je fournir des données BGRA à la texture):
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,w, h, 0, GL_BGRA, GL_UNSIGNED_BYTE, buffer);
...
glReadPixels(0, 0, w,h, **GL_RGBA**, GL_UNSIGNED_BYTE,buffer, 0);
... pourquoi ne puis-je pas simplement utiliser BGRA? Je remarque que glRenderbufferStorage ne semble pas accepter les formats BGRA ... Je suis vraiment confus. BGRA est le seul format approprié pour mes données, car il provient de l'appareil photo de l'iPhone.
Merci. Et c'est ce que j'ai fait. Le problème était que lorsque l'écran était bloqué, il était inversé. J'ai juste fait le swizzling dans le shader final pour l'affichage et cela a fonctionné. Je voulais juste éviter les passages supplémentaires, car mon taux de trame souffre déjà :) – akaru