2013-06-05 2 views
6

Ich arbeite mit AndEngine und OpenGL ES 2.0. Ich lese weiter über GL_MAX_TEXTURE_SIZE und wie ich meine Texte unter 1024x1024 halten sollte. Ich habe vor und während der Verwendung von Tilesets in der TMX-Erweiterung falsch angefangen (spielt eigentlich keine Rolle, wenn Sie AndEngine nicht kennen) Ich komme zu einem Tileset, das eine Textur breiter als 1024px macht. Ich denke daran, das Tileset in zwei Teile aufzuteilen und sie "sicher" zu machen. Aber ich kann kein Gerät finden, das in den letzten paar Jahren veröffentlicht wurde und dieses Limit unter 2048x2048 hat. Gibt es eine Liste oder eine Website, die ich verwenden kann, um Geräte nach GL_MAX_TEXTURE_SIZE zu filtern?Android Geräte GL_MAX_TEXTURE_SIZE Begrenzung, sichere Texturgröße


Ich las die folgenden Fragen:

And I used this site to search for devices. Aber ich kann durch/Filter von GL_MAX_TEXTURE_SIZE, nicht suchen, die die Suche mühsam macht. Ich frage hauptsächlich, weil ich falsch angefangen habe, es ist ein Hobby-Projekt und die Menge an Arbeit könnte zu groß im Vergleich zu der Anzahl der möglichen Geräte sein, die aktiviert werden (ich erwarte 0).

+0

Sie Ihr Android-Gerät in Java Code-Abfrage: int [] max = new int [1]; GLES20.glGetIntegerv (GLES20.GL_MAX_TEXTURE_SIZE, max, 0); – Antinous

Antwort

6

1024x1024 ist ungefähr das sicherste, das Sie auf jedem möglichem Gerät gehen können, besonders auf älteren. Neuere Geräte sollten kein Problem haben, obwohl ich kürzlich Geräte gesehen habe (ich erinnere mich an ein Galaxy Nexus, das neueste ICS-Update behoben) render weiße Quads mit Texturgrößen der Größe 2048x1024.

Wenn Sie auf neue Geräte abzielen und ältere kompatibel halten möchten, sollte es nicht schaden, Ihre Tilesets zu teilen. Schließlich werden Sie wahrscheinlich nicht zu viele Kontextwechsel durchführen, wenn Sie zwei oder drei Sprites für den Hintergrund usw. verwenden.

+0

Das Problem ist, dass ich viele Ebenen mit TMX-Dateiformat entworfen und dieses Tileset verwendet habe. Ein Aufteilen auf 1024 würde auch alle Ebenen durchbrechen. Ich könnte wahrscheinlich ein Skript schreiben, um die Kacheln in der Karte neu zu nummerieren, aber der Karten-Layer wird im Zip-Format in XML gespeichert. Lange Rede kurzer Sinn, ich werde es tun, wenn ich finde, dass es das Spiel für viele Telefone bricht. Ansonsten werde ich weitergeben und erinnere mich nur für ernstere Projekte. – sm4

+1

Es gibt noch eine andere Sache, die Sie tun könnten ... Bevor Sie eine Textur in OpenGL laden, müssen Sie sie als Bitmap laden, Sie können die Textur in vier teilen (vier Bitmaps machen), alle Quartiere in verschiedene Texturen laden und dann speichern die Texturzeiger in einer einzigen Sprite-Darstellung. Sie könnten dann die UV-Koordinaten von einem Viertel bis zu einer vollständigen Bitmap abbilden und die gewünschte Textur binden. Es wird langsamer laden, aber vielleicht ist es für Sie akzeptabel. Viel Glück! – RedOrav

+2

Ich denke, meine Frage hat nicht wirklich gefragt, was ich brauche.Wie auch immer, Sie haben es am besten beantwortet. Vielen Dank. – sm4

1

Wenn Sie noch die einzelnen Bilddateien haben, können Sie sie in kleine Atlanten oder benutzerdefinierte Atlanten zerlegen einfach, wenn Sie das Tool TexturePacker2 aus der LibGdx-Bibliothek verwenden.

Ich kenne die genaue Begrenzung der Geräte nicht, aber es ist immer besser, das unterste Ende des Geräts zu berücksichtigen, das Sie unterstützen und von dort aus aufbauen möchten. Mit dem LibGdx-Tool können Sie Ihre Meinung später ändern, also ist es die flexibelste Lösung.

Blick auf: LibGdx TexturePacker

Verwandte Themen