游戏开发论坛

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

物体是按顺序一件一件绘制的?

[复制链接]

4

主题

28

帖子

32

积分

注册会员

Rank: 2

积分
32
发表于 2008-8-20 18:47:00 | 显示全部楼层 |阅读模式
先画一批物体,清除深度缓存。
设置BLEND,再画第二批物体。

我想让第二批物体中的每一个都与 第一批物体形成的背景上 颜色混合,
但是第二批物体中的每一个之间应该是遮挡的。

结果是第二批物体中后画的(第i+1个)与先画的(第i个)混合了,
也就是说每新画一个,都会与之前所画的混合。

如果先画近的后画远的还可以掩饰过去,
但考虑到之后加上摄像漫游就不好办了(实时判断所有物体的远近好像很麻烦)。

请问有什么办法可以解决呢?

可能我表达的不是很清楚。
简单来说就是有两批物体;
每一批物体是正常的;
第一批物体和第二批物体整体颜色混合后后再输出。

有没有可能绘制完一个场景不显示,先存到某个地方,
再绘制第二个场景,然后再让这两个场景整体混合显示呢?
(比如两帧并一帧,有一帧不刷新,只要能实现,牺牲下速度也无所谓。)

请热心的朋友们帮忙!先谢谢了!
如果您比较忙,提供相关思路和推荐相关资料的朋友也同样感谢。

19

主题

638

帖子

638

积分

高级会员

Rank: 4

积分
638
发表于 2008-8-20 18:59:00 | 显示全部楼层

Re:[color=#66CC00]物体是按顺序一件一件绘制的?[/color]

画第二批时先只画一遍只画深度,然后再在深度检测相等的条件下画一遍颜色

4

主题

28

帖子

32

积分

注册会员

Rank: 2

积分
32
 楼主| 发表于 2008-8-21 09:58:00 | 显示全部楼层

Re: 物体是按顺序一件一件绘制的?

先谢谢LS的。

可能是我没弄明白您的解答;也可能是您没理解我的意思。
这里再把问题描述一遍:

如果传图能正常显示的话。

图1:红壶和蓝球正常(第一批物体)

然后:
Device->SetRenderState(D3DRS_ALPHABLENDENABLE, true);
Device->Clear(0, 0, D3DCLEAR_ZBUFFER, 0, 1.0f, 0);
Device->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_ONE);
Device->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE);

图2:绿壶和“第一批物体”颜色混合

图3:黄壶和“之前的”混合,这不是我想要的效果。   

图4:如果绿壶在黄壶前面,我想要的是这个效果。
也就是“第二批物体”先画近处的可以实现(当前视角下),
但是视角转到后面观察就如图3了。
sf_200882195740.jpg

4

主题

28

帖子

32

积分

注册会员

Rank: 2

积分
32
 楼主| 发表于 2008-8-21 09:59:00 | 显示全部楼层

上面是图4

上面是图4;
这里是图3。
(一次不能传多个图?)
sf_200882195922.jpg

4

主题

28

帖子

32

积分

注册会员

Rank: 2

积分
32
 楼主| 发表于 2008-8-21 10:02:00 | 显示全部楼层

图2

论坛上传真不好用,
下次得找个相册了存图了。
sf_20088211028.jpg

201

主题

1437

帖子

1963

积分

金牌会员

Rank: 6Rank: 6

积分
1963
QQ
发表于 2008-8-24 20:54:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

10

主题

88

帖子

88

积分

注册会员

Rank: 2

积分
88
发表于 2008-8-31 21:54:00 | 显示全部楼层

Re:物体是按顺序一件一件绘制的?

貌似透明材质

10

主题

88

帖子

88

积分

注册会员

Rank: 2

积分
88
发表于 2008-8-31 21:58:00 | 显示全部楼层

Re:物体是按顺序一件一件绘制的?

这是画透明材质的顺序,先画远的后画近的。要不不要用:

Device->SetRenderState(D3DRS_ALPHABLENDENABLE, true);
Device->Clear(0, 0, D3DCLEAR_ZBUFFER, 0, 1.0f, 0);
Device->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_ONE);
Device->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE);

保留:
Device->Clear(0, 0, D3DCLEAR_ZBUFFER, 0, 1.0f, 0);
就行
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-21 11:49

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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