游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4005|回复: 11

请教:关于Terrain multitexturing and alpha masks

[复制链接]

16

主题

83

帖子

103

积分

注册会员

Rank: 2

积分
103
QQ
发表于 2005-9-23 13:31:00 | 显示全部楼层 |阅读模式
我用D3D下的 single pass multi-texturing.实现多重地貌.如下计算:
Grass tex + mask, a Mud tex + mask, a Road tex + mask
mask是Alpha图。理论上只要显卡支持multi-texturing就可以了。
可是,我调试了很久就是不显示。请教高手~~~谢谢了

我想实现这样的效果:

63

主题

871

帖子

891

积分

高级会员

Rank: 4

积分
891
QQ
发表于 2005-9-23 13:48:00 | 显示全部楼层

Re:请教:关于Terrain multitexturing and alpha masks

看不到图

33

主题

118

帖子

173

积分

注册会员

Rank: 2

积分
173
发表于 2005-9-23 14:04:00 | 显示全部楼层

Re:请教:关于Terrain multitexturing and alpha masks

没有看到效果图不好说,不过很多效果单单使用single pass multi-texturing是实现不了的,必须使用multi-pass multi-texturing才能实现,自己再改动一下试试

15

主题

1268

帖子

1268

积分

金牌会员

Rank: 6Rank: 6

积分
1268
发表于 2005-9-23 14:55:00 | 显示全部楼层

Re:请教:关于Terrain multitexturing and alpha masks

固定管线对贴图层数有限制,ATI9550固定管线只支持3层,可编程管线就宽松一些.GF4我用过,只有2层,在往上加好像没用,也许我比较本

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2005-9-23 15:11:00 | 显示全部楼层

Re:请教:关于Terrain multitexturing and alpha masks

可能你的stagestate设置的有点问题。。

16

主题

83

帖子

103

积分

注册会员

Rank: 2

积分
103
QQ
 楼主| 发表于 2005-9-23 15:24:00 | 显示全部楼层

Re:请教:关于Terrain multitexturing and alpha masks

to dreams:使用multi-pass 还要再传输一遍position和normal等数据,效率就下来了.像这样多纹理的情况一般怎么解决呢?
to Civilian :我是用GetDeviceCaps(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, &caps);
得到的 caps.MaxTextureBlendStages == 8 ,我的显卡是GF4 MX440 AGP8,这个值是贴图上限吧?

16

主题

83

帖子

103

积分

注册会员

Rank: 2

积分
103
QQ
 楼主| 发表于 2005-9-23 15:35:00 | 显示全部楼层

Re:请教:关于Terrain multitexturing and alpha masks

//!设置渲染状态
g3D->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
g3D->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
g3D->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
//!设置多层纹理状态
g3D->setTextureState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
g3D->setTextureState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);

g3D->setTextureState(1, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
g3D->setTextureState(1, D3DTSS_COLORARG1, D3DTA_CURRENT);
g3D->setTextureState(1, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);
g3D->setTextureState(1, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);

g3D->setTextureState(2, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);
g3D->setTextureState(2, D3DTSS_ALPHAARG1, D3DTA_CURRENT);
g3D->setTextureState(2, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
g3D->setTextureState(2, D3DTSS_COLORARG1, D3DTA_TEXTURE);
//!设置纹理坐标对应的索引。
g3D->setTextureState(1, D3DTSS_TEXCOORDINDEX, 0);
g3D->setTextureState(2, D3DTSS_TEXCOORDINDEX, 0);

应该没问题。我用2层是好使得。3层就不行了

15

主题

1268

帖子

1268

积分

金牌会员

Rank: 6Rank: 6

积分
1268
发表于 2005-9-23 16:07:00 | 显示全部楼层

Re: Re:请教:关于Terrain multitexturing and alpha masks

arvent: Re:请教:关于Terrain multitexturing and alpha masks

to dreams:使用multi-pass 还要再传输一遍position和normal等数据,效率就下来了.像这样多纹理的情况一般怎么...

你错了,这个是不可用的贴图通道上限,不信你试试,弄块TNT2,你也查查这数据,看是不是8,ATI9550也是8,固定管线设计上最大就支持8

16

主题

83

帖子

103

积分

注册会员

Rank: 2

积分
103
QQ
 楼主| 发表于 2005-9-23 17:21:00 | 显示全部楼层

Re:请教:关于Terrain multitexturing and alpha masks

原来这是样~_~,多谢Civilian,多谢大家啦!

15

主题

1268

帖子

1268

积分

金牌会员

Rank: 6Rank: 6

积分
1268
发表于 2005-9-23 17:45:00 | 显示全部楼层

Re:请教:关于Terrain multitexturing and alpha masks

你再问问别人,我也是凭经验,不一定对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-27 22:00

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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