2014-07-14 2 views
1

Je le fragment shader simple:sortie asymétrique et inexactes du GPU Mali-400MP

precision highp float; 
main() 
{ 
gl_FragColor = vec4(0.15, 0.15, 0.15, 0.15); 
} 

je rendu à la texture en utilisant l'objet frame buffer. Lors de la lecture de retour des valeurs de la mémoire tampon de trame, je reçois le texte suivant:

38, 38, 38, 38, 39, 39, 39, 39,38, 38, 38, 38, 39, etc.

0,15 * 255 = 38.25 donc je m'attends à obtenir 38 uniformément pour tous les pixels, ce que je reçois sur mon GPU de bureau (Intel 4000) et sur Tegra 3. Je serai heureux si quelqu'un peut faire la lumière sur ce problème. Il est essentiel pour quiconque de faire GPGPU pour les appareils mobiles que le Mali-400MP est utilisé dans Samsung Galaxi s2, s3 et s3 mini.

Répondre

2

Il semble que votre sortie soit tramée, car l'erreur restante d'un pixel est reportée à la suivante où elle est arrondie. Rappelez-vous que GL_DITHER est activé par défaut dans OpenGL, essayez de faire un glDisable (GL_DITHER).

+0

Bon appel! Je me balade juste comment ce motif n'a pas été vu sur différentes plateformes (mon GPU de bureau, et Tegra 3 ...) –