2014-06-07 14 views
6

Wiem, że na urządzeniach mobilnych największa struktura, jaką można renderować w jednym losowaniu, różni się: czasami jest to zaledwie 1024 x 1024 - innym razem 2048 x 2048 itd.Czy istnieje maksymalny rozmiar tekstury libGDX na pulpicie?

Co jest w przypadku gier na komputery stacjonarne? Używam OpenGL 2.0.

Zamierzam narysować pojedynczy ikonkę tła, która może mieć wielkość 5000x5000. Zgaduję, że TexturePacker nie jest całkiem użyteczny w tym scenariuszu, ponieważ tak naprawdę nie potrzebuję atlasu, ponieważ próbuję stworzyć pojedynczy ikonkę.

Tak, właśnie testowałem pod kątem 5000 x 5000 i działa dobrze. Zastanawiam się tylko, czy istnieje rzeczywisty limit do rozważenia. Może różni się on od jednego komputera do drugiego?

Odpowiedz

8

Maksymalny rozmiar tekstury jest funkcją OpenGL, który pozostawia rozmiar sterowniku urządzenia karty graficznej (w granicach).

Można sprawdzić w czasie wykonywania, aby zobaczyć, co zgłaszane limity są (ale zobacz Confusion with GL_MAX_TEXTURE_SIZE dla niektórych zastrzeżeń).

Aby dowiedzieć się, jakie różnorodne raporty sprzętowe w praktyce, istnieją witryny, które zbierają bazy danych wyników od użytkowników (głównie dotyczące wydajności testów), które często zbierają również dane, takie jak maksymalny rozmiar tekstury. (Np., Gfxbench.com lub http://opengl.gpuinfo.org/gl_stats_caps_single.php?listreportsbycap=GL_MAX_TEXTURE_SIZE)

Myślę, że na nowoczesnym biurowym GPU 5000x5000 będzie znacznie poniżej obsługiwanego limitu.

11

Oprócz tego, co P.T. powiedział, chciałem dostarczyć kod do tego (w libGDX).

IntBuffer intBuffer = BufferUtils.newIntBuffer(16); 
Gdx.gl20.glGetIntegerv(GL20.GL_MAX_TEXTURE_SIZE, intBuffer); 
System.out.println(intBuffer.get()); 

W moim systemie stacjonarnym skutkuje 4096, co oznacza, że ​​maksymalny rozmiar obsługiwany jest 4096x4096. Mój system nie jest jednak taki stary. Prawdopodobnie nie należy zakładać, że 5000 x 5000 jest dostępny we wszystkich systemach komputerowych. Zwykle nie potrzebujesz dużych tekstur, więc nie wszystkie procesory graficzne to obsługują. Zawsze możesz podzielić go na kilka tekstur i narysować go na wielu quadach obok siebie, aby obejść ten problem.