2011-12-15 69 views
1

我一直在使用AndEngine一段時間,並設法獲得大部分工作,但我在處理最新的bug時遇到了一些困難。長話短說,我已經到了想要在單個BitmapTextureAtlas上合併一些圖像的點。AndEngine - 多個紋理在一個紋理上重疊Atlas

這些圖像不能全部組合在一起,因爲某些特定的圖像不會始終顯示,而且每個圖像也會根據用戶輸入經過其各自的後期處理。然而,在完成所有這些輸入之後,它將使事情變得更容易,並且稍微提高性能,將這些圖像合併到一個紋理上,並且只有一個精靈顯示所有這些圖像(大約六十個圖層)。

我一直在試圖做類似下面的東西要做到這一點:

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操作系統將一組圖像合成在一起。已經有Stack Overflow問題回答了這個問題,用戶提供了代碼來合併一系列位圖。

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

然後,你將需要TextureSource在Andengine從位圖,而不是資源或資產創建一個區域。

AndEngine Texture from Drawable

最後,你可以說TextureRegion然後傳遞給你的雪碧。

(步驟3:利潤)

+0

我從來沒有想過要嘗試使用AndEngine此之外的命令,但我看到它如何能工作。我正在處理一個神祕的NullPointerException,試圖在此刻進行此操作,但我想知道在以這種方式合併它們之前,對這些位圖有多少控制權?當我按照我之前打算的方式做事情時,我或多或少地知道如何處理所有的處理工作,但對於這些位圖,是否需要使用某種形式的逐像素計算來完成? – Cyanide 2011-12-16 20:38:04