游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4514|回复: 10

在 DirectX9.0c 中,哪种方法才能又快又好的显示文字??

[复制链接]

21

主题

112

帖子

118

积分

注册会员

Rank: 2

积分
118
发表于 2009-3-11 22:06:00 | 显示全部楼层 |阅读模式
我在 DirectX9.0c 中做各种前期单元测试的时候,文字部分一直是用的 ID3DXFont,本来准备以后也把它做成文字类的,但是。。。就在刚才,我去逛别的论坛的时候,看见一篇介绍 DirectX 中显示中文的帖子,里面讲的是 DirectX8.1,里面说:ID3DXFont 非常慢。。。。。

我想知道,在 DirectX9.0c 中,这个 ID3DXFont 接口有改善吗??
如果没有,那我恐怕只有另寻他法了。。。

大家能把你们知道的最高效的,在 DirectX9.0c 中显示文字的方法吗??(当然包括汉字....)

19

主题

638

帖子

638

积分

高级会员

Rank: 4

积分
638
发表于 2009-3-11 22:42:00 | 显示全部楼层

Re:在 DirectX9.0c 中,哪种方法才能又快又好的显示文字??

纠正:ID3DXFont只在特定字体的特定情况下非常慢,汉字字体一般不受影响。

这个特定字体特定情况指:有些字体的字符组合不是单纯的两个字符连接,而是需要做特定的融合处理,为了正确显示,ID3DXFont必须为它们单独生成纹理。最典型的例子是阿拉伯语的字体。个别英文字体偶尔也有这个问题,如arial字体的j连续排列时。

0

主题

769

帖子

1052

积分

金牌会员

Rank: 6Rank: 6

积分
1052
发表于 2009-3-11 23:37:00 | 显示全部楼层

Re:在 DirectX9.0c 中,哪种方法才能又快又好的显示文字??

DX8和DX9的FONT是速度不是一个级别的
DX9快很多很多

21

主题

112

帖子

118

积分

注册会员

Rank: 2

积分
118
 楼主| 发表于 2009-3-11 23:41:00 | 显示全部楼层

Re:在 DirectX9.0c 中,哪种方法才能又快又好的显示文字??

这里是我刚才偶然看到的那个帖子的地址:
http://www.dingge.com/forum/dispbbs.asp?boardid=46&Id=10101

里面说 DirectX8.1 中的 ID3DXFont 接口为“龟速”。。。。

那么 DirectX9.0c 中的 ID3DXFont 接口可以作为渲染引擎的一部分了??

其实,我觉得英文最好处理了。。字符加起来就那么些。。。。

现在流行的游戏中,显示汉字是怎么处理的呢???
除了  ID3DXFont ,还有没有其他方法??说个大概就行。。。

59

主题

984

帖子

1200

积分

金牌会员

Rank: 6Rank: 6

积分
1200
发表于 2009-3-11 23:54:00 | 显示全部楼层

Re:在 DirectX9.0c 中,哪种方法才能又快又好的显示文字??

在实现自己的文字系统之前,最好先做做测试
比如,dx9的ID3DXFont比dx8快多少
你所希望的性能标准是什么,你的游戏中有多少文字,能否满足需要
然后再来决定做不做

基本上除了ID3DXFont就是马肝兄所说的那个方法了
下面是我的实现,xna版本,不过原理是一样的
http://blog.csdn.net/soilwork/archive/2008/11/19/3331641.aspx
http://blog.csdn.net/soilwork/archive/2008/12/02/3425034.aspx

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
发表于 2009-3-11 23:56:00 | 显示全部楼层

Re:在 DirectX9.0c 中,哪种方法才能又快又好的显示文字??

ID3DXFont已经很不错了,你也可以自己把字体渲染到纹理,放入缓存,然后copy出来组合成一个大纹理,然后ID3DXSprite到屏幕上,或公告牌上,这种做法效率不高,俺过去做过,而且纹理边缘锐利度不好,矛刺严重,还是ID3DXFont比较强一些,又简单,效率也很高

21

主题

112

帖子

118

积分

注册会员

Rank: 2

积分
118
 楼主| 发表于 2009-3-12 00:08:00 | 显示全部楼层

Re:在 DirectX9.0c 中,哪种方法才能又快又好的显示文字??

恩。。。听了 tonykee 兄弟的话,清楚多了。。。
不过,使用 ID3DXFont 的话,最后程序发布的时候,不是要带一个“d3dx9_XX.dll”??(XX根据SDK的版本不通而不同)
这个问题怎么解决??和程序一起发布??

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
发表于 2009-3-12 00:15:00 | 显示全部楼层

Re:在 DirectX9.0c 中,哪种方法才能又快又好的显示文字??

Dx高版本是向下兼容的,这个你完全放心好了,微软的一贯做法是增量更新,一般不会覆盖式更新他的动态库的,越高的版本d3dx9_XX.dll就越多,自己去window目录下看看就知道了

21

主题

112

帖子

118

积分

注册会员

Rank: 2

积分
118
 楼主| 发表于 2009-3-12 00:18:00 | 显示全部楼层

Re:在 DirectX9.0c 中,哪种方法才能又快又好的显示文字??

但是,我把程序发给别人的时候,他们的机器上经常弹出“缺少d3dx9_XX.dll”。。。。。他们貌似有 DirectX9 的运行库,可以运行其他需要 Dx 支持的最新的游戏。。。。

0

主题

769

帖子

1052

积分

金牌会员

Rank: 6Rank: 6

积分
1052
发表于 2009-3-12 09:07:00 | 显示全部楼层

Re: Re:在 DirectX9.0c 中,哪种方法才能又快又好的显示文字

draculamx: Re:在 DirectX9.0c 中,哪种方法才能又快又好的显示文字??

但是,我把程序发给别人的时候,他们的机器上经常弹出“缺少d3dx9_XX.dll”。。。。。他们貌似有 DirectX9 的运行库,可以运行其他需要 Dx 支持的最新的游戏。。。。

这个你得带过去吧,否则一般都是运行不了的,因为除了我们这些搞DX 编程的人谁会去下那么新的运行库呢
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-20 03:24

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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