中文第一计算机图形学社区OpenGPU 版权所有2007-2018

 找回密码
 注册

扫一扫,访问微社区

搜索
查看: 1167|回复: 0

大神们帮帮忙,DX9如何保存深度图?

[复制链接]
发表于 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|手机版|中文第一计算机图形学社区OpenGPU

GMT+8, 2018-4-19 19:53 , Processed in 0.039715 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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