J'essaye de rendre un modèle en OpenGL. Je suis le jour 4 de C++ et OpenGL (Oui, j'ai appris cela rapidement) et je suis un peu arrêté avec les textures.Comment rendre mon objet transparent mais montrer la texture?
J'ai un peu de mal à faire fonctionner mon alpha de texture. Dans cette image, j'ai ce personnage de Spiral Knights. Comme vous pouvez le voir sur le dessus de sa tête, il y a ces parties blanches.
J'ai Blending activé et ma fonction de mélange mis à glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
Ce que je suppose ici, et c'est la raison pour laquelle je pose cette question, est que la transparence de la texture est travail, mais le des triangles derrière la texture sont encore visibles. Comment puis-je rendre ces triangles invisibles tout en montrant ma texture?
Merci.
Il n'y a pas de "triangles derrière les textures". GL ne dessine pas de textures, il dessine des primitives. On ne sait pas exactement ce qui se passe exactement (ce que les valeurs d'akoha ont pour votre texture, comment vous combinez la texture à la couleur finale du fragment, et ainsi de suite). Vous devez également être conscient que le mélange nécessitera de dessiner les primitives dans le bon ordre. Dans ce cas particulier, vous pourriez même être en mesure de contourner ce problème en n'utilisant pas de fusion, mais en éliminant simplement en fonction de l'alpha. – derhass
Vous dites _ "juste en rejetant basé sur alpha." _ - J'ai fait quelques recherches sur le rejet et tel, mais d'après ce que j'ai lu, il peut être un peu lent. Y a-t-il une autre méthode? J'ai fait un peu de googling pour des méthodes alternatives et j'ai activé le test alpha, puis j'ai défini la fonction alpha sur 'glAlphaFunc (GL_GREATER, 0.0);' mais cela ne semble pas fonctionner. –
le test alpha est déprécié. approche moderne est jeter dans le shader. ce que «lent» signifie vraiment dans ce contexte est difficile à dire à l'avance. vous pourriez revenir à un test de profondeur tardive, et vous obtenez un certain degré de flux de contrôle non uniforme. Cependant, vous gagnez l'indépendance de commande en retour. – derhass