Как нанести полупрозрачный слой на раму? - PullRequest
1 голос
/ 25 сентября 2011

Обычно при очистке кадра для нового розыгрыша используется glClear() или glClearColor().Но каждый из них полностью удаляет предыдущий кадр.

Я бы хотел, чтобы кадры постепенно исчезали, т. Е. С каждым новым кадром накладывали полупрозрачное наложение на то, что уже есть на холсте.Я пытался использовать альфа-параметр glClearColor(), но, похоже, он не дал никакого эффекта.

Что мне нужно сделать, чтобы достичь эффекта постепенного исчезновения?

1 Ответ

0 голосов
/ 25 сентября 2011

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

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

Если вы используете OpenGL ES 1.1 , вместо этого вы захотите использовать glCopyTexImage2D (или glCopyTexSubImage2D) для копирования цветового буфера в текстуру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...