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编码的字节数组。这样就可以了。

[置顶]OpenGL11-绘制汉字最高效方法(使用Freetype)(代码已更新)

最新版本,之前的版本有些文件没有打包    OpenGL本身并没有绘制文字的功能,他只是一个三维绘图的API集和,很多东西都要 自己动手才可以实现。OpenGL绘制文字,网络上已经有很多成熟的方...
  • qq_26280299
  • qq_26280299
  • 2015年07月03日 15:03
  • 1343

【OpenGL游戏开发之五】freetype2 显示汉字

1.FreeType2 是什么?    它是一个为各种应用程序提供通用的字体文件访问的软件包。尤其值得注意的以下特性:提供统一的字体文件访问接口。支持位图和向量格式,包括 TrueType 、 Ope...
  • my183100521
  • my183100521
  • 2014年03月12日 16:15
  • 4305

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

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

OpenGL汉字显示类

  • 2013年12月24日 16:57
  • 87KB
  • 下载

OpenGL显示旋转三维汉字和英文字符。

  • 2015年01月15日 17:41
  • 29KB
  • 下载

openGL学习笔记5 显示汉字

五、显示汉字
  • qq402335257
  • qq402335257
  • 2014年08月21日 11:38
  • 399

OpenGL显示文字--显示汉字

原则上,显示中文和显示英文并无不同,同样是把要显示的字符做成显示列表,然后进行调用。 但是有一个问题,英文字母很少,最多只有几百个,为每个字母创建一个显示列表,没有问题。但是汉字有非常多个,如果每个...
  • zhouhangjay
  • zhouhangjay
  • 2011年08月24日 16:00
  • 898

OpenGL显示文字--显示汉字

OpenGL显示文字--显示汉字    原则上,显示中文和显示英文并无不同,同样是把要显示的字符做成显示列表,然后进行调用。 但是有一个问题,英文字母很少,最多只有几百个,为每个字母创建...
  • u014047672
  • u014047672
  • 2017年05月10日 09:45
  • 612

汉字点阵显示上位机部分(VB.NET)

  • 2009年07月13日 15:22
  • 767KB
  • 下载

java和vb进行socket通信以及java与c/c++/oc 进行socket通信时汉字字符串编码问题解决

java和vb进行socket 以及java与c/c++/oc 进行socket通信时汉字字符串编码问题解决 我遇到的是 java 编码字符集采用 UTF-8 编码字符采用2+字符 我测试的代码如下...
  • vpingchangxin
  • vpingchangxin
  • 2013年05月17日 00:09
  • 2028
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VB OpenGL 汉字显示
举报原因:
原因补充:

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