游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3038|回复: 6

dx中如何判断物体的遮挡关系?

[复制链接]

16

主题

114

帖子

114

积分

注册会员

Rank: 2

积分
114
发表于 2007-4-26 17:25:00 | 显示全部楼层 |阅读模式
在场景中,由于存在空间概念,所以不能光用z值来判断。
在opengl中

        // this asks OGL to guess the 2d position of a 3d point inside the viewport
        gluProject(p.x, p.y, p.z, mvmatrix, projmatrix, viewport, &winx, &winy, &winz);
        flareZ = winz;

        // we read back one pixel from th depth buffer (exactly where our flare should be drawn)
        glReadPixels(winx, winy,1,1,GL_DEPTH_COMPONENT, GL_FLOAT, &bufferZ);

比较flareZ 和 bufferZ来判断是否被遮挡。

在 dx 中,是否有类似的函数?

还有再问一下 pos*WorldMatrix * ViewMatrix * projectMatrix 得到的是不是就是屏幕坐标了,比如800*600屏幕中的 s_x = 200,s_y =300;之类的?         

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2007-4-28 10:03:00 | 显示全部楼层

Re:dx中如何判断物体的遮挡关系?

1.可以回读 z buffer 。
2.得到的是规范视见体空间的坐标,而不是屏幕坐标,这个坐标的xy在 1~-1之间,z在0~1之间(opengl),1~-1(dx),所以还需要经过 viewport 变换才能得到屏幕坐标。

16

主题

114

帖子

114

积分

注册会员

Rank: 2

积分
114
 楼主| 发表于 2007-4-29 13:07:00 | 显示全部楼层

Re:dx中如何判断物体的遮挡关系?

dx 中有那些函数是关于 z buffer操作的? 诶,api不熟悉啊。

6

主题

307

帖子

309

积分

中级会员

Rank: 3Rank: 3

积分
309
发表于 2007-4-29 16:16:00 | 显示全部楼层

Re:dx中如何判断物体的遮挡关系?

乘上视矩阵,判断z值就ok了,一般用包围盒就够了

16

主题

114

帖子

114

积分

注册会员

Rank: 2

积分
114
 楼主| 发表于 2007-4-29 19:49:00 | 显示全部楼层

Re:dx中如何判断物体的遮挡关系?

"乘上视矩阵,判断z值就ok了,"
为什么,这跟在世界坐标中判断有什么不同,同样无法解决问题。(比如太阳的z值  > 山,但太阳在山上面,我们仍然可以看到太阳);

1

主题

51

帖子

51

积分

注册会员

Rank: 2

积分
51
发表于 2007-4-29 21:32:00 | 显示全部楼层

Re:dx中如何判断物体的遮挡关系?

使用遮挡查询,参考《游戏编程精粹》 好象是2

106

主题

743

帖子

745

积分

高级会员

Rank: 4

积分
745
QQ
发表于 2007-4-30 22:15:00 | 显示全部楼层

Re:dx中如何判断物体的遮挡关系?

请问:怎样使用遮挡查询?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-26 15:44

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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