游戏开发论坛

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

如何用DirectX来做文字描边的效果

[复制链接]

83

主题

169

帖子

202

积分

中级会员

Rank: 3Rank: 3

积分
202
发表于 2008-9-28 08:41:00 | 显示全部楼层 |阅读模式
如题

如果固定渲染管线不行,用GPU编程可以做吗?具体怎样做?

5

主题

46

帖子

55

积分

注册会员

Rank: 2

积分
55
QQ
发表于 2008-9-28 10:01:00 | 显示全部楼层

Re:如何用DirectX来做文字描边的效果

ps_1_1
def c0,1,1,1,1
def c1,0.8,0.1,0,0.1  //边的颜色
tex t0
mov r0,c1
sub r0.a,c0,t0
mul r0.a,r0,t0
add r0.a,r0,r0

这段代码可以只显示纹理中半透明的部分,可用于勾边.

5

主题

686

帖子

697

积分

高级会员

Rank: 4

积分
697
QQ
发表于 2008-9-28 11:08:00 | 显示全部楼层

Re:如何用DirectX来做文字描边的效果

可以先把文字绘制到纹理,然后以文字的中心为原点,将纹理放大一些后绘制,再将原始文字绘制在纹理上面,纹理中的内容就变成描边了
如果要用基于Post Processing的方法,那就是边缘检测和边缘增强,对lz的需求而言显得过于麻烦了

83

主题

169

帖子

202

积分

中级会员

Rank: 3Rank: 3

积分
202
 楼主| 发表于 2008-9-28 11:55:00 | 显示全部楼层

Re:如何用DirectX来做文字描边的效果

渲染到纹理的方法和以前有人说的那种先绘制一层文字再在下面用较大一点的字号绘制一次的做法是一样的。
这种方法我试过,它不能真正的做到文字描边的,只是乍一看好像是那样的。

5

主题

46

帖子

55

积分

注册会员

Rank: 2

积分
55
QQ
发表于 2008-9-28 17:59:00 | 显示全部楼层

Re:如何用DirectX来做文字描边的效果

放大的勾边效果不行,必须自己处理,或用PS向四周模糊一个像素
然后画两次就行了.
其实也不用GPU.
先用边的颜色画一次.
在设置一下AlphaTest函数,使其只绘制不透明部分;就是只绘制字的主体
再用字的颜色绘制一边

83

主题

169

帖子

202

积分

中级会员

Rank: 3Rank: 3

积分
202
 楼主| 发表于 2008-9-29 14:58:00 | 显示全部楼层

Re:如何用DirectX来做文字描边的效果

用PS向四周模糊一个像素是指的用photoshop处理吗。
如果是这样少量的文字是可以的,一旦游戏中存在大量的文字说明这样做就不太好了,尤其是要翻译成其它语言时就很麻烦了。

18

主题

971

帖子

982

积分

高级会员

Rank: 4

积分
982
发表于 2008-10-1 16:34:00 | 显示全部楼层

Re:如何用DirectX来做文字描边的效果

路过

5

主题

46

帖子

55

积分

注册会员

Rank: 2

积分
55
QQ
发表于 2008-10-6 08:12:00 | 显示全部楼层

Re:如何用DirectX来做文字描边的效果

很多游戏就是使用一张大的位图来保存文字的,如QQ幻想,中文版的空之轨迹。
位图中保存了所有的简体和繁体文字,可以显示所有想要的文字。
也可以使用FreeType或GDI生成文字后再处理一下边
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-21 04:19

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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