Посмотрев на эту проблему немного больше, я вижу несколько решений
Решение A - сохранить переход от свечения = 0 до свечения = 1 как 60 кадров в памятизатем загружайте соответствующий кадр в текстуру GL каждый раз, когда это требуется.
это имеет очевидное преимущество в том, что графический дизайнер может создать всю последовательность, и я могу загрузить ее в виде набора файлов PNG.
еще одним преимуществом является то, что эти кадры не нужно воспроизводить последовательно ... соответствующий кадр можно выбирать «на лету»
, однако, он имеет потенциальный недостаток - многодля отправки данных RAM-> VRAM
это можно оптимизировать с помощью glTexSubImage2D;несколько кадров могут быть отправлены одновременно, а затем распакованы изнутри GL ... на самом деле, может быть, вся последовательность.если это так, то имеет смысл использовать сжатие текстур PVRT.
iOS: воспроизведение покадровой анимации в оттенках серого в произвольном цвете
Решение B - загрузить изображения свечения = 0 и свечения = 1 в качестве текстур GL и вручную написать код шейдера, который принимает коэффициент свечения как единообразное и выполняет смешивание
. Это дает преимуществочто он находится близко к проводу и может быть настроен любым способом.И это будет очень эффективно.Это преимущество заключается в том, что это большой дополнительный фрагмент кода для поддержки.
Решение C - установите glBlendMode для выполнения аддитивного смешивания.
, затем нарисуйте изображение свечения = 0,например, установите alpha = 0,2 для каждой вершины.
, затем нарисуйте изображение с изображением свечения = 1, например, установите alpha = 0,8 для каждой вершины.
это дает преимущество в том, что этого можно достичь с помощью более общего кодаструктура - то есть очень общий класс 'Draw Texture Quad / Sprite'.
Недостаток в том, что без какой-либо обертки это немного грязно ... в моей игре у меня есть пара десятков бриллиантов -в любое время может быть 2 или 3, вероятно, светятся.таким образом, при первом проходе я рендерил ВСЕ (просто нужно правильно установить альфу для всего, что светится), а затем во втором проходе я мог бы снова нарисовать светящийся спрайт с соответствующей альфой для всего, что светится.
стоит отметить, что если я буду заниматься решением А, это будет связано с созданием какого-либо объекта проигрывателя фильмов в реальном времени, который может быть очень полезным компонентом кода многократного использования.