Cocos2D: как использовать изображение маски

#cocos2d-iphone #alpha #masking #pvrtc

#cocos2d-iphone #альфа #маскирование #pvrtc

Вопрос:

Я использую cocos2d для игры, которая использует листы спрайтов для анимации моих персонажей. Я создал эти изображения с помощью TexturePacker. Теперь я хочу использовать формат PVRTC 4 для уменьшения потребления памяти по некоторым причинам. Но, как предлагает руководство по использованию сжатия текстур PVRTC, мне нужно добавить дополнительную границу в 4 пикселя для каждого символа, чтобы получить надлежащие результаты. Даже если я добавлю границу, мне придется замаскировать это изображение альфа-изображением, чтобы удалить границу во время выполнения. Я использую Texture Packer для создания листа спрайтов в формате PVRTC4 и создал соответствующее ему изображение альфа-маскировки. Я готов с этими двумя изображениями в руках, которые имеют одинаковую ширину и высоту.

Теперь мой вопрос в том, как я могу замаскировать свою текстуру PVRTC альфа-изображением в Cocos2D?

Будет полезнее, если предоставленное решение будет работать с пакетными узлами!

Заранее спасибо за любые решения!

Комментарии:

1. Теперь я узнал, что у них есть формат изображения с именем PVR-A8, который можно использовать для этих королевских нужд. Я преобразовал свое альфа-изображение в этот формат, а также смог загрузить это изображение в Cocos2D. Но все же они действуют как два отдельных изображения и не маскируются друг с другом для создания одной текстуры. 🙁

Ответ №1:

Почему бы вам просто не сделать область границ / отступов полностью прозрачной?

Комментарии:

1. Граница повреждена из-за используемой ими техники сжатия. Вот почему они рекомендуют добавлять рамку соответствующего цвета, чтобы дополнительная граница была повреждена, а текстура осталась нетронутой. Это объясняется в последней части руководства по использованию (ссылка приведена выше). В результате мне нужно замаскировать его другим изображением! 🙁

2. Поскольку вы используете 4bpp, компрессор должен иметь возможность выбирать настройку полной прозрачности для пикселей в вашей прозрачной рамке.

3. вздох.. истек срок редактирования. Я забыл добавить: Имейте в виду, PVRTC (-I) принимает цвет без предварительного умножения для параметра «полностью прозрачный» пиксель, поэтому его эффективность может зависеть от того, какой цвет вы использовали для полностью прозрачных пикселей в вашей исходной текстуре. Из любопытства, есть ли у вас области / пиксели, где текстура частично прозрачна?

4. Да .. границы анимации персонажей частично прозрачны. Это сделано только для того, чтобы устранить сбои и сделать изображение гладким и сглаженным!

Ответ №2:

У меня была такая же проблема, и после прочтения страницы Рэя вендерлиха о маскировании я создал небольшой подкласс ccsprite, который позволяет маскировать двумя изображениями.

CCMaskedSprite