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