游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1788|回复: 4

关于z-buffer的问题

[复制链接]

46

主题

238

帖子

238

积分

中级会员

Rank: 3Rank: 3

积分
238
发表于 2005-3-23 09:59:00 | 显示全部楼层 |阅读模式
请问 在DX9中如何lock到z-buffer,我是:
LPDIRECT3DSURFACE9 g_pSDepth = NULL;
g_pd3dDevice->CreateDepthStencilSurface(         800,    600,    D3DFMT_D16,    D3DMULTISAMPLE_NONE,
    0,    TRUE,    & g_pSDepth,    NULL);
g_pd3dDevice->SetDepthStencilSurface(   g_pSDepth);

渲染一次场景后

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

但是调试发现g_pSDepth-> LockRect(&LockedRect,  NULL,0);一直失败,LockedRect一直为空。不只是为什么,是什么参数还要设吗?

请大侠们帮忙看一下。oTZ [em4] [em4] [em4]

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2005-3-23 10:10:00 | 显示全部楼层

Re:关于z-buffer的问题

创建DepthStencilSurface的时候,必须要用D3DFMT_D16_LOCKABLE,而不是D3DFMT_D16

46

主题

238

帖子

238

积分

中级会员

Rank: 3Rank: 3

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

Re:关于z-buffer的问题

我用D3DFMT_D16_LOCKABLE还是不行啊,我g_pd3dDevice->SetDepthStencilSurface(   g_pSDepth);后得到的g_pSDepth还是空的,请问我最上面贴出来的用法对吗? SetDepthStencilSurface是应该在渲染场景之前设置吧,它到底作用是什么呢 ,还有个GetDepthStencilSurface是用来做什么的 他们两有什么联系啊?

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2005-3-23 14:53:00 | 显示全部楼层

Re:关于z-buffer的问题

你要set的话,必须跟你正在使用的depth stencil buffer的格式一样。
其实如果你想读zstencil数据的话,直接使用GetDepthStencilSurface就好了。。
这个API只需要传一个空指针进去,就会返回zstencil surface,不过用完以后记得要release.

46

主题

238

帖子

238

积分

中级会员

Rank: 3Rank: 3

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

Re:关于z-buffer的问题

哦 谢谢老大们的指点:)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-24 23:15

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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