游戏开发论坛

 找回密码
 立即注册
搜索
查看: 8624|回复: 12

freetype如何保证效率?

[复制链接]

8

主题

70

帖子

79

积分

注册会员

Rank: 2

积分
79
发表于 2010-6-11 16:55:00 | 显示全部楼层 |阅读模式
最近弄freetype的时候,遇到点问题,问一下解决方法!谢谢!
从ttf中读出来字后,我缓存了它,每一个字一个图片,这样避免了老去读
不过即使这样,效率上也达不到需求,因为每个字来自的图片不一样的话,不得不每个字绘制一次
我想过把常用字(就是编码里第一段那几千个,记不清楚了?)缓存到同一张比较大的图上,
非常用字才缓存到单张小图上,但是又觉得太麻烦,主要是涉及到最大纹理尺寸的限制
各位有没有什么好一点的方法啊?

86

主题

2251

帖子

2384

积分

金牌会员

Rank: 6Rank: 6

积分
2384
QQ
发表于 2010-6-12 00:00:00 | 显示全部楼层

Re:freetype如何保证效率?

关注~

14

主题

77

帖子

83

积分

注册会员

Rank: 2

积分
83
发表于 2010-6-12 08:30:00 | 显示全部楼层

Re:freetype如何保证效率?

FreeType2应该是自带缓存功能的吧

8

主题

70

帖子

79

积分

注册会员

Rank: 2

积分
79
 楼主| 发表于 2010-6-12 11:00:00 | 显示全部楼层

Re:freetype如何保证效率?

有个铲铲啊,它自带缓存就好咯!
咋个论坛嫩个冷清哦,个个都舍不得给个建议说?

59

主题

984

帖子

1200

积分

金牌会员

Rank: 6Rank: 6

积分
1200
发表于 2010-6-12 16:53:00 | 显示全部楼层

Re:freetype如何保证效率?

缓存到一张大图上

45

主题

1163

帖子

1165

积分

金牌会员

Rank: 6Rank: 6

积分
1165
发表于 2010-6-12 17:08:00 | 显示全部楼层

Re:freetype如何保证效率?

纹理过大占带宽,纹理过小切换次数多.我想用适中大小的纹理.每个字有个使用时间,缓存满了就删除时间最久的

3

主题

19

帖子

30

积分

注册会员

Rank: 2

积分
30
发表于 2010-6-13 10:56:00 | 显示全部楼层

Re:freetype如何保证效率?

使用多张纹理来存储,,当一张纹理写满之后就新开一张,同时每个字符记录对应纹理的索引和UV

2

主题

14

帖子

102

积分

注册会员

Rank: 2

积分
102
发表于 2010-6-14 12:49:00 | 显示全部楼层

Re: freetype如何保证效率?

采用多张纹理缓存,例如 ,一组256 x 256大小的纹理缓存,在绘制的时候当然做下纹理排序罗,然后在渲染罗。如果很多文字是UI上的静态文字,那么可以把这些静态文字首先缓存到额外的纹理上面,这样也能加快渲染速度。不过这样加快不了多少

59

主题

984

帖子

1200

积分

金牌会员

Rank: 6Rank: 6

积分
1200
发表于 2010-6-14 16:46:00 | 显示全部楼层

Re:freetype如何保证效率?

渲染文字所用的多边形一般都非常简单,渲染的代价主要是CPU端DP的调用
把文字缓存到多纹理以后,一是查找字符的逻辑复杂,二是一个string也许需要分为多次DP渲染,更加重了CPU端的负载

就我的经验来看,一张1024*1024的纹理是比较合适的尺寸,文字一般不需要mipmap,用A8,DXT1或其他格式,也就1M左右

中文字符的重复率非常高,我曾经我测试5万字的文本,每次随机渲染200~300个字符,需要重新刷新整个缓存纹理的次数并不多,当然,这依赖于所用字符的尺寸和字符样式的多少

34

主题

629

帖子

629

积分

高级会员

Rank: 4

积分
629
发表于 2010-6-14 16:57:00 | 显示全部楼层

Re:freetype如何保证效率?

直接用ID3DXFont多好,字还清晰,真想做跨平台?国内有几个跨平台的。。?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-2-27 23:22

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表