J'essaye de rendre une texture avec alpha à un frame buffer avec alpha. J'ai besoin que la transparence de la texture soit contrôlée par une combinaison de sa propre alpha, et de l'alpha déjà rendue dans le buffer d'image.Fusion OpenGL avec source et destination alpha
-à-dire:
transparence normal:
(src_colour * src_alpha) + (dst_colour * 1-src_alpha)
transparence requise:
(src_colour * src_alpha * dst_alphe) + (dst_colour * 1- (src_alpha * dst_alpha))
Quelqu'un peut-il comprendre comment faire?
Je travaille là-dessus pendant 9 heures maintenant :-)
J'utilise OpenGL 1.0 avec GL11ExtensionPack sur Android, donc j'avoir accès à glBlendFunc et glBlendFuncSeparate. Je préférerais ne pas aller sur la route GLES20 avec des shaders car cela nécessiterait beaucoup de code à réécrire.
Merci, Andrew
Le mélange GL standard ne prend pas en charge cette fonctionnalité. Les shaders ne le font pas non plus (en un seul passage). Qu'essayez-vous d'accomplir? Il pourrait y avoir d'autres moyens. – Bahbar
Le jeu est un shoot-em-up à défilement vertical, vu d'un point de vue top-down. Les paysages, les vaisseaux spatiaux, les missiles, etc. sont rendus au premier plan, avec un ciel et un champ de vision à l'arrière-plan. Ensuite, il y a des détails tels que les bâtiments ajoutés au paysage, qui projettent des ombres. (Les ombres sont cuites dans les textures.) J'ai besoin des ombres pour affecter seulement ce qui est au premier plan, pas le fond. Je l'ai fait en utilisant un tampon stencil, mais certains sprites du jeu ont une transparence alpha, donc la solution binaire on/off du tampon stencil était insuffisante. Les ombres doivent se mélanger. –