OpenGL инвертировать кадровый буфер пикселей

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

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

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

2 ответа

Решение

Попробуйте что-то вроде этого:

glEnable(GL_COLOR_LOGIC_OP);
glLogicOp(GL_XOR);
// render geometry
glDisable(GL_COLOR_LOGIC_OP);

Как насчет:

glEnable (GL_BLEND); 
glBlend (GL_ONE_MINUS_DST_COLOR, GL_ZERO);
Другие вопросы по тегам