Допустим, у меня есть четыре слоя контента: A, B, C и D; каждый представляет один тип визуального контента.
Каждый слой выполняет несколько последовательных вызовов рендеринга (отсутствуют чередующиеся вызовы рендеринга из разных слоев).
Кроме того, слои B и D необходимо преобразовать в текстуры, чтобы применить визуальные эффекты. Чтобы уменьшить объем памяти, я использую только один FBO только с одной текстурой.
Итак, на данный момент я делаю:
- Рендеринг содержимого;
- Bind FBO > Render B content > Unbind FBO > Render texture (B content);
- Рендер С;
- Bind FBO > Render D content > Unbind FBO > Render texture (D content).
Моя основная проблема с этим подходом заключается в том, что каждый раз, когда я привязываю/отвязываю FBO, буфер кадра по умолчанию сохраняется/восстанавливается в/из памяти.
Я не могу сначала просто нарисовать слои B и D в FBO, так как я не могу изменить порядок рендеринга слоев.
Есть ли лучший способ сделать это и избежать множества сохранений/восстановлений основного фреймбуфера? Имейте в виду, что это пример, а реальный случай более сложный (больше слоев).