游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3084|回复: 9

求教:关于在DX中使用stencil buffer的问题,急!

[复制链接]

65

主题

518

帖子

521

积分

高级会员

Rank: 4

积分
521
发表于 2006-3-29 15:54:00 | 显示全部楼层 |阅读模式
我想用stencil buffer把一个物体所占的像素们都记下来(stencilpass = replace并且stencilref = 0x1),然后到下一遍渲染时只渲染之前stencil buffer里面更改过的那些像素。

下面是render states的代码:

第一遍:
        ZEnable = true      
        ZWriteEnable = true;

        StencilEnable = true;
        StencilRef = 0x1;
        StencilMask = 0xffffffff;
        StencilWriteMask = 0xffffffff;
        StencilPass = REPLACE ;
        StencilFunc = ALWAYS;
        StencilZFail = KEEP;
        StencilFail = KEEP;  
        
        AlphaBlendEnable = false;
        
第二遍:
        ZEnable = false;
        AlphaBlendEnable = false;

        StencilEnable = true;
        StencilRef = 0x1;
        StencilMask = 0xffffffff;
        StencilWriteMask = 0xffffffff;
        StencilPass = KEEP;
        StencilFail = KEEP;
        StencilFunc = EQUAL;        

可是最后得到的结果却是所有像素都绘制了,stencil没起到蒙板的作用。这是为什么?
谢谢了先。 [em6] [em6]

65

主题

518

帖子

521

积分

高级会员

Rank: 4

积分
521
 楼主| 发表于 2006-3-29 16:05:00 | 显示全部楼层

Re:求教:关于在DX中使用stencil buffer的问题,急!

又验证了一下,发现前一遍对stencil buffer绘制的结果好像整个屏幕全都是0x1,可实际物体只占了屏幕之间很小一块面积。  还是找不着错误出在哪了,郁闷

65

主题

518

帖子

521

积分

高级会员

Rank: 4

积分
521
 楼主| 发表于 2006-3-29 17:30:00 | 显示全部楼层

Re:求教:关于在DX中使用stencil buffer的问题,急!

65

主题

518

帖子

521

积分

高级会员

Rank: 4

积分
521
 楼主| 发表于 2006-3-29 20:11:00 | 显示全部楼层

Re: 求教:关于在DX中使用stencil buffer的问题,急!

ScreenShot
sf_2006329201114.jpg

25

主题

134

帖子

134

积分

注册会员

Rank: 2

积分
134
发表于 2006-3-30 10:11:00 | 显示全部楼层

Re:求教:关于在DX中使用stencil buffer的问题,急!

不太懂,帮顶

65

主题

518

帖子

521

积分

高级会员

Rank: 4

积分
521
 楼主| 发表于 2006-3-30 11:33:00 | 显示全部楼层

Re:求教:关于在DX中使用stencil buffer的问题,急!

谢楼上。我再顶。

顺便问一下,一般最后一遍渲染完毕之后的渲染状态是不是应该手动调回最初时的状态?还是说end scenes之后到下一轮begin scenes就又重置为第一遍的状态了?

65

主题

518

帖子

521

积分

高级会员

Rank: 4

积分
521
 楼主| 发表于 2006-3-30 14:43:00 | 显示全部楼层

Re:求教:关于在DX中使用stencil buffer的问题,急!

经过一番调整,发现实际上第一遍确实有值写进stencil里面了,但好像写进去的对应像素位置不对。看起来好像是没有clear的那种随机数据。不过我后来为了验证那到底是不是因为没清空而产生的随机像素值就又加上了旋转场景,发现那乱七八糟的好像随机数据的东西也在‘转‘。问题的范围似乎由缩小了,可还是无法最后发现并解决。 高手们帮帮忙吧,谢谢了!

65

主题

518

帖子

521

积分

高级会员

Rank: 4

积分
521
 楼主| 发表于 2006-3-30 21:16:00 | 显示全部楼层

Re:求教:关于在DX中使用stencil buffer的问题,急!

难道使用stencil buffer就不能更换render target吗?!
刚才试了下把切换render target的部分都去了,即从头至尾只向一个render target输出颜色,发现那样的话得出的结果竟然对了!可一加上多render target就有不行了。而且使用多个depth/stencil buffer进行调换也没用。为什么?

65

主题

518

帖子

521

积分

高级会员

Rank: 4

积分
521
 楼主| 发表于 2006-3-31 03:37:00 | 显示全部楼层

Re: 求教:关于在DX中使用stencil buffer的问题,急!

终于先把效果调出来了,费劲啊。不过现在还没对水面上下的场景进行裁减,所以水面上浮的东西的边缘可能会出现不该有的波纹。下一步就该把原来的反射也加上了。
sf_20063313378.jpg

25

主题

134

帖子

134

积分

注册会员

Rank: 2

积分
134
发表于 2006-3-31 13:39:00 | 显示全部楼层

Re:求教:关于在DX中使用stencil buffer的问题,急!

恭喜楼主!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-24 01:13

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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