Tengo que extender un sistema OpenGL-Rendering para admitir caracteres internacionales (especialmente hebreo, árabe y cirílico).Multilingüe Unicode en OpenGL
plataforma de desarrollo es Windows (XP | Vista | 7), por desgracia usando Embercardero Delphi 2010.
Actualmente uso wglOutLineFont (...) para construir la lista de visualización de mi fuente y glCallLists(length(m_Text), UNSIGNED_SHORT, PWchar(m_Text))
para hacer mis cuerdas.
Si bien esto es factible para caracteres latinos 1, construir el juego completo de caracteres Unicode por adelantado consume mucho tiempo (unos 8,5 minutos en mi máquina), por lo que estoy buscando una solución más eficiente. Pensé en limitar el rango de u + 0020 - u + 077f (latín, griego, cirílico, árabe y hebreo) para incluir solo los glifos que necesito, pero eso sería solo una solución para mis necesidades actuales, y será insuficiente una vez otra codificación es necesaria.
Por el lado positivo, no tengo que preocuparme por la dirección de izquierda a derecha o de izquierda a derecha ya que nuestra aplicación ya lo puede manejar.
Supongo que este es un problema bien conocido, por lo que me gustaría preguntar si hay algún material de referencia sobre esto en la web, o si podría compartir algo de información sobre esto?
Editar A aclaración: Uso representaciones de fuentes poligonales. Cada fuente se construye en el tamaño de la unidad (1.0) por adelantado y se escala apropiadamente usando glScalef(...)
antes de la representación. Decidí no rastrillar previamente, ya que los usuarios podrían acercarse bastante (la aplicación se usa para CAD), por lo que los artefactos de barrido se volverían visibles.
Además, dado que una escena rara vez supera más de unos pocos cientos de caracteres (principalmente etiquetas y medidas), la ganancia de velocidad de la rasterización previa es despreciable.
¡Usar objetos de búfer de vértice sería muy agradable!Los rásteres de fuente pueden estar en alta resolución, luego mipmaps y multisampling hacen el resto. – Luca
¿Quiere decir que debería generar las listas una vez que sepa qué caracteres necesitaré dibujar para una cadena determinada? – sum1stolemyname
Sí. Enfrentando un problema similar, y usando la biblioteca OpenType (para la idependencia de la plataforma en lugar de wgl) fuimos con la representación de texturas rasterizadas que contienen renders de palabras. Luego guardamos en caché las palabras visibles, y desechamos cualquier palabra que haya sido desplazada de la pantalla. Nuestra aplicación solo muestra una pequeña cantidad de texto, sin requisitos de formateo muy complicados, pero hay suficiente texto potencial que la preprocesamiento de todo ello podría ocasionar retrasos visibles. –