Ada*_*dam 18 fonts core-animation opengl-es core-text ios
关于OpenGL字体渲染有很多问题,其中许多问题都是由纹理图集(快速但错误)或字符串纹理(仅限固定文本)所满足.
然而,这些方法很差,似乎已经过时了(使用着色器更好/更快地做到这一点怎么样?).对于OpenGL 4.1,有一个很好的问题,看看"你今天应该使用什么?":
那么,今天我们应该在iOS GL ES 2上使用什么?
我很失望,似乎没有开源(甚至是商业解决方案).我知道有很多团队把它搞砸了,花了几周的时间重新发明这个轮子,逐渐学习如何克服和空间等(呃) - 但必须有一个比重写整个"字体"更好的方法从头开始?
据我所知,这有两个部分:
对于1(如何渲染),Apple提供了许多方法来获得"正确的"渲染输出 - 但"简单"的方法不支持OpenGL(也许其他一些方式 - 例如是否有一种简单的方法来映射CoreText输出到OpenGL?).
对于2(如何显示),我们有着色器,我们有VBO,我们有字形纹理,我们有查找纹理,以及其他tecniques(例如上面链接的OpenGL 4.1内容?)
以下是我所知道的两种常见的OpenGL方法:
我也看过,但听到了好的和坏的事情:
在Apple自己的OS /标准库中,我知道几种文本呈现源.注意:我已经在2D渲染项目中详细使用了大部分这些,我关于它们输出不同渲染的陈述是基于直接经验
我做了一些实验,看起来CoreText在与纹理图集和Valve的符号差异纹理(可以将位图字形转换为独立于分辨率的高分辨率纹理)结合时可能会提供完美的解决方案.
......但我还没有工作,还在试验.
更新:Apple的文档说他们可以访问除最终细节之外的所有内容:要呈现的字形+字形布局(根据文档,您可以获得行布局,字形数量,但不能使用字形本身).由于没有明显的原因,CoreText显然缺少这个核心信息(如果是这样,那使CT几乎一文不值.我还在寻找能否找到实际glpyhs + per-glyph数据的方法)
UPDATE2:我现在已经正常使用Apple的CT(但没有不同的纹理),但它最终成为3个类文件,10个数据结构,大约300行代码,再加上OpenGL代码来渲染它.SO答案太多了:(.
简短的回答是:是的,你可以做到,如果你:
渲染时,使用Apple创建的字形ID列表,并使用保存的信息和纹理,使用纹理协作渲染四边形,从而将单个字形拉出您上传的纹理.
这很有效,它很快,适用于所有字体,它可以获得所有字体布局和字距调整等.
| 归档时间: |
|
| 查看次数: |
6876 次 |
| 最近记录: |