OpenGL ES 2.0: прикрепить меньшую текстуру к фреймбуферу

Я реализовал эффект постобработки цветения в своей игре для Android, используя рендеринг в текстуру и соответствующие шейдеры. Это работает, но падение производительности неприемлемо. Поэтому я подумал, что могу отрендерить сцену в текстуру меньшего размера, а затем растянуть текстуру на весь экран. Проблема в том, что когда я прикрепляю текстуру, размер которой меньше области просмотра, к внеэкранному фреймбуферу, сцена обрезается. Изображение ниже иллюстрирует проблему:

иллюстрация

Есть ли способ каким-то образом «сопоставить» прикрепленную текстуру с фреймбуфером, чтобы на нее отображалось все окно просмотра? Я мог бы, вероятно, изменить матрицу проекции для достижения цели, но это усложнило бы мой код, и я бы предпочел этого избежать.


person Matis    schedule 23.07.2013    source источник


Ответы (1)


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

Ваше предложение о масштабировании проекционной матрицы также должно сработать.

person ClayMontgomery    schedule 23.07.2013