Если вы просто хотите нарисовать чистый цвет поверх последнего кадра, не избавляясь от него полностью, нарисуйте четырехугольник размером экрана над окном просмотра тем же цветом, что вы бы передали glClearColor
, и пропустите вызовglClear(GL_COLOR_BUFFER_BIT)
(вероятно, вы все равно должны очистить буферы глубины / трафарета, если используете один из них).Итак, если вы используете буфер глубины, сначала очистите буфер глубины, если это необходимо, отключите тестирование глубины (это важно, главным образом, чтобы убедиться, что ваш квад не обновляет буфер глубины), нарисуйте квад квадратичного размера изатем снова включите тестирование глубины.Нарисуйте что-нибудь еще потом, если вам нужно.
Что следует, предполагается, что вы используете OpenGL ES 2.0
Если вам нужно смешать два разных кадра вместе, и вы реально никогда не увидитеясный цвет, вы, вероятно, должны визуализировать последний кадр в текстуру и нарисовать его поверх нового кадра.Для этого вы можете либо прочитать текущий кадровый буфер и скопировать его в текстуру, либо создать новый кадровый буфер и прикрепить к нему текстуру (см. glFramebufferTexture2D
).После того, как фреймбуфер настроен, вы можете с радостью использовать это.После того, как вы ввели рамку в текстуру, вы можете пойти дальше, связать текстуру и нарисовать квадратор по экрану (не забывая, конечно, переключить буфер кадров обратно на обычный буфер кадров).
Если вы используете OpenGL ES 1.1 , вместо этого вы захотите использовать glCopyTexImage2D
(или glCopyTexSubImage2D
) для копирования цветового буфера в текстуру.