Разработка для Retina и не -дисплеев Retina OpenGL ES

Я ищу совета, прежде чем слишком углубляться в свой следующий проект. Я хотел бы поддерживать все различные разрешения, которые сейчас поддерживаются iOS (retina, iPhone без -retina и всеми 3 iPad ).

Как чаще всего это делают разработчики? Я видел, как задавали подобные вопросы, но специфического характера. Я ищу полный пакет. IE. Я хотел бы поддерживать растровые шрифты, изображения и т. д. с разным разрешением.

Является ли переключатель специфичным для устройства или операторы if являются стандартными?

Спасибо за помощь в расширении.

E

Изменить :Я нашел это в Apple:

Blockquote Если ваше приложение использует OpenGL ES для рендеринга, ваш существующий код рисования должен продолжать работать без каких-либо изменений. Однако при рисовании на экране с высоким разрешением -ваш контент масштабируется соответствующим образом и выглядит более блочным. Причина блочного вида заключается в том, что поведение по умолчанию класса CAEAGLLayer, который вы используете для резервного копирования буферов рендеринга OpenGL ES, такое же, как и у других объектов слоя Core Animation. Другими словами, его коэффициент масштабирования изначально установлен на 1,0, что заставляет компоновщик Core Animation масштабировать содержимое слоя на экранах с высоким разрешением -. Чтобы избежать этого блочного вида, вам нужно увеличить размер ваших буферов рендеринга OpenGL ES, чтобы они соответствовали размеру экрана. (Чем больше пикселей, тем больше деталей вы можете предоставить для своего контента. )Поскольку добавление большего количества пикселей в ваши буферы рендеринга влияет на производительность, вы должны явным образом согласиться на поддержку экранов с высоким разрешением -.

Цитата Чтобы включить рисование с высоким разрешением -,вы должны изменить коэффициент масштабирования представления, которое вы используете для представления содержимого OpenGL ES. Изменение свойства contentScaleFactor вашего представления с 1,0 на 2,0 вызывает соответствующее изменение масштабного коэффициента базового объекта CEAGLLayer. Метод renderbufferStorage :fromDrawable :, который вы используете для привязки объекта слоя к своим буферам рендеринга, вычисляет размер буфера рендеринга, умножая границы слоя на его коэффициент масштабирования. Таким образом, удвоение коэффициента масштабирования удваивает ширину и высоту результирующего буфера рендеринга, что дает вам больше пикселей для вашего контента. После этого вы должны предоставить контент для этих дополнительных пикселей.

Итак, я думаю, что мой обновленный вопрос заключается в том, как мне удвоить коэффициент масштабирования, описанный выше?

Редактировать 2:

Я почти готов...

Я использую это для масштабирования внутри моего EAGLView:

        // Adjust for retina displays
    if ([self respondsToSelector:@selector(setContentScaleFactor:)])
    {
            self.contentScaleFactor = [[UIScreen mainScreen] scale];
    }

Единственная проблема, которая осталась, это то, что исходная точка каким-то образом перепуталась. Отображаемые изображения теперь масштабируются в соответствии с разрешением, но при большем разрешении изображение начинается в середине экрана.

Пожалуйста, помогите!

Редактировать 3 :Решено!!!! У меня были проблемы с ориентацией.

Убедитесь, что ваш перевод обновлен. Я использовал это:

    glTranslatef( width / 2, height /2, 0);
glRotatef(-90, 0, 0, 1);
glTranslatef(-1 * (height / 2),-1 * (width / 2),0);

Спасибо за внешний вид. Я надеюсь, что это помогает кому-то.

7
задан Zachary Schuessler 25 June 2012 в 16:26
поделиться