基于opengl的三维立体汉字显示的研究.docVIP

  • 14
  • 0
  • 约 7页
  • 2017-02-06 发布于湖南
  • 举报

基于opengl的三维立体汉字显示的研究.doc

基于opengl的三维立体汉字显示的研究

2006 年第 5 期 《 福建师范大学福清分校学报》 总第 76 期 JO U R N A L O F FU Q IN G BR A N CH O F FU JIA N N O R M A L U N IV ER SITY Sum N o.76 基于 OpenGL 的三维立体汉字显示的研究 许丽卿,周力臻 (福建师范大学协和学院, 福建福州 350007) 摘 要: 本文对如何在 O penG L 创建的 3D 场景中,实现汉字的绘制和显示进行了深入探讨。提出了在 O penG L 下绘制和显示 3D 汉字的几种方法,给出了一种简便的、确实可行的解决方案来实现三维汉字的生 成和显示,并用实例说明了用汉字和英文标注句法分析树上的各个结点的过程,取得了较好的效果。 关键词: O penG L;3D 汉字;显示列表;句法分析树 中图分类号: T P317.2 文献标识码: A 文章编号: 1008- 3421(2006)05- 0009- 04 1 在 OpenGL 创建的 3D 场景中, 汉字显示的几种方法 在 O penG L 创建的 3D 场景中,使用单缓存模式,这样可以直接调用 W indows的 G D I字体和文本输出函数 显示汉字。但是不能工作在 O penG L 双缓存环境下,在许多动态显示的场景中无法显示汉字。 采用创建一个平面也可以是其它特殊的造型的物体,将文字做成位图,使其成为物体的纹理贴图,从而达 到文字显示的目的。 该方法可以说是一种简单可行的方法,由于创建三维场景必然用到物体的创建和纹理贴图,我们只需将物体的 某些颜色屏蔽掉,便能清楚地显示出汉字。更换文字时,只需将贴图换掉就可以了。只是这种方法做出的字体同样缺 乏立体感,并且显示创建也并不十分方便,所以只适合于特殊场合的应用。 O penG L 中的 glBitm ap 函数支持位图的直接显示,这样可以把文本做成位图字符直接调用显示。将文本做 成位图字符,可以是编程时的工作,也可以是程序动态运行的工作。这样显示的汉字,突出的特点是不用复杂的处 理,其字体底色本身已经和场景底色一致了。但无论如何该方法仍然是权益的方法,首先,转换的工作是烦琐的;其 次,字体大小不易控制。并且该方法显示的汉字,虽然美观但仍然不是 3D 汉字。 2 本系统采用显示列表的方式直接创建三维字体 在 V isual C++6.0 中,O penG L 提供了一个三维轮廓文本函数来实现三维轮廓文本。 wglU seFontO utlines (hdc,first,count,listBase,deviation,extrusion,form at,lpgm f)wglU seFontO utlines使得 O penG L 可以显 示三维文字。使用 wglU seFontO utlines()将 A SCII字符装入显示列表,然后使用 glCallLists()函数利用显示列表序列显 示文本,用这种方法显示英文字十分容易,只需几条语句即可实现显示英文字。于是就大胆设想是不是可以通过对 wglU seFontO utlines函数的改进,来使它也可显示汉字呢? 三维轮廓文本函数简介 wglU seFontO utlines有 8 个参数: hdc:字体轮廓设备联系 D C first:要转换为显示列表的第 1 个字符 count:要转换为显示列表的字符数 listBase:显示列表的基数 deviation:指定与实际轮廓的最大偏移量 extrusion:在 Z 轴负方向的值,它是立体字体具体表现 form at:显示的字体轮廓线格式,W G L_FO N T_LIN ES 则轮廓线为线段 - 空心,W G L_FO N T_PO LY G O N S 则轮廓线 是多边形 - 实心 收稿日期: 2006- 03- 31 作者简介: 许丽卿(1979- ), 女, 福建泉州人, 硕士, 助教。研究方向: 计算机图形仿真。 10 福建师范大学福清分校学报 2006 年 9 月 lpgm f:接受字符特性的地址(字形的位置和方向) 程序使用 giListBase()指定 glCallLists()执行的起始列表序列号。glCallLists()含有 3 个参数:执行列表序列的个数、 列表值的类型和所要显示的文本。由于三维轮廓文本只能显示 TrueType 字体,显示前应该先选择字体类型,字体名 需是 \W IN D O W S\FO N TS 下所列出的文件名,如 W ord、Excel中字体对话框中文字体下列表中选项。 在 O penG L 创建 3D 场景中,用此种方法显示汉字存在的问题 中文代码是双字节代码,wglU seFontO utlines函数与字符串函数一

文档评论(0)

1亿VIP精品文档

相关文档