Для небольшой 2D-игры для мобильных устройств я планирую, чтобы основной характер текстуры определялся игроком (комбинировать экипировку, цвет, волосы, ..). Сначала я использую несколько текстур (каждый с некоторыми нарядами, волосами, ..), загружаю требуемый и визуализируем персонаж в несколько проходов (например, фронт => волосы назад, тело + ткань, голова, волосы, волосы дополняют, больше волосы), но поскольку это вызывает много раз текстуру, мне не нравится этот подход.OpenGL-ES2.0 Срок службы содержимого FrameBuffer
Вместо этого я думал о том, чтобы делать что-то подобное, но при этом создавая полную текстуру персонажа (одежду, позы, ..) в фреймбуфер и использую его как текстуру (больше работы, чем выполнение только текущей позы, но только один раз). Что я не знаю, какова продолжительность жизни содержимого фреймбуфера? Сохраняется ли его содержимое до тех пор, пока контекст не будет удален, он будет очищен в каждой ничьей, ..?
Благодаря
ОК, спасибо, это было то, что я предполагал, но не был уверен, что они работали как основной буфер или как-то зависели от цикла розыгрыша (например, временного буфера или чего-то еще). Идея более или менее то, что вы говорите, нарисовать текстуру в FBO, а затем использовать ее при рисовании вместо исходных текстур, так что эта текстура в FBO должна храниться в течение всей игры и только переделывать, если игрок меняет символы одежды, волосы, ... – gaixas1
Тогда да, FBO очень мощный и будет сохраняться до явного удаления. То же самое касается связанной текстуры. Также распространенная практика заключается в том, чтобы нарисовать ее на каком-то фоновом потоке, если вы создаете ее во время игры (возможно, не в вашем случае). Но если вам когда-нибудь понадобится это сделать, просто проверьте, как создать общий контекст, который затем можно использовать в отдельном потоке, чтобы выполнить вашу загрузку, и вы можете поделиться ресурсами (текстурой) обратно в свой основной контекст, поток ... –