На этот вопрос трудно ответить однозначно. В общем, это банально, но опять же не так.
Рисование «плоского прямоугольника с чем-то на нем» — это пара вызовов API, настолько простых, насколько это возможно. Рисование текста в OpenGL эффективным способом, с высоким качеством и без предварительной обработки — это совсем другая история.
Что бы я сделал, так это отрисовал бы текст, используя любой «обычный поддерживаемый системой» способ в iOS (точно так же, как вы рисуете в любом окне, я бы не знал этой конкретной детали), но рисовал бы в растровое изображение em> а не на экране. Это должно поддерживаться, почти каждая ОС поддерживает это как минимум 10-15 лет. Затем превратите это растровое изображение в текстуру, привяжите его и нарисуйте свой тривиальный плоский четырехугольник с помощью OpenGL (настройте буфер вершин с 4 вершинами, каждая вершина — координата текстуры, и нарисуйте два треугольника — настолько просто, насколько это возможно).
Огромным преимуществом этого является то, что вы можете использовать установленные системные шрифты (или любые доступные шрифты), вам не нужно генерировать растровый шрифт и не нужно думать о действительно уродливых вещах, таких как хинтинг и правильный интервал, и гораздо проще смешивать разные стили текста и т. д. Конечно, OpenGL также имеет встроенную поддержку текста, но это не очень эффективно или приятно. Если текст не меняется каждую миллисекунду, действительно лучше всего рендерить его с помощью стандартного рендерера, который предоставляет операционная система (да, это, вероятно, не будет аппаратным ускорением, ну и что... так как пользователь должен читать текст, скорее всего, он не будет меняться каждую миллисекунду).
Теперь все становится сложнее, если ваш «кусок бумаги» тоже должен сгибаться и скручиваться или делать эффект отслаивания страницы, а не просто плоский прямоугольник. В этом случае вам нужно разбить его на мозаику, что тоже может быть сложнее, чем кажется. Не все тесселяции выглядят оптимальными для всех изгибов/поворотов, или они имеют оптимальное (читай как минимум) количество вершин.
В одной из книг по GPU Gems или GPU Pro есть статья о "отслоении страницы" и такой тесселяции, позвольте мне поискать...
Там: Андреас Биззотто: «Шейдерная программа для чтения электронных книг — эффект отслоения страницы», GPU Pro2, стр. 278–299
Может быть, вам удастся раздобыть копию или вам посчастливится найти ее в Google Книгах или где-то еще.
person
Damon
schedule
27.10.2011