2010-12-13 6 views
0

J'ai une texture semi-transparente avec une opacité variable à différents endroits. J'ai le bitmap de texture principal, et un bitmap de masque. Lorsque le programme s'exécute, les valeurs alpha du bitmap du masque sont chargées dans les valeurs alpha du bitmap de texture principal. Les zones que je veux être transparentes ont une valeur de 255 alpha, et les zones que je veux rester totalement opaques ont des valeurs de 0 alpha. Il existe également des valeurs intermédiaires pour la transparence moyenne.glBlendFunc() avec des textures RGBA 32 bits

J'ai essayé toutes sortes de paramètres glBlendFunc(), mais il est complètement invisible ou agit sur les couleurs RVB de la texture source.

Répondre

4

Typiquement en OpenGL, 0 signifie transparent et 255 opaque, ce qui est le contraire de ce que vous avez.

donc quelque chose comme:

glBlendFunc(GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA); 

devrait fonctionner.

+0

Je viens de l'essayer. Il est noir partout où la texture est supposée être transparente. – oldSkool

+0

@ old-school rules: es-tu sûr que quelque chose d'autre que le noir était dans le frame buffer quand tu as fait ce tirage? Quelle est votre couleur claire? Si noir, essayez d'utiliser autre chose, pour voir si c'est un problème d'ordre de dessin. – Bahbar

+0

Je revérifierai tout à nouveau ... J'ai l'arrière-plan passant au rouge pour voir comment fonctionne la transparence, mais il est sérieusement soulevé en ce moment. – oldSkool

0

J'ai eu le même problème. J'utilisais SDL_Image pour charger mes images. J'ai réalisé quand je convertissais l'image que j'utilisais SDL_DisplayFormat au lieu de SDL_DisplayFormatAlpha. Cela a résolu mon problème.

Questions connexes