游戏开发论坛

 找回密码
 立即注册
搜索
查看: 6301|回复: 13

请问 关于zbuffer

[复制链接]

46

主题

238

帖子

238

积分

中级会员

Rank: 3Rank: 3

积分
238
发表于 2005-4-5 15:44:00 | 显示全部楼层 |阅读模式
请问:
      在渲染一次场景后g_pd3dDevice->GetDepthStencilSurface(&g_pSDepth);后
D3DLOCKED_RECT LockedRect;
g_pSDepth-> LockRect(&LockedRect,  NULL,0);
D3DSURFACE_DESC surfaceDesc;
g_pSDepth->GetDesc(&surfaceDesc);
word* imageData = (word*)LockedRect.pBits;
imageData[n]是word啊
但是经过管线后得到的每个象素的z应该是float吧  
我在 D3DXVec3Project(&pro,&pos ,&g_pViewPort ,  
        &g_pmatp,    &g_pmatv,    &g_pmatw);
得到的pro.z是float 无法和imageData[n]做比较 怎么办呢

以float* imageData = (float*)LockedRect.pBits;方式,调试时还是报错。
imageData[n] =-1.#QNAN,是怎么回时啊
[em4] [em4] [em4]

46

主题

238

帖子

238

积分

中级会员

Rank: 3Rank: 3

积分
238
 楼主| 发表于 2005-4-6 11:13:00 | 显示全部楼层

Re:请问 关于zbuffer

哦? 没有人顶吗 那我自己顶下

20

主题

473

帖子

502

积分

高级会员

Rank: 4

积分
502
发表于 2005-4-6 11:14:00 | 显示全部楼层

Re:请问 关于zbuffer

g_pSDepth-> LockRect(&LockedRect,  NULL,0);

看这一句的返回值,首先确定是不是lock成功了

11

主题

114

帖子

118

积分

注册会员

Rank: 2

积分
118
QQ
发表于 2005-4-6 14:26:00 | 显示全部楼层

Re:请问 关于zbuffer

如果深度格式为D16,那么它当然是WORD型(16位)的,但是经过管线后得到的每个象素的z是当前像素的实际深度值,所以要把这个z映射到深度格式的范围内。float* imageData = (float*)LockedRect.pBits这样霸王硬上弓是不行迪

46

主题

238

帖子

238

积分

中级会员

Rank: 3Rank: 3

积分
238
 楼主| 发表于 2005-4-6 14:34:00 | 显示全部楼层

Re: Re:请问 关于zbuffer

DrawPixel: Re:请问 关于zbuffer

如果深度格式为D16,那么它当然是WORD型(16位)的,但是经过管线后得到的每个象素的z是当前像素的实际深度...

g_pSDepth-> LockRect(&LockedRect,  NULL,0);
是成功了的


关键是怎么才能把这个z映射到深度格式的范围内,也就是我lock出来的imageData[n]怎么转换成经过管线后得到的实际深度值。

经过管线后得到的每个象素的深度值是怎么被储存成WORD的啊? [em4] [em4] [em4] [em4] [em4]

6

主题

444

帖子

457

积分

中级会员

Rank: 3Rank: 3

积分
457
发表于 2005-4-6 14:41:00 | 显示全部楼层

Re:请问 关于zbuffer

z-buffer中的数值不是float格式……

11

主题

114

帖子

118

积分

注册会员

Rank: 2

积分
118
QQ
发表于 2005-4-6 15:48:00 | 显示全部楼层

Re:请问 关于zbuffer

我感觉lock出来的imageData[n]是不能转换成实际深度值的
想获得像素深度值要在PS里做

46

主题

238

帖子

238

积分

中级会员

Rank: 3Rank: 3

积分
238
 楼主| 发表于 2005-4-6 16:19:00 | 显示全部楼层

Re:请问 关于zbuffer

那管线在做深度剔除的时候是怎么做的嘛    还不是在算出象素的深度   和zbuffer比较   

46

主题

238

帖子

238

积分

中级会员

Rank: 3Rank: 3

积分
238
 楼主| 发表于 2005-4-6 16:23:00 | 显示全部楼层

Re: Re:请问 关于zbuffer

[quote]
[b]hourousha: Re:请问 关于zbuffer[/b]

z-buffer中的数值不是float格式……

[/quote]
但是在vs中投影后输出到oPos.z的 还是float啊  [em24] [em24]

关键是这个问题应该怎么解决啊:

46

主题

238

帖子

238

积分

中级会员

Rank: 3Rank: 3

积分
238
 楼主| 发表于 2005-4-6 16:24:00 | 显示全部楼层

Re: Re:请问 关于zbuffer

hourousha: Re:请问 关于zbuffer

z-buffer中的数值不是float格式……

但是在vs中投影后输出到oPos.z的 还是float啊  [em24] [em24]

关键是这个问题应该怎么解决啊:
我在 D3DXVec3Project(&pro,&pos ,&g_pViewPort ,  
        &g_pmatp,    &g_pmatv,    &g_pmatw);
得到的pro.z是float 无法和imageData[n]做比较   [em6] [em6]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-25 04:41

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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