ogre字体生成(中文显示)
2010-02-03 10:55
274 查看
好久没写博客了,今天写一下如何在ogre中使用自己的字体.
在ogre中主要有两种方式生成字体:
一种是利用truetype字体生成字体纹理, 在材质中字体使用的资源往往以.ttf的形式存在
另一种是用自己画的图片生成字体. 在材质中只要提供一张图片(纹理)即可.
下面分别介绍一下这两种字体的实现方式.
1. 利用truetype字体生成字体纹理
这种方式比较轻松, 打开 ogreSDK(我的版本是1.6.4)的media/fonts文件夹 会看到一个sample.fontdef文件
和solo5.ttf文件. 打开sample.fontdef 看到如下定义:
StarWars
{
// Now this one I agree with ;)
// A Star Wars font :)
type truetype
source solo5.ttf
size 16
resolution 96
}
上面就是ogreSDK为我们定义了StarWars这样的字体
下面主要介绍参数的意义:
type 告诉ogre使用truetype方式生成字体
source 要使用的字体库(这些字体库网上可以下载)
size 字体的大小
resolution 按每英寸中的点数计算的清晰度(官方手册的解释)
此外还有antialias_colour, code_points nn-nn [nn-nn] ..参数 可以参考官方资料
就这样,一个新的字体就定义完成了,在ogre中使用FontManager::getSingleton().getByName(“StarWars”);
就能获取这个字体了。
注意: 这样设置的字体不能显示中文。如果要显示中文,首先要确定你的字体(.ttf)能支持中文. 然后在字体定义中加上
code_points 33-166 19968-40869。这个表示字符的编码范围
2. 利用现有的纹理生成字体
在正常情况下,很少自己去作一种能生成所有中文字的字体。因为要达到这样的目的的话你的图片中必须包涵所有的中文字体。
以及在sample.fontdef要索引所有的文字对应的纹理的位置(下面会提到如何索引);为了简单起见,这里以只能生成0-9这
几个字符的字体作为介绍.
假如现在有张0-9的图片number.tga,在纹理坐标中0对应的纹理区间(u,v坐标)是(0, 0), (0.1 1) 1对应的纹理区间(u,v坐标)是 (0.1, 0), (0.2, 1) 2对应的纹理区间(u,v坐标)是(0, 0.2), (0.3 1)....以此类推。
那么要生成一个新的字体 我们可以在sample.fontdef中如下定义:
NumberFont
{
type image
source number.tga
glyph 0 0.0 0.0 0.1 1.0
glyph 1 0.1 0.0 0.2 1.0
glyph 2 0.2 0.0 0.3 1.0
glyph 3 0.3 0.0 0.4 1.0
glyph 4 0.4 0.0 0.5 1.0
glyph 5 0.5 0.0 0.6 1.0
glyph 6 0.6 0.0 0.7 1.0
glyph 7 0.7 0.0 0.8 1.0
glyph 8 0.8 0.0 0.9 1.0
glyph 9 0.9 0.0 1.0 1.0
size 32
resolution 55
}
下面主要介绍参数的意义:
type 告诉ogre使用现有的纹理生成字体
source 要使用的纹理
glyph 字符对应的纹理(第一参数表示要生成的字符,后面几个参数表示该字符对应的纹理坐标)
size 字体的大小
resolution 按每英寸中的点数计算的清晰度(官方手册的解释)
就这样,又一个新的字体就定义完成了,同样在ogre中使用FontManager::getSingleton().getByName(NumberFont);
就能获取这个字体了。
不对或者需要改进的地方请高手们指点~_~
参考资料:OGRE中文帮助手册(文档:手册:1-4-0:3.5 字体定义脚本)
转载或修改请说明出处
链接:http://blog.csdn.net/howlet2/archive/2010/02/03/5284107.aspx
作者:howlet
E-Mial: howlet3@126.com
在ogre中主要有两种方式生成字体:
一种是利用truetype字体生成字体纹理, 在材质中字体使用的资源往往以.ttf的形式存在
另一种是用自己画的图片生成字体. 在材质中只要提供一张图片(纹理)即可.
下面分别介绍一下这两种字体的实现方式.
1. 利用truetype字体生成字体纹理
这种方式比较轻松, 打开 ogreSDK(我的版本是1.6.4)的media/fonts文件夹 会看到一个sample.fontdef文件
和solo5.ttf文件. 打开sample.fontdef 看到如下定义:
StarWars
{
// Now this one I agree with ;)
// A Star Wars font :)
type truetype
source solo5.ttf
size 16
resolution 96
}
上面就是ogreSDK为我们定义了StarWars这样的字体
下面主要介绍参数的意义:
type 告诉ogre使用truetype方式生成字体
source 要使用的字体库(这些字体库网上可以下载)
size 字体的大小
resolution 按每英寸中的点数计算的清晰度(官方手册的解释)
此外还有antialias_colour, code_points nn-nn [nn-nn] ..参数 可以参考官方资料
就这样,一个新的字体就定义完成了,在ogre中使用FontManager::getSingleton().getByName(“StarWars”);
就能获取这个字体了。
注意: 这样设置的字体不能显示中文。如果要显示中文,首先要确定你的字体(.ttf)能支持中文. 然后在字体定义中加上
code_points 33-166 19968-40869。这个表示字符的编码范围
2. 利用现有的纹理生成字体
在正常情况下,很少自己去作一种能生成所有中文字的字体。因为要达到这样的目的的话你的图片中必须包涵所有的中文字体。
以及在sample.fontdef要索引所有的文字对应的纹理的位置(下面会提到如何索引);为了简单起见,这里以只能生成0-9这
几个字符的字体作为介绍.
假如现在有张0-9的图片number.tga,在纹理坐标中0对应的纹理区间(u,v坐标)是(0, 0), (0.1 1) 1对应的纹理区间(u,v坐标)是 (0.1, 0), (0.2, 1) 2对应的纹理区间(u,v坐标)是(0, 0.2), (0.3 1)....以此类推。
那么要生成一个新的字体 我们可以在sample.fontdef中如下定义:
NumberFont
{
type image
source number.tga
glyph 0 0.0 0.0 0.1 1.0
glyph 1 0.1 0.0 0.2 1.0
glyph 2 0.2 0.0 0.3 1.0
glyph 3 0.3 0.0 0.4 1.0
glyph 4 0.4 0.0 0.5 1.0
glyph 5 0.5 0.0 0.6 1.0
glyph 6 0.6 0.0 0.7 1.0
glyph 7 0.7 0.0 0.8 1.0
glyph 8 0.8 0.0 0.9 1.0
glyph 9 0.9 0.0 1.0 1.0
size 32
resolution 55
}
下面主要介绍参数的意义:
type 告诉ogre使用现有的纹理生成字体
source 要使用的纹理
glyph 字符对应的纹理(第一参数表示要生成的字符,后面几个参数表示该字符对应的纹理坐标)
size 字体的大小
resolution 按每英寸中的点数计算的清晰度(官方手册的解释)
就这样,又一个新的字体就定义完成了,同样在ogre中使用FontManager::getSingleton().getByName(NumberFont);
就能获取这个字体了。
不对或者需要改进的地方请高手们指点~_~
参考资料:OGRE中文帮助手册(文档:手册:1-4-0:3.5 字体定义脚本)
转载或修改请说明出处
链接:http://blog.csdn.net/howlet2/archive/2010/02/03/5284107.aspx
作者:howlet
E-Mial: howlet3@126.com
相关文章推荐
- Ogre字体生成(显示中文)转
- Unity生成webgl,中文字体不显示问题解决
- java 程序生成的文件,中文不显示,显示方框等问题,linux 安装中文字体..
- java5 unix/linux 中文字体配置说明 (jfreechart 图片生成后中文显示为“口”)
- 修复Ubuntu下XTerm不能正常显示中文字体的问题
- latex CJK 中文字体的显示问题
- 让eclipse自动生成的注释的时间显示英文,不用中文.
- 集成到web项目之后,导出PDF时,中文无法正常显示或找不到中文字体
- iReport学习一:中文字体显示
- 使用XMLWorkerHelper.getInstance().parseXHtml生成PDF时中文不显示或乱码问题
- Ubuntu Tty (字符终端) 显示中文,和字体大小设置
- QT学习之路————QT程序在开发板上显示 中文字体
- Unity3D显示中文字体
- 解决larave-dompdf中文字体显示问题
- qt迁移linux有关中文字体,中文显示的问题(转)
- SecureCRT解决字体色彩显示和中文乱码
- debian6.0安装后中文字体显示不正常的解决办法
- Asp : 生成xml数据 及解决Flex里的中文显示乱码问题。。。
- Qtopia字体库的移植--使程序能够在开发板上显示中文
- PyOpenGL利用文泉驿正黑字体显示中文字体