2011-12-15 2 views
1

Я уже давно работаю с AndEngine, и мне удалось заставить большинство работать, но у меня есть некоторые трудности с моей последней ошибкой. Короче говоря, я пришел к выводу, что хочу объединить некоторые изображения вместе на одном BitmapTextureAtlas.AndEngine - Несколько текстур, перекрывающихся на одном TextureAtlas

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

Я пытался сделать это, делая что-то похожее на следующее:

this.mBitmapTextureAtlas = new BitmapTextureAtlas(512, 1024, TextureOptions.NEAREST_PREMULTIPLYALPHA); 

    this.mFaceTextureRegion = BitmapTextureAtlasTextureRegionFactory.createFromAsset(mBitmapTextureAtlas, this, "layer1.png",0 ,0); 
    this.mFaceTextureRegion2 = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mBitmapTextureAtlas, this, "layer2.png",0 ,0); 

Это почти работает, проблема заключается в том, что (по крайней мере, от того, как я вижу его) она перезапись каждый пиксель, поэтому появится только добавленный последний уровень. Попытка погрузиться через AndEngine, чтобы понять, что мне нужно сделать, чтобы получить эту работу, немного подавляюще, как любительский разработчик, поэтому я надеялся, что кто-то более опытный, чем я, мог бы дать мне пару советов о том, куда идти для управления этим.

Конечно, я открыт для других предложений по моей проблеме, это решение, с которым я придумал, но я уверен, что есть другие способы!

ответ

1

Вы не сможете сделать это, написав текстуру снова и снова (как вы уже узнали.) Решение займёт немного работы, но это вполне возможно.

Во-первых, вы можете использовать ОС Android для компоновки группы изображений вместе. На этот вопрос уже задан вопрос переполнения стека, в котором пользователь предоставляет код для объединения массива растровых изображений.

android: how to merge an array of bitmap together in one bitmap?

Затем вам нужно будет сделать TextureSource в AndEngine создать область из растрового изображения вместо ресурса или актива.

AndEngine Texture from Drawable

Наконец, вы можете затем передать эту TextureRegion вашему Sprite.

(шаг 3: Profit)

+0

Я никогда не думал, чтобы попытаться использовать команды вне AndEngine для этого, но я вижу, как она могла бы работать. Я имею дело с загадочным NullPointerException, пытающимся получить это в настоящий момент, но мне было интересно, как много контроля будет у меня над этими растровыми изображениями до их слияния таким образом? Когда я делал все так, как планировал ранее, я знал более или менее о том, как выполнять всю мою обработку, но с этими растровыми изображениями это нужно делать с помощью какой-то формы пиксельных вычислений? – Cyanide

+0

Перейдите по ссылке выше «android: как объединить массив растровых изображений в одном растровом?» для просмотра кода. Это не сложно. Самый сложный бит - это понимание того, как правильно использовать объект Canvas. –

+0

Я работаю над этим, и мне нужно заниматься вещами чуть-чуть иначе, чтобы соответствовать моим требованиям, но, похоже, я на правильном пути, чтобы заставить это работать сейчас! Спасибо. – Cyanide

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