OpenGL инвертировать кадровый буфер пикселей - PullRequest
5 голосов
/ 17 апреля 2010

Мне было интересно, был ли лучший способ инвертировать цветные пиксели в буфере кадров. Я знаю, что это возможно сделать с glReadPixels() и glDrawPixels(), но прирост производительности этих вызовов довольно велик.

По сути, я пытаюсь сделать перекрестное перевернутое цветное перекрестие, которое всегда видно независимо от того, что за этим стоит. Например, у меня будет произвольная битовая карта или текстура альфа-маски, она будет отображаться без проверки глубины после прорисовки сцены, и все пиксели буфера кадра под замаскированными (полными альфа) пикселями текстуры будут инвертированы.

Я пытался сделать это с текстурой, но я получаю некоторые странные результаты, а также все параметры смешивания, которые я все еще нахожу запутанными.

Ответы [ 2 ]

8 голосов
/ 17 апреля 2010

Дайте что-то вроде это попробовать:

glEnable(GL_COLOR_LOGIC_OP);
glLogicOp(GL_XOR);
// render geometry
glDisable(GL_COLOR_LOGIC_OP);
2 голосов
/ 17 апреля 2010

как насчет:

glEnable (GL_BLEND); 
glBlend (GL_ONE_MINUS_DST_COLOR, GL_ZERO);
...