8
votes

La sortie GLSL peut-elle à deux / plusieurs textures en même temps?

Je peux obtenir un shader à lire dans deux textures mais pour la sortie, il semble qu'il n'y a que GL_FRAGCOLOR. Y a-t-il un moyen de rendre à deux textures différentes d'un shader? J'utilise le traitement et la bibliothèque glagraphie BTW.


0 commentaires

3 Réponses :


0
votes

Je ne sais pas si c'est exactement ce que vous essayez de faire, mais avec objets tampon de cadre (FBOS) Vous pouvez dessiner simultanément sur plusieurs tampons de couleur.

Dans le shader, cependant, il restera tout simplement comme si vous écrivez un fragment. C'est-à-dire que le shader n'est pas au courant du nombre de pièces jointes de la FBO.


0 commentaires

5
votes

Oui, vous pouvez écrire sur GL_FRAGDATA, qui est une gamme de sorties (la taille dépend de votre implémentation). Ou avec des versions plus récentes de GL, GL_FRAGCOLOR et GL_FRAGDATA sont obsolètes et vous déclarez vos propres variables pour le shader de fragment à écrire. Déclarez plusieurs tels out vars pour plusieurs tampons de sortie.


3 commentaires

Merci. J'aimerais voir un exemple de code de la manière dont cela serait fait dans GLSL et peut-être un pseudo code pour l'application hôte si c'est le bon terme.


En fait, je me suis inscrit moi-même. Je devais juste dire "Variant Vec4 Color1, Color2", etc. En haut et qui semblait se lier automatiquement à la gamme de textures que j'étais déjà en train de passer. Puis fixez ces variables à quelque chose quelque part dans le vide principal ().


Est-ce pris en charge dans OpenGles 2.0?



1
votes

oui. Nous pouvons. Mais remarquez que GL_FRAGDATA n'est plus pris en charge dans GLSL 4.0. Spécifiez l'emplacement comme suit:

glBindFragDataLocation(programHandle, 0, "FragColor");


1 commentaires

Je pense que les emplacements explicites sont préférés sur GLBindFRAGDatalocation