2013-05-28 3 views
0

Я использую TextureAtlas для загрузки TextureRegions, и мне нужно создать битмаску для каждой загруженной текстуры. Я хотел бы расширить код gdx для создания этой битовой маски. Поэтому мне нужно найти часть кода до того, как текстура будет загружена на GPU, но будет доступна из CPU. Кто-нибудь получил намек на меня?Создание битовой маски текстуры

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

ответ

2

TextureAtlas.load называет Texture file constructor, который использует FileTextureData. В конце концов prepare будет вызван на объект FileTextureData. Это загружает новый файл Pixmap с содержимым файла. Pixmap будет подкреплен Gdx2DPixmap, и его (собственный) метод load фактически прочитает байты из файла.

Pixmap - видимый объект, содержащий байты, изменяемые процессором.

Вместо того, чтобы пытаться изменить систему текстуры загрузки Libgdx, чтобы добавить ваш Bitmask текстуры, вы можете попробовать этот подход: https://code.google.com/p/libgdx/issues/detail?id=515 (генерирует Pixmap из TextureRegion). Это немного менее эффективно во время выполнения, но код быстрый и простой. Кроме того, вам не нужно создавать маску растрового изображения для всей страницы атласа, но вы можете делать маски для отдельных текстур.

+0

Спасибо! Я буду использовать этот подход для создания битмаксов и сохранения их в файле. Причина, по которой я не хочу использовать Pixmap напрямую, заключается в том, что я хочу уменьшить использование памяти. Мне не нужны значения цвета, а просто логические. И я хотел бы уменьшить разрешение битмаски, потому что это не должно быть очень точным. –

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