减少动态汉字生成所需纹理内存的方法

文档序号:6576020阅读:206来源:国知局
专利名称:减少动态汉字生成所需纹理内存的方法
技术领域
本发明涉及汉字显示技术领域,尤其涉及一种减少动态汉字生成所需纹 理内存的方法。
背景技术
在现有的计算机平台应用中,经常会有需要显示大量动态汉字的情况, 例如在计算机或游戏机上运行的中文游戏中就需要动态显示大量汉字。在现 有技术中,显示这些汉字的时候,需要把这些汉字生成到纹理中,由于汉字 数量巨大,往往需要占用大量纹理内存。对于可利用资源有限的图形加速器 (显卡)来说,纹理内存的占用情况直接影响显示的速度,汉字占用大量纹 理内存提高了对显存要求,并且读取纹理贴图所需的带宽大大增加,从而拖 慢了显示的速度。

发明内容
因此,本发明的目的在于提供一种减少动态汉字生成所需纹理内存的方 法,降低动态汉字显示时对纹理内存的需求。
为实现上述目的,本发明提供一种减少动态汉字生成所需纹理内存的方 法,包括步骤
51、 生成待显示汉字的点阵;
52、 根据待显示汉字的点阵生成待显示汉字的图片;
53、 创建与所述待显示汉字的图片具有同样尺寸的压縮格式的纹理;
54、 将所述待显示汉字的图片对应填充到所述压缩格式的纹理中;
55、 保存步骤S4中所形成的待显示汉字的压縮格式的纹理。
其中,所述压縮格式为DDS格式。
其中,所述图片的颜色为黑、白两色。
3其中,所述点阵可为16xl6点阵或其它任何点阵。
其中,所述图片为位图。
其中,所述位图为32位位图。
其中,所述压縮格式为DXT1或DXT3。
本发明采用压縮纹理格式来减少动态汉字生成的内存占用量,以实时的 速度将汉字图片转为压縮格式纹理,从而降低动态汉字生成对纹理内存的需 求,进而提高显示速度。


下面结合附图,通过对本发明的具体实施方式
详细描述,将使本发明的 技术方案及其他有益效果显而易见。 附图中,
图1为本发明减少动态汉字生成所需纹理内存的方法的流程图; 图2为本发明一较佳实施中所生成的待显示汉字的图片的示意图。
具体实施例方式
如图1所示,其为本发明减少动态汉字生成所需纹理内存的方法的的流程

步骤Sl、生成待显示汉字的点阵;对于即时输入的需要动态显示的汉 字,在将汉字生成到纹理中的时候,其实只对汉字的每个像素是否显示感兴 趣,而汉字点阵中的每个点都代表一个像素,也就是说, 一个bit就能存储汉 字的一个像素,例如, 一个采用16X16点阵的汉字,其所需要的存储空间为 16X16/8等于32Byte,通过存储待显示汉字的点阵,即可确定待显示汉字的 内容、字体、分布等细节;另外,本发明所采用的汉字点阵可为16X16点阵 或其他任何点阵;
S2、根据待显示汉字的点阵生成待显示汉字的图片;在将汉字点阵数据 保存为纹理时, 一般都是先把汉字点阵数据生成到一张图片中;该图片占据 一定内存区域,可以容纳所有待显示汉字的图片数据,同时该图片具有一定 的长宽尺寸,可以容纳所有待显示的汉字;该图片可采用位图的格式,例如 32位位图;如图2所示,其为本发明一较佳实施中所生成的待显示汉字的图片
4的示意图,该图片的格式为黑白格式,通过黑、白的颜色区分来表示待显示
汉字;
53、 创建与所述待显示汉字的图片具有同样尺寸的压缩格式的纹理;例 如采用目前硬件全部支持的DDS压縮纹理格式,创建一 DDS格式的纹理图 片,该纹理图片的大小与待显示汉字的图片相符;DDS格式的全称是 DirectDraw Surface,它是微软提供的一种压縮纹理格式,可确保纹理文件的 跨平台使用,利用现有程序可将BMP、 TGA等文件转化为DDS文件,具体 实施时,可具体选择DDS格式中的DXT1或DXT3格式;
54、 将所述待显示汉字的图片对应填充到所述压縮格式的纹理中;由于 DDS格式的纹理图片与待显示汉字的图片大小相对应,从而可将待显示汉字 的图片的数据填充到DDS格式的纹理图片中,由于待显示汉字的图片为黑白 色,其颜色数据要么为黑色(值为O),要么为白色(值为OxFFFFFFFF),从而其 能够以实时的速度转为DDS压縮格式,从而形成待显示汉字的DDS压縮格 式的纹理图片;在此,之所以没有选择直接动态将待显示汉字的图片转为 DDS格式,是因为以现有的条件从图片格式到DDS格式的转化需要较长的 时间,所以本发明采用了数据填充的方式来实现实时的转化。
55、 保存步骤S4中所形成的待显示汉字的压縮格式的纹理,用于动态 生成汉字;由于现有硬件都支持DDS格式的纹理图片,从而在同等条件下( 相同的汉字点阵),可以把待显示汉字的纹理图片压缩为原来的1/8或者1/4 (根据具体所采用的DXT1或DXT3格式的压縮比),并且无其它任何限制, 相应的纹理内存的需求也降低到原来的1/8或者1/4。
下面就整个过程,结合本发明一较佳实施例来进行说明,如图2所示, 该较佳实施例在游戏中要显示汉字"版权所有2009年保留所有权利。",其 在Windows平台上来实现,通过调用Windows API(Application Programming Interface,应用程序编程接口)来实现具体功能
1、 创建一块32位位图内存区域,可以容纳上述所有汉字的位图数据;
2、 调用CreateFontAPI创建指定大小的字体点阵;
3、 调用ExtTextOut API将所需汉字点阵数据以32位位图格式保存到内 存中,最终内存中的32位图片如图2所示;4、 调用CreateTexture API创建和图2中图片同样长宽的DXT1格式(或 其它DDS格式)的纹理;
5、 将32位位图数据填充到DXT1格式纹理中,在将32位位图数据填充 到DXT1格式纹理中的时候,充分利用了 32位位图数据中的颜色数据只存在 两种可能,要么为黑色(值为0),要么为白色(为OxFFFFFFFF),以实时的速 度将32位位图转为DXT1压縮格式,从而形成DXT1格式的汉字纹理图片, 相应减少了对纹理内存的占用,填充4戈^^举例如下
DWORD* pSource;〃初始化为32 ^f立位图格式数据起始位置 DWORD *pLine; WORD wValue; 匿i,j;
WORD fpDest-(WORD"pBuffer;〃pBuffer初始化为指向DXTl纹理
数据起始位置
for(int h=0;h<m—iHeight;h+=4)〃 mjHeight为纹理高度 for(int w=0;w<m—iWidth;w+=4)〃m_iWidth为纹理宽度 pLine=pSource+w;
、0681++=(^0;〃(^£^;〃充分利用字体图片颜色要么为 全白,要么为全黑的特点
*pDest++=0xffff; for(j=0;j<4;j+=2)
wValue=0;
for( i=0;i<4;i++)
if(pLine[i]=0)
wValue|=(3《(i+i》;wValue|=(l《(i+i));
pLine+=m—iWidth; for(i=0;i<4;i++)
if(pLine[i]==0)
wValue|=(3《(i+i+8》;
else
wValue|=(l《(i+i+8));
*pDest++=wValue; pLine+=m—iWidth;
pSource+=4*m—i Width;
综上所述,本发明采用压縮纹理格式来减少动态汉字生成的内存占用 量,以实时的速度将汉字图片转为压縮格式纹理,从而降低动态汉字生成对 纹理内存的需求,进而提高显示速度。
以上所述,对于本领域的普通技术人员来说,可以根据本发明的技术方 案和技术构思作出其他各种相应的改变和变形,而所有这些改变和变形都应 属于本发明后附的权利要求的保护范围。
权利要求
1、一种减少动态汉字生成所需纹理内存的方法,其特征在于,包括步骤S1、生成待显示汉字的点阵;S2、根据待显示汉字的点阵生成待显示汉字的图片;S3、创建与所述待显示汉字的图片具有同样尺寸的压缩格式的纹理;S4、将所述待显示汉字的图片对应填充到所述压缩格式的纹理中;S5、保存步骤S4中所形成的待显示汉字的压缩格式的纹理。
2、 如权利要求l所述的减少动态汉字生成所需纹理内存的方法,其特征 在于,所述压縮格式为DDS格式。
3、 如权利要求l所述的减少动态汉字生成所需纹理内存的方法,其特征 在于,所述图片的颜色为黑、白两色。
4、 如权利要求l所述的减少动态汉字生成所需纹理内存的方法,其特征 在于,所述图片为位图。
5、 如权利要求4所述的减少动态汉字生成所需纹理内存的方法,其特征 在于,所述位图为32位位图。
6、 如权利要求2所述的减少动态汉字生成所需纹理内存的方法,其特征 在于,所述压縮格式为DXT1或DXT3。
全文摘要
一种减少动态汉字生成所需纹理内存的方法,包括步骤S1.生成待显示汉字的点阵;S2.根据待显示汉字的点阵生成待显示汉字的图片;S3.创建与所述待显示汉字的图片具有同样尺寸的压缩格式的纹理;S4.将所述待显示汉字的图片对应填充到所述压缩格式的纹理中;S5.保存步骤S4中所形成的待显示汉字的压缩格式的纹理。本发明采用压缩纹理格式来减少动态汉字生成的内存占用量,以实时的速度将汉字图片转为压缩格式纹理,从而降低动态汉字生成对纹理内存的需求,进而提高显示速度。
文档编号G06T11/00GK101499174SQ20091010509
公开日2009年8月5日 申请日期2009年1月16日 优先权日2009年1月16日
发明者胡国平 申请人:深圳市中青宝网网络科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1