游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4196|回复: 6

DirectX中 如何为一个模型设置透明贴图??

[复制链接]

1

主题

12

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2003-12-26 18:06:00 | 显示全部楼层 |阅读模式
我想为粒子设置烟雾贴图,请问如何DirectX中 如何为一个模型(如球体)设置透明贴图??

1

主题

12

帖子

12

积分

新手上路

Rank: 1

积分
12
 楼主| 发表于 2003-12-26 18:40:00 | 显示全部楼层

Re:DirectX中 如何为一个模型设置透明贴图??

哪位高手能告诉我呀??

14

主题

28

帖子

45

积分

注册会员

Rank: 2

积分
45
发表于 2003-12-27 14:45:00 | 显示全部楼层

Re:DirectX中 如何为一个模型设置透明贴图??

你可以用 point system

6

主题

74

帖子

100

积分

注册会员

Rank: 2

积分
100
发表于 2003-12-29 14:10:00 | 显示全部楼层

Re:DirectX中 如何为一个模型设置透明贴图??

settexture

13

主题

145

帖子

149

积分

注册会员

Rank: 2

积分
149
发表于 2003-12-30 14:35:00 | 显示全部楼层

Re:DirectX中 如何为一个模型设置透明贴图??

alpha test或者alpha blend。如果图片没有alpha通道,可以用CreateTextureFromFileEx()创建纹理。这样可以把颜色值为关键色的象素点的alpha值设为你指定的值(假设你指定为0x00000000)。
然后用alpha test:
      pd3ddv->SetRenderState(D3DRS_ALPHATESTENABLE, TRUE);
      pd3ddv->SetRenderState(D3DRS_ALPHAREF,(DWORD)0x00000001);
      pd3ddv->SetRenderState(D3DRS_ALPHAFUNC,D3DCMP_GREATEREQUAL);
就ok了,函数的具体意义请参照sdk。
用alpha blend也可以:
      pd3ddv->SetRenderState(D3DRS_ALPHABLENDENABLE,TRUE);
      pd3ddv->SetRenderState(D3DRS_SRCBLEND,D3DBLEND_SRCALPHA);
      pd3ddv->SetRenderState(D3DRS_DESTBLEND,D3DBLEND_INVSRCALPHA);
但是test比blend快。
如果贴图本身就有alpha通道,那就更容易了。

13

主题

145

帖子

149

积分

注册会员

Rank: 2

积分
149
发表于 2003-12-30 14:40:00 | 显示全部楼层

Re:DirectX中 如何为一个模型设置透明贴图??

我不知道怎样把alpha blend的D3DRS_SRCBLEND和D3DRS_DESTBLEND设成任意值。
也就是说:
float fSrc = 0.0f;
pd3ddv->SetRenderState(D3DRS_SRCBLEND,fSrc);
fSrc可能随时会变化,这样写肯定是不行的。
怎么样达到这个效果?哪位知道能不能讲一下。

23

主题

102

帖子

102

积分

注册会员

Rank: 2

积分
102
发表于 2008-2-27 17:22:00 | 显示全部楼层

Re:DirectX中 如何为一个模型设置透明贴图??

ChenA的做法 我试了一下

模型的确是变成透明的了,可是为什么移动鼠标时 会看到很多白色的不规则条纹呢?移动鼠标就跟到变化,怎么去掉呢?

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

本版积分规则

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

GMT+8, 2025-12-20 06:05

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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