我想讓我的遊戲在使用PlayN的android上順利運行,一切都按預期工作,但我有一個嚴重的低幀率。 我想我可能會這樣做是錯誤的,所以如果有人能給我一些幫助,那將會很棒:D。在android上使用immediateLayer的低幀率(和奇怪的playn日誌消息)
因此,我目前正在創建一個ImmediateLayer並清理它並在每一幀繪製每個對象,使用graphics.getImage(...)加載一次圖像。我在HTC Desire上(以調試模式連接)獲得10 fps左右的圖像,同時繪製大約100張圖像。當我添加objetcs時它變慢。 是什麼讓我覺得我在做一件真正錯誤的事是PlayN將這些消息用垃圾郵件發送(我使用DDMS來檢查日誌)。
剩餘
ý紋理X紋理創建
似乎每秒約20次。
所以基本上我做這樣的事情:
public void draw(Surface s){
for (Drawable d : toDraw) {
surface.drawImage(d.getImage(), d.x, d.y, d.w, d.h); }}
凡平局被稱爲在immediateLayer的渲染器。
謝謝你的時間!
盧卡斯
編輯: 我發現了一個可能的答案閱讀playn郵件列表上線。 https://groups.google.com/forum/?fromgroups#!topic/playn/XJTlBgmfzaQ
尤其是消息
大多數的瓷磚共享相同的圖像,但它的不同部分(atteined由子圖像,這在我的知識不會複製,而是僅創建 引用圖像的子部分?)。不同的子部件會導致紋理更改嗎?
子圖像將共享相同的紋理,但您必須確保 渲染共享相同紋理的所有圖像。如果你 有一堆來自圖像A的子圖像和一堆來自圖像B和 ,你渲染A,B,A,B,A,B,A,B,你會得到與 相同的性能,圖片。您需要渲染A,A,A,A, B,B,B,B
看起來我是在最壞的情況下。
我有許多不同的紋理(比如50),它們都是不同圖像的一部分,並且都是隨機渲染的。我可能會得到一些接近N紋理的開關,其中N是我渲染的對象數量。
我會更新這個,當我得到的東西上班:)。
編輯2:
我現在呈現100客體指向相同的圖像(所以沒有質感掉呢?)。我仍然可以在Android上約10 FPS和調試日誌的每一幀仍然說:
1紋理保持 2紋理創建
我覺得我失去了一些東西重要?幫助:)。