2010-10-23 4 views

Répondre

0

Non, toutes les couleurs sont séparées. Vous avez besoin d'un pixel shader pour cela

0

Hm, peut-être si elle a été rendue à un F + de luminoscity + alpha, puis que dessiné? Eh bien, que ce soit ou copié sur une telle texture, alors la texture de retour sur le FBO - qui dit, FBO serait une meilleure solution (si disponible) dans la plupart des cas.

Veuillez noter que je n'ai pas testé cela.

+0

Est-il possible de créer un tel FBO? –

+0

Peut-être que vous pouvez rendre à la luminance + texture alpha –

+0

Oui, c'est ce que je voulais dire - FBO est fondamentalement juste que, rendre à la texture. Si cela échoue, essayez une copie normale vers la texture, puis copiez-la dans le framebuffer. Je devrais essayer cela moi-même une fois que je m'y rends ... Oh, et alpha, peut-être ou ne pas être nécessaire, selon vos besoins. –

0

En fait, par souci de complétude, je mentionnerai qu'il y a une solution possible si l'extension GL_ARB_imaging est supportée: le GL_COLOR_MATRIX, qui transforme les valeurs RGBA entrantes. Vous pouvez définir la matrice 3x3 supérieure à tous 1/3.0 comme ceci:

GLFloat graymat[] = {.33,.33,.33,0,.33,.33,.33,0,.33,.33,.33,0,0,0,0,1}; 
glMatrixMode(GL_COLOR_MATRIX) 
glLoadIdentity() 
glMultMatrixf(graymat) 

Cependant grand cela puisse paraître, cependant, tous les pilotes prennent en charge ce dans le matériel, ce qui signifie qu'en fonction de votre mise en œuvre de opengl, votre pilote pourrait : A) ignorer totalement la matrice de couleurs, B) revenir au rendu logiciel, ou C) (si l'extension n'est pas supportée) déclencher une erreur GLError.

Si vous écrivez votre code pour un ensemble limité de plates-formes, et qu'ils prennent en charge cette extension, ce serait la manière la plus simple. Sinon, vous aurez besoin d'une autre approche.

Questions connexes