2013-06-05 187 views
6

我正在使用AndEngine和OpenGL ES 2.0。我一直在閱讀有關GL_MAX_TEXTURE_SIZE以及我應該如何保留我的材料在1024x1024下。我在TMX擴展中使用tilesets之前和之後開始出錯(如果你不知道AndEngine,那麼它並不重要)。我得到一個使紋理比1024px更寬的tileset。我正在考慮將瓷磚分成兩部分,使它們「安全」。但是我找不到在過去幾年中發佈的任何設備,這些設備的限制都在2048x2048之下。有沒有我可以使用GL_MAX_TEXTURE_SIZE過濾設備的列表或網站?Android設備GL_MAX_TEXTURE_SIZE限制,安全紋理尺寸


我讀了以下幾個問題:

And I used this site to search for devices.但我不能用/過濾器由GL_MAX_TEXTURE_SIZE,這使得搜索繁瑣的搜索。我問的主要是因爲我開始做錯了,這是一個業餘愛好項目,工作量可能太大,可能的設備數量將會啓用(我預計0)。

+0

您可以使用以下方式查詢您的Android設備在Java代碼: INT [最大= INT新[1]; GLES20.glGetIntegerv(GLES20.GL_MAX_TEXTURE_SIZE,max,0); – Antinous

回答

6

1024x1024是關於最安全的,你可以去任何設備上,尤其是在老年人。較新的設備應該沒有任何問題,儘管我已經看到最近的設備(我記得Galaxy Nexus,雖然是最新的ICS更新),但渲染紋理尺寸爲2048x1024的白色四邊形。

如果您定位的是新設備並希望保持舊設備兼容,那麼拆分tileset應該不會有什麼壞處。畢竟,如果您使用兩個或三個Spritesheet作爲背景等,您不太可能執行太多的上下文切換。

+0

問題是我設計了許多使用TMX文件格式和使用這個tileset的級別。打破它適合1024將打破所有的水平。我可能會編寫一個腳本來重新編排地圖中的圖塊,但地圖圖層將以XML格式保存爲壓縮格式。長話短說,我會做,如果我發現它打破了許多手機的遊戲。否則,我會通過,只記得它更嚴肅的項目。 – sm4

+1

還有一件事你可以做,雖然...加載到OpenGL的紋理之前,你需要加載它作爲一個位圖,你可以劃分紋理四(使四個位圖),加載到opengl內的不同紋理,然後保存Sprite的單個表示中的紋理指針。 然後,您可以將四分之一UV座標映射到完整位圖,並綁定您所需的特定紋理。它會加載速度較慢,但​​也許它是可以接受的。祝你好運! – RedOrav

+2

我想我的問題並沒有真正問我需要什麼。但是,您已經最正確地回答了它。謝謝。 – sm4

1

如果您仍然有單獨的圖像文件,將它們分解爲小尺寸的圖集或自定義大小的圖集是如果您使用LibGdx庫中的TexturePacker2工具,則很容易。

我不知道設備的確切限制,但最好考慮要支持的設備的最低端,並從那裏向上創建。使用LibGdx工具,您可以稍後改變主意,因此它是最靈活的解決方案。

看: LibGdx TexturePacker