2015-09-14 5 views
0

Для небольшой 2D-игры для мобильных устройств я планирую, чтобы основной характер текстуры определялся игроком (комбинировать экипировку, цвет, волосы, ..). Сначала я использую несколько текстур (каждый с некоторыми нарядами, волосами, ..), загружаю требуемый и визуализируем персонаж в несколько проходов (например, фронт => волосы назад, тело + ткань, голова, волосы, волосы дополняют, больше волосы), но поскольку это вызывает много раз текстуру, мне не нравится этот подход.OpenGL-ES2.0 Срок службы содержимого FrameBuffer

Вместо этого я думал о том, чтобы делать что-то подобное, но при этом создавая полную текстуру персонажа (одежду, позы, ..) в фреймбуфер и использую его как текстуру (больше работы, чем выполнение только текущей позы, но только один раз). Что я не знаю, какова продолжительность жизни содержимого фреймбуфера? Сохраняется ли его содержимое до тех пор, пока контекст не будет удален, он будет очищен в каждой ничьей, ..?

Благодаря

ответ

0

Какой контент буфер кадра имеют, что могут быть удалены? Это буфер визуализации или текстуры, которые имеют доступный контент и могут быть очищены. Эти два могут быть прикреплены или отсоединены от буфера кадров, который в этом случае больше похож на обертку других буферов.

Таким образом, ни один, буфер визуализации или текстура не очистят его содержимое, если это не указано. Ни один из них не будет удален, если не будет указано так. И если контекст владельца удаляется, все его элементы также исчезают.

Я не совсем верю, что ваше решение подходит, но если я понимаю, что вы пытаетесь сделать, это создать FBO (объект буфера кадра) с прикрепленной текстурой. Используйте буфер кадров для рисования текстуры, а затем сохраните текстуру. Это все хорошо. Вы можете удалить FBO после завершения рисования и использовать текстуру. Вы могли бы снова привязать его к другому FBO позже, если вам нужно было перерисовать его, например.

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

+0

ОК, спасибо, это было то, что я предполагал, но не был уверен, что они работали как основной буфер или как-то зависели от цикла розыгрыша (например, временного буфера или чего-то еще). Идея более или менее то, что вы говорите, нарисовать текстуру в FBO, а затем использовать ее при рисовании вместо исходных текстур, так что эта текстура в FBO должна храниться в течение всей игры и только переделывать, если игрок меняет символы одежды, волосы, ... – gaixas1

+0

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

 Смежные вопросы

  • Нет связанных вопросов^_^