VB OpenGL 汉字显示

原创 2004年07月17日 01:09:00

这两天公司有个项目要用ESRI 的ArcScene做三维,但是中文道路名要用扩展模块才能写不上去。

ESRI在方便用户和开发人员角度和微软很象,跟新技术也跟得很紧,提供了大量的示例程序,找了一个写文字的程序看了一下,它通过OpenGL写上去的。我听说过OpenGL只有C接口,没想到VB也能写OpenGL得东东。原来是有人做了一个OpenGL的类型库vbogl.tlb,本机上没有到网上一搜找到了这个网站http://home.pacific.net.hk/%7Eedx/

   原本以为万事大吉了,没想到麻烦事才刚刚开始。外国人提供的源程序当然是写西文的,没想到把它改写成能显示中文费了如此大的劲。我对OpenGL不熟悉,看了好几个例子才写TrueType文字是怎么回事。先用wglUseFontOutlines函数创建glyph也叫显示列表(Display list),相当于一个小的矢量图形,然后调用glCallLists把它画出来。每个glyph创建时都有一个编号,以后通过这个编号来引用它。该编号与文字的编码如ASCII或汉字内码没有任何必然的联系,因为西文字符集小,所以很多例子都是先生成所有可显示西文字符的glyph,然后直接用字符串来引用这些glyph。这样做给我理解上制造了不少麻烦,汉字字符集太大不可能所有汉字都生成对应的glyph。

  后来在网上找到一个VC写的能显示3D中文字符的代码片断,它是一个一个字符处理的,当初觉得很奇怪,因为西文字符串都是成批处理的,中西文或纯中文必须一个一个处理。后来终于明白了,原来是这么这么回事,给字符串中每个字符生成一个独立的glyph。VC中可以了,转到VB中来,原本以为问题不是很大,没想到折腾了一天。

VB内部对字符串表示用BSTR,编码是Unicode的。OpenGL没有Unicode版只有ANSI版,麻烦事来了。想了各种办法就是不出来汉字,后来发现是编码不对。VC中没有定义UNICODE默认是DBCS,中文环境下是GBK编码。比如“中国”Unicode是“0x4E2D56FD”,而GBK编码是“0xD6D0B9FA”。必须把VB中的Unicode转换成GBK吗才能正确显示。有两种办法一种是调用API函数WideCharToMultiByte来转,但在VB中还有一个更简单的办法就是调用全局函数StrConv(s, vbFromUnicode)返回一个GBK编码的字节数组。这样就可以了。

VB OpenGL绘图 -------我的第一个VB6.0 OpenGL程序

要想在VB6.0中使用OpenGL绘图,必须先下载一个SDK,名字叫vbogl.tlb。我用的版本是2.1,这个月要出3.0版本的了。下载该文件后,直接在VB6.0“工程”-“引用”里面引用1、在fo...
  • kxshflyingbird
  • kxshflyingbird
  • 2009年09月18日 07:03
  • 2531

VB+OpenGL做的三维地球仪源程序

  • 2009年04月18日 13:17
  • 1.52MB
  • 下载

VB 开发用 OpenGL 控件及下载

  • 2008年12月20日 15:22
  • 538KB
  • 下载

OpenGL中的汉字显示

void COpenGLDemoView::glDrawString(unsigned char *str){    GLYPHMETRICSFLOAT pgmf[1];    HDC hDC=w...
  • phinecos
  • phinecos
  • 2007年08月25日 15:55
  • 643

opengl学习笔记(二)---中文显示

此方法中用到了glut,freeglut, freetype等库 1.显示英文字符 Opengl 显示英文字符相对做的处理要少一点,可以用glut封装的函数在屏幕上显示英文字符; //...
  • tomtc123
  • tomtc123
  • 2013年04月21日 12:40
  • 3389

十大OPENGL教程

1.http://nehe.gamedev.net/     这个是我觉得全世界最知名的OpenGL教程,而且有网友将其中48个教程翻译成了中文http://www.owlei.com/Danc...
  • zhuangxiaobin
  • zhuangxiaobin
  • 2016年10月19日 20:57
  • 2142

VB中利用OpenGL绘制三维地质构造图

VB中利用OpenGL绘制三维地质构造图2006年11月09日 星期四 07:53 P.M. (一) 摘要...
  • holyboy
  • holyboy
  • 2007年02月23日 10:13
  • 1267

在OpenGL中显示TrueType汉字(转)

  • dijkstar
  • dijkstar
  • 2006年05月03日 12:07
  • 1093

vb实现汉字点阵字模的提取

对于HZK16字库里的16×16汉字(其实只用到了16×15,即16行15列,最后1列是空白的,但是作为GBK汉字,则使用了最后这一列)来说一共需要256个点来显示一个普通的汉字,那么共需要32个字节...
  • clisyer
  • clisyer
  • 2007年10月18日 09:23
  • 718

VB OpenGL 汉字显示

这两天公司有个项目要用ESRI 的ArcScene做三维,但是中文道路名要用扩展模块才能写不上去。ESRI在方便用户和开发人员角度和微软很象,跟新技术也跟得很紧,提供了大量的示例程序,找了一个写文字的...
  • complayer
  • complayer
  • 2004年07月17日 01:09
  • 4406
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VB OpenGL 汉字显示
举报原因:
原因补充:

(最多只允许输入30个字)