Renderização de texto / fonte no OpenGLES 2 (iOS - CoreText?) - opções e melhores práticas?

Há muitas questões sobre a renderização de fontes OpenGL, muitas delas são satisfeitas por atlas de textura (rápido, mas errado) ou texturas de string (somente texto fixo).

No entanto, essas abordagens são ruins e parecem estar anos desatualizadas (que tal usar shaders para fazer isso melhor / mais rápido?). Para o OpenGL 4.1, existe uma excelente pergunta sobre "o que você deve usarhoje"":

O que é o estado da arte para renderização de texto no OpenGL a partir da versão 4.1?

Assim,O que devemos usar no iOS GL ES 2 hoje?

Estou desapontado que parece não haver código-fonte aberto (ou mesmo solução comercial). Eu sei que muitas equipes o consomem e gastam semanas devinando o tempo reinventando essa roda, gradualmente aprendendo como kern e espaço, etc. (ugh) - mas deve haver uma maneira melhor do que reescrever o conjunto de "fontes" do princípio?

Tanto quanto eu posso ver, existem duas partes para isso:

Como podemos renderizar texto usando uma fonte?Como exibimos a saída?

Para 1 (como renderizar), a Apple fornece MUITAS maneiras de obter a saída renderizada "correta" - mas as "fáceis" não suportam OpenGL (talvez algumas das outras façam - por exemplo, existe uma maneira simples de mapear a saída CoreText para OpenGL?).

Para 2 (como exibir), temos shaders, temos VBOs, temos texturas de glifo, temos texturas de pesquisa e outras técnicas (por exemplo, o material do OpenGL 4.1 vinculado acima?)

Aqui estão as duas abordagens comuns do OpenGL que eu conheço:

Atlas de textura (renderize todos os glifos uma vez e, em seguida, renderize 1 x quadrângulo texturizado por caractere, a partir da textura compartilhada)Isso está errado, a menos que você esteja usando uma "fonte de bitmap" da era dos anos 80 (e mesmo assim: o atlas de textura requer mais trabalho do que parece, se você precisar dele para fontes não triviais)(fontes não são "uma coleção de glifos", há uma grande quantidade de posicionamento, layout, envolvimento, espaçamento, kerning, estilo, coloração, ponderação, etc. Atlas de textura falha)Cadeia fixa (use qualquer classe da Apple para renderizar corretamente, faça o screenshot dos dados da imagem de apoio e carregue como uma textura)Em termos humanos, isso é rápido. Na renderização de quadros, isso é muito, muito lento. Se você fizer isso com muita mudança de texto, sua taxa de quadros passa pelo chãoTecnicamente, é mais correto (não inteiramente: você perde algumas informações dessa forma), mas extremamente ineficiente

Eu também vi, mas ouvi coisas boas e ruins sobre:

Imagination / PowerVR "Print3D" (link quebrado) (dos caras que fabricam a GPU! Mas seu site moveu / removeu a página de renderização de texto)FreeType (requer pré-processamento, interpretação, muito código, bibliotecas extras?)... e / ou FTGLhttp://sourceforge.net/projects/ftgl/ (rumores: lento? buggy? não atualizado há muito tempo?)Fonte-Stashhttp://digestingduck.blogspot.co.uk/2009/08/font-stash.html (alta qualidade, mas muito lenta?)1

Dentro das próprias bibliotecas padrão / OS da Apple, conheço várias fontes de renderização de texto. NB:Eu usei a maioria deles em detalhes em projetos de renderização em 2D, minhas declarações sobre eles exibindo renderizações diferentes são baseadas em experiência direta

CoreGraphics com NSStringMais simples de tudo: render "em um CGRect"Parece ser uma versão ligeiramente mais rápida da abordagem de "string fixa" que as pessoas recomendam (mesmo que você espere que seja a mesma coisa)UILabel e UITextArea com texto simplesNB: eles não são os mesmos! Pequenas diferenças em como eles processam o texto smaeNSAttributedString, renderizada para um dos itens acimaNovamente: processa de forma diferente (as diferenças que eu conheço são bastante sutis e classificadas como "bugs", várias perguntas sobre isso)CATextLayerUm híbrido entre fontes iOS e renderização antiga. Usa o CFFont / UIFont "não totalmente gratuito" em ponte, que revela mais algumas diferenças de renderização / estranhezaCoreText... a solução final? Mas uma fera própria ...