Existe-t-il un moyen de définir les paramètres de fusion pour que toute la scène soit rendue en niveaux de gris? (Sans utiliser GLSL, seules les fonctions de pipeline)Incrustation en niveaux de gris avec OpenGL?
Merci
Existe-t-il un moyen de définir les paramètres de fusion pour que toute la scène soit rendue en niveaux de gris? (Sans utiliser GLSL, seules les fonctions de pipeline)Incrustation en niveaux de gris avec OpenGL?
Merci
Non, toutes les couleurs sont séparées. Vous avez besoin d'un pixel shader pour cela
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.
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.
Est-il possible de créer un tel FBO? –
Peut-être que vous pouvez rendre à la luminance + texture alpha –
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. –