游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2147|回复: 0

ogre中文显示以及载入优化代码下载

[复制链接]

1

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2010-8-30 10:58:00 | 显示全部楼层 |阅读模式
【优化原由】
Ogre在使用中文时,如果需要包含全部文字,初始化非常的慢。
在字体脚本中 .fontdef 文件中增加
code_points 19968-40869 33-255 //汉字
当然大多数情况我们只需要载入游戏内使用的文字,但是如果你的游戏有聊天系统那么你将不得不载入全部的文字甚至是其它语种。

查阅Ogre代码发现他会将全部的字绘制在一张超大的纹理上,并缓存下所有纹理坐标。(具测试 尺寸达到了 9000多*9000多相当惊人)

并且纹理的单个字符按照所有字符中宽高最大的计算,纹理的使用率较低。

初始化时间大约1分钟

其实在一次运行周期内,大部分的文字都是不需要使用的。

应此下定决心优化它。


【优化思路】
创建一张512*1024的幕后纹理,逻辑上将它看成上下2部分。
也就是2张512*512的贴图,分别为第一页和第二页。

程序初始化时这张图是空白的,使用字符时首先看缓存中是否存在,如果不存在则在纹理上画字
并且记录纹理坐标以及当前绘制游标。自动调整当前行高,允许字符为不规则尺寸。

直到一页写满字后开始使用第二页,反复交替。使用两页概念主要是防止一页
满时换页造成的屏幕闪烁现象。

【优化后的效果】
初始化速度大大提高,1秒以内,没做精确测试。绘制速度基本不影响fps
由于纹理中允许不规则尺寸的字符,因此纹理使用率大大提高。

【声名】
该优化尚未用于正式项目,如因使用此代码导致的任何问题作者不负任何责任。
如发现Bug请及时与我联系 QQ 11243566 影子传说 很乐意即使为您提供该优化的技术支持以及Bug修正。

代码下载请加QQ群 7014743。
群共享中有完整的修改代码。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-7 14:06

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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