请选择 进入手机版 | 继续访问电脑版

开源计算机图形学社区(Open Source Computer Graphics Community) |OpenGPU Forum (2007-2013)| OpenGPU Project

 找回密码
 注册
搜索
查看: 1037|回复: 0

大神们帮帮忙,DX9如何保存深度图? [复制链接]

Rank: 12Rank: 12Rank: 12

注册时间
2017-2-6
积分
964
发表于 2017-2-8 09:38:10 |显示全部楼层
    我首先建立了深度surface,format为D3DFMT_D16_LOCKABLE,这种format可以进行lock,之后对表面内存进行读取,则可以将数据保存到dds文件中。

    但是,当format不为D3DFMT_D16_LOCKABLE时,因为不能进行lock也就无法使用上述的方法。请问有什么方法吗?

    现在我想这样做:
        首先,
             IDirect3DSurface9 *pSurfaceTemp=NULL;
             hr = pDevice->CreateOffscreenPlainSurface(texDesc.Width,texDesc.Height,D3DFMT_D16_LOCKABLE,
                                                                                 D3DPOOL_DEFAULT,&pSurfaceTemp,NULL);
             但是除了设置为D3DPOOL_SCRATCH外,都返回D3DERR_INVALIDCALL,为什么会这样呢?
        其次,如果上述成功了,则利用UpdateSurface:
              hr = pDevice->UpdateSurface(pCopySurface,NULL,pSurfaceTemp,NULL);
              将其他深度格式的pCopySurface,复制给D3DFMT_D16_LOCKABLE格式的pSurfaceTemp,接下来进行lock等等。
        不知道我应该怎么做才可以,请大神帮忙!!


         

最近看过此主题的会员

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

‹‹
我的工具栏

关于我们|手机版|Archiver|开源计算机图形学社区(Open Source Computer Graphics Community) | OpenGPU Project | OpenGPU Forum (2007-2013)

GMT+8, 2017-11-20 01:57 , Processed in 0.081397 second(s), 11 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部