游戏开发论坛

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

请教 关于z-buffer的问题

[复制链接]

46

主题

238

帖子

238

积分

中级会员

Rank: 3Rank: 3

积分
238
发表于 2005-3-6 21:26:00 | 显示全部楼层 |阅读模式
请问:
       在DX中是否有方法可以把场景渲染到z-buffer中,而在应用程序中对其中的任意象素的信息由x,y进行读取(不是在PS中 ),或者把深度信息渲染到一个纹理表面,但是可以不在PS中对其进行寻址吗。 谢谢 [em4]

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2005-3-6 21:54:00 | 显示全部楼层

Re:请教 关于z-buffer的问题

SetDepthStencilSurface
然后渲染完从surface获得一张贴图即可


6

主题

444

帖子

457

积分

中级会员

Rank: 3Rank: 3

积分
457
发表于 2005-3-7 13:16:00 | 显示全部楼层

Re:请教 关于z-buffer的问题

不推荐这样做,因为会严重影响性能。

46

主题

238

帖子

238

积分

中级会员

Rank: 3Rank: 3

积分
238
 楼主| 发表于 2005-3-7 13:23:00 | 显示全部楼层

Re: Re:请教 关于z-buffer的问题

请问我应该如何处理?关键问题是即使得到Suface,怎么可以从外部读取里面的象素?

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2005-3-7 13:31:00 | 显示全部楼层

Re:请教 关于z-buffer的问题

和渲染到贴图的方法一样,如果你要改像素的话,则会慢很多,需要另外再建一个内存里的surface,然后通过copyrects(dx9里面是updatesurface)把数据从显存中拷到内存中,然后再lock出来读写。如果渲染出来的图很小的话,效率影响很低。

不过一定要注意,渲染出来的surface一定不能直接读,否则速度会立刻降到2-5帧/s,拷贝出来再读写的话,则可以稳定保持在100帧以上。

85

主题

824

帖子

878

积分

高级会员

Rank: 4

积分
878
QQ
发表于 2005-3-7 14:58:00 | 显示全部楼层

Re: Re:请教 关于z-buffer的问题

hourousha: Re:请教  关于z-buffer的问题

不推荐这样做,因为会严重影响性能。

用SetDepthStencilSurface会使速度下降40%,
当这并不能成为不用它理由,
为了达到某种效果,
就应该“不择手段”

6

主题

444

帖子

457

积分

中级会员

Rank: 3Rank: 3

积分
457
发表于 2005-3-7 16:32:00 | 显示全部楼层

Re:请教 关于z-buffer的问题

楼上的等于没说……我的意思是尽量不要将渲染流程打断(GPU渲染->CPU读取RenderTarget-〉GPU继续渲染)这种方式效率很低。因为CPU和GPU的并行被打破了。

46

主题

238

帖子

238

积分

中级会员

Rank: 3Rank: 3

积分
238
 楼主| 发表于 2005-3-7 17:09:00 | 显示全部楼层

Re:请教 关于z-buffer的问题

是我在处理NPR时判断轮廓边的VISIBILITY的时候遇到的问题,不知道如何在外部读取场景的深度信息来判断一个顶点的可见性,不能用Ps,否则不能裹上笔触。

46

主题

238

帖子

238

积分

中级会员

Rank: 3Rank: 3

积分
238
 楼主| 发表于 2005-3-7 18:13:00 | 显示全部楼层

Re:请教 关于z-buffer的问题

请问是用IDirect3DSurface9:ockRect 吗,但是我该如何对Surface的一个特定的象素进行访问呢 (如第26行,37列的那个象素)?

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2005-3-7 20:50:00 | 显示全部楼层

Re:请教 关于z-buffer的问题

Lock出来之后的结构中有一个pBits,如果你想访问26行37列的像素的话就是
(Your_Vertex *)((BYTE *)rect.pBits[26 * rect.Pitch + 37 * (rect.Pitch / screen_width)]);

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

本版积分规则

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

GMT+8, 2025-12-24 17:07

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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