游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3067|回复: 1

如何获得D3D9开发的三维动画的屏幕数据(即屏幕截图),

[复制链接]

2

主题

3

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2003-12-16 18:31:00 | 显示全部楼层 |阅读模式
我想获得D3D9开发的三维动画的屏幕数据(即屏幕截图),希望获得前台或者后台缓冲区的屏幕数据得到图像的颜色值矩阵,我自己做一个但无法获取。希望指点:
(1)  
LPDIRECT3DDEVICE9 m_pDevice;
   IDirect3DSurface9 *surface=NULL;
  m_pDevice->CreateOffscreenPlainSurface(  400,300,D3DFMT_A8R8G8B8,D3DPOOL_DEFAULT,&surface,NULL);  
    HRESULT hr=m_pDevice->GetFrontBufferData(0,surface);
    char*  file_name = "d:\\pic.bmp";
    D3DXSaveSurfaceToFile(file_name,D3DXIFF_BMP,surface,NULL,NULL);
    surface->Release();
(1)生成的图像没有获取到屏幕图像

或者:(2)
         IDirect3DSurface9 *surface=NULL;
         D3DSURFACE_DESC  surfaceDesc;
         D3DLOCKED_RECT lockedRect;
         surface->GetDesc(&surfaceDesc);
        surface->LockRect(&lockedRect,0,0);
        DWORD *imageData = (DWORD*)lockedRect.pBits;
         DWORD   clor[400][300];
        for(UINT i=0;i < surfaceDesc.Height;i++)
                for(UINT j=0;j < surfaceDesc.Width;j++)
                {
                        int index = i*lockedRect.Pitch/4+j;
                        clor[j]=imageData[index];
                }
                surface->UnlockRect();
                surface->Release()
(2)在调试时surface->GetDesc(&surfaceDesc);没有获取值,程序出错,希望指教。

37

主题

378

帖子

388

积分

中级会员

Rank: 3Rank: 3

积分
388
QQ
发表于 2003-12-16 20:59:00 | 显示全部楼层

Re:如何获得D3D9开发的三维动画的屏幕数据(即屏幕截图

看你干什么了,要是截个图,看哪方面有BUG,你就直接Alt+PrintScreen
然后在画图程序里粘贴就得了……
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-2-24 15:27

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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