2009-12-23 6 views
0

Ce peut-être une question de noob, cependant, je n'ai pas été en mesure de trouver une réponse appropriées:OpenGL ES alpha blending multi-texture question

Je dispose d'un objet dans OpenGL ES (en fait, une exportation cartographié UV de Blender) et j'aimerai lui appliquer deux textures. Pour être précis, j'ai une sphère semblable à la terre et j'aimerais y ajouter deux textures (un côté jour et un côté nuit). J'avais pensé à travers le mappage alpha, il devrait être possible de fondre par programme une texture et d'afficher l'autre pendant l'exécution de sorte que mon globe devienne une simulation réaliste de la terre. J'ai les mathématiques derrière cela, c'est-à-dire créer l'alpha-map pour chaque face de l'objet n'est pas le problème.

Avez-vous des conseils ou des astuces sur comment cela peut-il être réalisé?

Merci

Répondre

5

L'effet que vous cherchez peut être réalisé avec texture combiners dans OpenGL ES 1.1. Par défaut, chaque unité de texture que vous activez est configurée pour multiplier la sortie de l'étape précédente par la couleur de la texture actuelle. Dans le cas de la première unité de texture, l'étape précédente est simplement la couleur du vertex. En modifiant l'état du combinateur de texture, vous pouvez ajouter, soustraire, interpoler ou prendre des produits scalaires de vos échantillons de texture à la place.

Les deuxième et troisième exemples sur la page liée, qui interpolent entre deux textures, devraient être assez similaires à ce que vous essayez de faire. Si vous comparez le code source pour les deux exemples, vous devriez voir qu'ils sont presque identiques, à l'exception de la configuration pour GL_SRC2_RGB/GL_SRC2_ALPHA et GL_OPERAND2_RGB/GL_OPERAND2_ALPHA. Ce que vous aurez besoin de spécifier ici dépend de l'endroit où/comment vous générez le facteur de mélange pour les deux textures. Vous pouvez vous approvisionner à partir de la couleur vertex en spécifiant GL_PRIMARY_COLOR pour GL_SRC2_*, ce qui n'est pas montré dans les exemples.

(Note:. La page I lié à l'aide GLSL au lieu recommande de combineurs texture Ceci est malheureusement pas une option si votre logiciel doit fonctionner sur du matériel ancien qui ne prend pas en charge OpenGL ES 2.0.)