Je suis un démarreur de la programmation Iphone opengl ES. J'ai deux textures, la première est l'arrière-plan et occupe tout l'écran. J'imprime la deuxième image sur la première image mais le fond blanc de la deuxième image couvre une partie de l'arrière-plan. Je veux que l'arrière-plan soit visible là où l'image de premier plan n'a pas de couleur (ou de blanc). Je n'arrive pas à comprendre comment utiliser correctement glBlendFunc.OpenGL: superpose une texture sur une autre et supprime le fond blanc
avant d'imprimer la seconde image J'utilise fusion avec ce qui suit:
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glColor4f (1,0f, 1,0f, 1,0f, 1,0f);
Images à: http://www.flickr.com/x/t/0097002/photos/vjv2010/
assurez-vous d'appeler glEnable (GL_BLEND) avant de rendre quoi que ce soit. En outre, sauf si votre texture est * semi * transparente, vous pouvez utiliser le test alpha pour découper les pixels au lieu du mélange alpha. Le test alpha sera plus rapide. – SigTerm
@SigTerm: J'y pensais aussi, mais Apple documente que cela peut nuire à la performance. Peut-être que le mélange est plus rapide sur iPhone? – Stringer
@Stringer Bell: Oui, le mélange est assez lent (vous pouvez même mettre PC à genoux avec un mélange alpha excessif), mais pour utiliser alpha, vous devrez soit activer alphaBlend (glEnable (GL_BLEND)), soit activer alphaTest (glEnable (GL_ALPHA_TEST)). Sinon, le canal alpha n'aura aucun effet. Si vous n'avez pas besoin de surfaces semi-transparentes, le test alpha est tout ce dont vous aurez besoin. Il y a un moyen de simuler la semi-transparence avec alphatest + dithering ou glPolygonStripple, mais un petit écran (iPhone) il est forcément très moche. – SigTerm