Какой максимальный размер текстуры доступен на iPad?

Кто-нибудь знает максимальный размер текстуры для iPad? У меня возникли проблемы с поиском номеров для этого.


person Rob Segal    schedule 24.03.2010    source источник
comment
Вам действительно нужно сказать, какая версия iPad (iPad, iPad 2, iPad 3-го поколения или iPad 4-го поколения (на сегодняшний день)?)   -  person bobobobo    schedule 01.01.2013
comment
См. здесь tomshardware.com/reviews/ipad-3- обзор тестов, 3156-6.html   -  person bobobobo    schedule 22.02.2013
comment
@Rob, принятый ответ устарел. Скромное предложение - отметьте мой ответ как принятый ответ и спасите людей, которые когда-нибудь попадут на эту страницу.   -  person brainjam    schedule 21.08.2020


Ответы (3)


iPad 2 поддерживает текстуры OpenGL ES 2.0 и 2048 x 2048.

http://developer.apple.com/iphone/library/documentation/General/Conceptual/iPadProgrammingGuide/AboutThePlatform/AboutThePlatform.html

person davidcann    schedule 08.05.2010
comment
Да, ответ был основан на предварительных и неверных спецификациях. Хорошо поймал. +1 - person Coincoin; 14.05.2010
comment
Полные спецификации здесь: developer.apple.com /библиотека/ios/#documentation/3DDrawing/ - person P i; 28.06.2011
comment
-1: Вы не сказали какой iPad. iPad так сильно меняется внутри, что это могут быть совершенно разные устройства с совершенно разными именами, например, iPad для одного и myPad для следующего. - person bobobobo; 01.01.2013
comment
У iPad 2 было 512 МБ, а у iPad 3 1G общая оперативная память. У вас не закончится память после 3-х текстур 2048x2048. - person bobobobo; 22.02.2013
comment
@bobobobo Я делаю 2048*2048*4/(1024*1024) = 2*2*4 = 16 мб на текстуру. Так что места на несколько больше, чем на троих. - person Tommy; 13.09.2015

В дополнение к принятому ответу:

2048 также было максимальным для iPad2, вплоть до iOS5.1, когда оно стало 4096.

4096 — это максимум для iPad3, как указал @badweasel в комментариях.

Лучше всего определить предел программно, используя

int max;
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &max);

Это полезно, если вы хотите, чтобы ваш код адаптировался к максимальным размерам на устройствах или версиях, которые вы не пробовали или еще не выпустили.

person brainjam    schedule 07.09.2011
comment
Я только что достиг этого предела с моим атласом текстур. Заметил, что на одном экранном объекте до того, как текстуры перестали правильно отображаться, моя высота атласа была 2046, а близость к степени 2 заставила меня погуглить, а затем это обнаружилось. +1 за целочисленный запрос GL, это именно то, что я хотел :-) - person KomodoDave; 19.01.2012
comment
Для iPad3 (новый iPad) возвращается 4096. - person badweasel; 17.03.2012
comment
Код не работает для меня. glGetIntegerv не изменяет значение max, glError возвращает 0. Я что-то упустил? Я вызываю это в делегате приложения при запуске. - person louissmr; 17.03.2015
comment
@louissmr, в наши дни я не очень много пользуюсь GL, но вам, вероятно, нужно настроить контекст GL, прежде чем это сработает. - person brainjam; 17.03.2015
comment
Спасибо @brainjam, это имеет смысл. Я вообще не использую OpenGL в своем приложении, но мне все еще нужен максимальный размер текстуры для определения размера изображения с максимальным разрешением для загрузки без использования плиток. Должно ли создание контекста иметь какой-либо побочный эффект? Я думаю, что могу создать контекст, вызвать glGetIntegerv и затем уничтожить контекст. - person louissmr; 18.03.2015

Вот более свежий ресурс от Apple.

https://developer.apple.com/metal/limits/

Он содержит много информации о графических ограничениях. Если вы хотите узнать максимальный размер текстуры для iOS, найдите запись "Максимальная ширина и высота 2D-текстуры".

Это зависит от того, на какие операционные системы вы ориентируетесь. Например, если вы хотите поддерживать iOS 8 и выше, вы ограничены ограничением iOS 8 для 2D-текстур размером 4096 x 4096 пикселей, хотя более поздние версии iOS могут поддерживать текстуры большего размера.

person peacetype    schedule 05.05.2017