游戏开发论坛

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

一个简单的问题:如何用 DirectX 截取屏幕上显示的图象内容?

[复制链接]

1

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2005-9-5 11:35:00 | 显示全部楼层 |阅读模式
我想用DirectX截取屏幕上显示的图象内容,即截取一个全屏并保存成BMP图象.现在遇到的问题是截取的时候如果有正在播放的视频窗口,播放器中正在播放的视频是黑的,截取不到其内容.
我用的是 DXSDK 9.0b ,方法是采用 CreateOffscreenPlainSurface 函数创建一个离屏表面,然后通过 GetFrontBufferData 函数取得表面的内容,最后用 D3DXSaveSurfaceToFile 保存到BMP文件.大家帮个忙,是不是我的方法不对,还有什么别的方法么.并且,我想提高截取的速度,有没有什么其他更好的方法?谢谢大家!

0

主题

7

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2005-9-5 15:42:00 | 显示全部楼层

Re:一个简单的问题:如何用 DirectX 截取屏幕上显示的图象

forntbuffer 不行, 你得从back buffer 内取才行!

85

主题

824

帖子

878

积分

高级会员

Rank: 4

积分
878
QQ
发表于 2005-9-5 23:51:00 | 显示全部楼层

Re:一个简单的问题:如何用 DirectX 截取屏幕上显示的图象

用GetRenderTarget,然后直接D3DXSaveSurfaceToFile就可以了

85

主题

824

帖子

878

积分

高级会员

Rank: 4

积分
878
QQ
发表于 2005-9-5 23:53:00 | 显示全部楼层

Re:一个简单的问题:如何用 DirectX 截取屏幕上显示的图象

有空多看看dxsdk的文档吧

20

主题

473

帖子

502

积分

高级会员

Rank: 4

积分
502
发表于 2005-9-6 10:35:00 | 显示全部楼层

Re:一个简单的问题:如何用 DirectX 截取屏幕上显示的图象

如果是播放视频的话, 在硬件允许的情况下, 会建立overlay surface
这种surface 不会被写入framebufferr,所以你去抓framebuffer当然是黑色的
一个简单的解决方案就是关掉视频回放的overlay加速
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-27 16:55

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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