游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4390|回复: 7

怎样在OpenGL中使用中文(采用utf8编码)?

[复制链接]

46

主题

63

帖子

65

积分

注册会员

Rank: 2

积分
65
发表于 2003-12-3 20:25:00 | 显示全部楼层 |阅读模式
我以前在一个国外的软件中看见可以直接输入中文,不过字体不能改。
看来在OpenGL中直接使用中文是可能的(请注意我指的不是自建字体库!)
请问哪位高手有辙?
快愁死偶了!

10

主题

60

帖子

70

积分

注册会员

Rank: 2

积分
70
QQ
发表于 2003-12-3 22:16:00 | 显示全部楼层

Re: 怎样在OpenGL中使用中文(采用utf8编码)?

不管是D3D还是OpenGL.
显示中文的办法都可以用贴图来做.

说简单点就是即时抓图.
事先不可能知道你要显示哪个字,所以须即时创建一张空的贴图.
把字用DrawText()显示出来,再抓图抓到新建的贴图上去.
然后存到字库里.(我用的是vector存)
创建字的时候速度慢点,但只要创建出这个字的贴图,以后的速度就快得多了.这种做法各种字体都是可以的.

具体代码可以参考DirectX的d3dfont.cpp
OpenGL也是一样的做法.

我用的也是OpenGL.
Look.
sf_2003123221654.jpg

46

主题

63

帖子

65

积分

注册会员

Rank: 2

积分
65
 楼主| 发表于 2003-12-4 17:11:00 | 显示全部楼层

Re:怎样在OpenGL中使用中文(采用utf8编码)?

非常巧妙!!!
这么说连字体也可以改了!

请问哪儿有相关的示例可供参考?
非常感谢!

16

主题

172

帖子

177

积分

注册会员

Rank: 2

积分
177
QQ
发表于 2003-12-4 20:12:00 | 显示全部楼层

Re:怎样在OpenGL中使用中文(采用utf8编码)?

其实OpenGL显示一些平面中文 基本都用纹理来实现这样很方便而且实际

不过这样做也可以(速度很慢):(
procedure TForm1.glDrawString(str: string {一个中文串});
var
  fGlyphMetricsFloat: TGlyphMetricsFloat;
  fChar: DWord;
  i, j, ListNum: integer;
  DC: HDC;
begin
  DC := wglGetCurrentDC;
  FillChar(fGlyphMetricsFloat, SizeOf(TGlyphMetricsFloat), 0);
  j := 0;
  for i := 0 to Length(str) - 1 do
  begin
    if IsDBCSLeadByte(Byte(str[j])) then
    begin
      fChar := DWORD((Byte(str[j]) shl 8) or Byte(str[j + 1]));
      j := j + 1;
    end
    else fChar := DWORD(Byte(str[j]));
    j := j + 1;
    if fChar = 0 then continue;
    ListNum := glGenLists(1);
    wglUseFontOutlines(DC, fChar, 1, ListNum, 0.0, 0.1, WGL_FONT_POLYGONS, @fGlyphMetricsFloat);
    glCallList(ListNum);
    glDeleteLists(ListNum, 1);
  end;
end;

[em7]

10

主题

60

帖子

70

积分

注册会员

Rank: 2

积分
70
QQ
发表于 2003-12-4 20:15:00 | 显示全部楼层

Re:怎样在OpenGL中使用中文(采用utf8编码)?

建议去看一下
千里马肝写的<<汉字显示技巧>>
不错的东西.
http://www.tlovexyj.com

10

主题

60

帖子

70

积分

注册会员

Rank: 2

积分
70
QQ
发表于 2003-12-4 20:41:00 | 显示全部楼层

Re: 怎样在OpenGL中使用中文(采用utf8编码)?

马肝开源了一个叫dracula的东西.
去看bitmapfont.cpp

另外我这找到一个.
我就是从这个里学来的.
n年前就在拿铁里发过的东西了.
找了半天,好不容易才翻出来.
收藏吧.

sf_200312420416.zip

42.04 KB, 下载次数:

46

主题

63

帖子

65

积分

注册会员

Rank: 2

积分
65
 楼主| 发表于 2003-12-5 23:14:00 | 显示全部楼层

Re:怎样在OpenGL中使用中文(采用utf8编码)?

非常感谢两位

4

主题

140

帖子

140

积分

注册会员

Rank: 2

积分
140
发表于 2003-12-6 17:01:00 | 显示全部楼层

Re:怎样在OpenGL中使用中文(采用utf8编码)?

不错
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-4-21 23:38

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表