Я разобрался в своей проблеме.Решение, которое я объяснил в своем последнем посте, совершенно неубедительно.
OpenGL при рисовании моего тестового прямоугольника не заботится о разрешении в пикселях.Он заботится только о системе координат, которой вы его кормите.Как и многие из вас, без сомнения, я использую удобные размеры 320x480 / 768x1024 для систем координат в OpenGL для Phone / Pad.
Чего мне не хватало, так это того, что 200 единиц «OpenGL-land» в системе iPhone [320/480] отличаются от 200 единиц в системе iPad [768/1024] не из-за различий в разрешении экрана, но потому что отношение 320/760 (или эквивалентно, 480/1024) отличается от соотношений ширины экрана или высоты экрана телефона / планшета.Я выбрал линейку и измерил размеры для себя, потому что я не мог найти авторитетные, достоверные цифры в Интернете.
Ширина экрана iPhone: 5,05 см Ширина экрана iPad: 14,8 см
Выможно легко увидеть, что 5.05 / 14.8 отличается от 320 / 768.
В любом случае, «истинное» отношение см к единицам OpenGL на iPhone составляет 5.05 / 320, а для iPad - 14.8 / 768..
Коэффициент масштабирования между ними равен x:
14,8 / 768 = x (5,05 / 320)
0,01927083333333 = x * 0,01578125
=1.221 (ближайшая тысячная)
Итак, я вернулся к своему коду iPhone, и теперь я измерил свой тестовый прямоугольник шириной 1.221 * 200 и оставил свой тестовый прямоугольник до 200 в своем коде iPad.Перекомпилировал оба. В этот раз мой белый тестовый прямоугольник имеет одинаковую ширину как на iPad2, так и на iPhone4.
OpenGL не обращает внимания на плотность пикселей.Он обращает внимание на свою систему координат.Вот почему эта техника работает.Может быть, немного безумно точно сохранять физические размеры, но я могу немного поспать, зная, что есть решение, если оно мне понадобится.
Millenium Falcon, Alex