2013-06-05 14 views
6

Pracuję z AndEngine i OpenGL ES 2.0. Wciąż czytam o GL_MAX_TEXTURE_SIZE i jak mam zachować moje Texures pod 1024x1024. Zacząłem źle przedtem i podczas używania zestawów klocków w rozszerzeniu TMX (tak naprawdę nie ma znaczenia, co to jest, jeśli nie znasz AndEngine), docieram do zestawu klocków, który sprawia, że ​​tekstura jest szersza niż 1024px. Myślę o podzieleniu zestawu płytek na dwie części, co czyni je "bezpiecznymi". Ale nie mogę znaleźć żadnego urządzenia wydanego w ciągu ostatnich kilku lat, które ma ten limit ustawiony pod numerem 2048x2048. Czy istnieje lista lub strona internetowa, której mogę użyć do filtrowania urządzeń przez GL_MAX_TEXTURE_SIZE?Urządzenia z systemem Android Ograniczenie GL_MAX_TEXTURE_SIZE, bezpieczny rozmiar tekstury


czytałem na następujące pytania:

And I used this site to search for devices. Ale nie mogę wyszukiwać według/filtra przez GL_MAX_TEXTURE_SIZE, co sprawia, że ​​wyszukiwanie nużące. Pytam głównie dlatego, że zacząłem źle, jest to projekt typu hobby i ilość pracy może być zbyt duża w porównaniu do liczby możliwych urządzeń, które będą włączone (spodziewam się 0).

+0

Można zapytać swojego urządzenia z Androidem w kodzie Java przy użyciu: int [] max = new int [1]; GLES20.glGetIntegerv (GLES20.GL_MAX_TEXTURE_SIZE, maks., 0); – Antinous

Odpowiedz

6

1024x1024 to najbezpieczniejszy ze wszystkich urządzeń, zwłaszcza starszych. Nowsze urządzenia nie powinny mieć żadnego problemu, chociaż widziałem najnowsze urządzenia (przypominam Galaxy Nexus, ale najnowsza aktualizacja ICS) renderuje białe kwadraty o rozmiarach tekstu 2048x1024.

Jeśli kierujesz reklamy na nowe urządzenia i chcesz zachować starsze wersje, nie powinno to zaszkodzić dzielić zestawy klocków. W końcu, prawdopodobnie nie wykonasz zbyt wielu przełączeń kontekstowych, jeśli użyjesz dwóch lub trzech arkuszy sprite'owych dla tła itp.

+0

Problem polega na tym, że zaprojektowałem wiele poziomów, używając formatu pliku TMX i używając tego zestawu klocków. Rozbicie go na pasujące 1024 złamałoby również wszystkie poziomy. Prawdopodobnie mógłbym napisać skrypt, aby zmienić numerację płytek na mapie, ale warstwa mapy jest zapisana w formacie spakowanym wewnątrz XML. Krótko mówiąc, zrobię to, jeśli się dowiem, że łamie grę dla wielu telefonów. W przeciwnym razie przejdę i po prostu zapamiętają go dla poważniejszych projektów. – sm4

+1

Jest jeszcze jedna rzecz, którą możesz zrobić ... przed załadowaniem tekstury do OpenGL, musisz załadować ją jako bitmapę, możesz podzielić teksturę na cztery (zrobić cztery bitmapy), załadować wszystkie ćwiartki do różnych tekstur wewnątrz opengl, a następnie zapisać wskaźniki tekstury w pojedynczej reprezentacji Sprite. Następnie można odwzorować współrzędne UV z jednej czwartej na pełną bitmapę i powiązać określoną teksturę, której potrzebujesz. Załaduje się wolniej, ale być może jest dla ciebie do przyjęcia. Powodzenia! – RedOrav

+2

Myślę, że moje pytanie tak naprawdę nie pytało o to, czego potrzebuję.Jednak odpowiedziałeś na to poprawnie. Dzięki. – sm4

1

Jeśli nadal masz pojedyncze pliki obrazów, podzielenie ich na małe atlasy lub atlasy o niestandardowych rozmiarach to łatwe, jeśli używasz narzędzia TexturePacker2 z biblioteki LibGdx.

Nie znam dokładnego ograniczenia urządzeń, ale zawsze lepiej jest wziąć pod uwagę najniższy koniec urządzenia, które chce się obsługiwać i budować od góry. Korzystając z narzędzia LibGdx, możesz później łatwo zmienić zdanie, więc jest to najbardziej elastyczne rozwiązanie.

Spójrz: LibGdx TexturePacker

Powiązane problemy