游戏开发论坛

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

弱弱地问下,游戏里角色的名字怎么画?

[复制链接]

5

主题

53

帖子

109

积分

注册会员

Rank: 2

积分
109
发表于 2009-11-23 21:00:00 | 显示全部楼层 |阅读模式
应该是用公告牌(BILLBOARD),或者有没有必要用公告牌,或者用其他技术解决。
ID3DXSprite可以用公告牌,但是需要Texture,ID3DXFONT可以画文字,却不是Texture。。
哪位详细告诉下,谢谢。最好直接给我个最简单的源代码 [em20]

7

主题

55

帖子

55

积分

注册会员

Rank: 2

积分
55
发表于 2009-11-24 09:27:00 | 显示全部楼层

Re:弱弱地问下,游戏里角色的名字怎么画?

ID3DXFONT不是Texture?

5

主题

53

帖子

109

积分

注册会员

Rank: 2

积分
109
 楼主| 发表于 2009-11-24 14:23:00 | 显示全部楼层

Re:弱弱地问下,游戏里角色的名字怎么画?

// 将文字画到ID3DXSprite精灵上
m_pFont->DrawTextA(m_pSpr,"The World II",-1,
                &rect,DT_CENTER,D3DCOLOR_XRGB(0,255,0));
//绘制精灵
m_pSpr->Begin(D3DXSPRITE_BILLBOARD | D3DXSPRITE_ALPHABLEND);
//  error C2664: “ID3DXSprite:raw”: 不能将参数 1 从“ID3DXFont *”转换为“LPDIRECT3DTEXTURE9”
m_pSpr->Draw(m_pFont,NULL,NULL,NULL,0xF000FF00);
m_pSpr->End();

ID3DXFont 不是Texture啊。。。。。

0

主题

769

帖子

1052

积分

金牌会员

Rank: 6Rank: 6

积分
1052
发表于 2009-11-26 19:02:00 | 显示全部楼层

Re:弱弱地问下,游戏里角色的名字怎么画?

文字到了最后渲染出来还不一样的TEXTURE?
不过是ID3DXFONT封装起来而已

如果不用广告牌可以考虑使用FVF_XYZTHW绘制,这样名字不会因为角色距离远近而产生变大或变小,可以保持显示清晰

14

主题

345

帖子

376

积分

中级会员

Rank: 3Rank: 3

积分
376
QQ
发表于 2009-11-26 23:17:00 | 显示全部楼层

Re:弱弱地问下,游戏里角色的名字怎么画?

自己写个ID3DXFONT

59

主题

984

帖子

1200

积分

金牌会员

Rank: 6Rank: 6

积分
1200
发表于 2009-11-27 00:33:00 | 显示全部楼层

Re:弱弱地问下,游戏里角色的名字怎么画?

不需要用billboard,如果用ID3DXFont的话也不必直接使用ID3DXSprite
把角色位置变换到屏幕坐标,根据距离计算字体大小,然后drawstring或者当做最简单的lable控件来做

3

主题

263

帖子

267

积分

中级会员

Rank: 3Rank: 3

积分
267
发表于 2009-12-5 11:53:00 | 显示全部楼层

Re:弱弱地问下,游戏里角色的名字怎么画?

呵呵,我只大致看过Ogre的文字渲染,貌似是把文字渲染到纹理然后用文字编码来计算UV,好像很多游戏都这样做的.

有些游戏用的是UI型的文字,就是计算出角色的屏幕坐标然后用UI系统来渲染文字,比如用CEGUI来渲染名字.
这个是浮在最上层的文字,用的是正交投影,不像前一种跟世界内的物体一样距离远了会变小.
也不会被世界内的物体遮挡."不管名字长不长PK时躲在树后总是会被发现"...
这2个额外的问题基本上都可以解决掉,多加一些处理就行.
楼上说的也是这种类似的,原理都一样.

23

主题

59

帖子

59

积分

注册会员

Rank: 2

积分
59
发表于 2010-4-20 18:49:00 | 显示全部楼层

Re:弱弱地问下,游戏里角色的名字怎么画?

m_pPanle->Begin(D3DXSPRITE_ALPHABLEND );
                m_pPanle->Draw(m_pTexture,NULL,NULL,null,0xffffffff);
                m_pPanle->Flush();
                m_pFont->DrawText(m_pPanle,Text,-1,&rect,format,color);
                m_pPanle->End();
                m_pDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,false);
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-15 00:01

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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